in Sources/PackageRegistryCompatibilityTestSuite/Commands.swift [600:669]
func execute() async throws {
if !self.isExecuting.compareExchange(expected: false, desired: true, ordering: .acquiring).exchanged {
throw TestError("Test plan is being executed")
}
var summaries = [String]()
for step in self.steps {
print("")
print("------------------------------------------------------------")
print(step.test.label)
print("------------------------------------------------------------")
print(" - Package registry URL: \(self.registryURL)")
print(" - API version: \(self.apiVersion)")
print("")
let testLog: TestLog
switch step.test {
case .createPackageRelease(let configuration):
testLog = await PackageRegistryCompatibilityTestSuite.runCreatePackageRelease(registryURL: self.registryURL,
authToken: self.authToken,
apiVersion: self.apiVersion,
configuration: configuration,
httpClient: self.httpClient)
case .listPackageReleases(let configuration):
testLog = await PackageRegistryCompatibilityTestSuite.runListPackageReleases(registryURL: self.registryURL,
authToken: self.authToken,
apiVersion: self.apiVersion,
configuration: configuration,
httpClient: self.httpClient)
case .fetchPackageReleaseInfo(let configuration):
testLog = await PackageRegistryCompatibilityTestSuite.runFetchPackageReleaseInfo(registryURL: self.registryURL,
authToken: self.authToken,
apiVersion: self.apiVersion,
configuration: configuration,
httpClient: self.httpClient)
case .fetchPackageReleaseManifest(let configuration):
testLog = await PackageRegistryCompatibilityTestSuite.runFetchPackageReleaseManifest(registryURL: self.registryURL,
authToken: self.authToken,
apiVersion: self.apiVersion,
configuration: configuration,
httpClient: self.httpClient)
case .downloadSourceArchive(let configuration):
testLog = await PackageRegistryCompatibilityTestSuite.runDownloadSourceArchive(registryURL: self.registryURL,
authToken: self.authToken,
apiVersion: self.apiVersion,
configuration: configuration,
httpClient: self.httpClient)
case .lookupPackageIdentifiers(let configuration):
testLog = await PackageRegistryCompatibilityTestSuite.runLookupPackageIdentifiers(registryURL: self.registryURL,
authToken: self.authToken,
apiVersion: self.apiVersion,
configuration: configuration,
httpClient: self.httpClient)
}
summaries.append(testLog.summary)
if step.required, !testLog.failures.isEmpty {
print("Stopping tests because the required step \"\(step.test.label)\" has failed: \(testLog.summary)")
break
}
}
print("")
print("Test summary:")
self.steps.enumerated().forEach { index, step in
let summary = index < summaries.count ? summaries[index] : "did not run"
print("\(step.test.label) - \(summary)")
}
}