func execute()

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)")
        }
    }