diff --git a/Docker/Dockerfile b/Docker/Dockerfile index ba606a49..36c31c4d 100644 --- a/Docker/Dockerfile +++ b/Docker/Dockerfile @@ -7,7 +7,7 @@ ARG swift_version ARG ubuntu_version # set as UTF-8 -RUN apt-get update && apt-get install -y locales locales-all libsqlite3-dev +RUN apt-get update && apt-get install -y locales locales-all libsqlite3-dev podman ENV LC_ALL en_US.UTF-8 ENV LANG en_US.UTF-8 ENV LANGUAGE en_US.UTF-8 diff --git a/Docker/docker-compose.yaml b/Docker/docker-compose.yaml index 3db9408e..0c8c0da0 100644 --- a/Docker/docker-compose.yaml +++ b/Docker/docker-compose.yaml @@ -25,9 +25,11 @@ services: test: <<: *common + privileged: true environment: - JENKINS_URL - command: /bin/bash -xcl "swift test $${WARN_AS_ERROR_ARG-} $${SANITIZER_ARG-} $${IMPORT_CHECK_ARG-}" + - SWIFT_SDK_GENERATOR_CONTAINER_RUNTIME=podman + command: /bin/bash -xcl "swift test $${WARN_AS_ERROR_ARG-} $${SANITIZER_ARG-} $${IMPORT_CHECK_ARG-} --filter Swift59_UbuntuEndToEndTests.testX86_64FromContainer" # util diff --git a/Tests/SwiftSDKGeneratorTests/EndToEndTests.swift b/Tests/SwiftSDKGeneratorTests/EndToEndTests.swift index ffbfc26d..8fde90e5 100644 --- a/Tests/SwiftSDKGeneratorTests/EndToEndTests.swift +++ b/Tests/SwiftSDKGeneratorTests/EndToEndTests.swift @@ -115,18 +115,18 @@ final class RepeatedBuildTests: XCTestCase { private let logger = Logger(label: "swift-sdk-generator") func testRepeatedSDKBuilds() async throws { - if ProcessInfo.processInfo.environment.keys.contains("JENKINS_URL") { - throw XCTSkip("EndToEnd tests cannot currently run in CI: https://github.com/swiftlang/swift-sdk-generator/issues/145") - } +// if ProcessInfo.processInfo.environment.keys.contains("JENKINS_URL") { +// throw XCTSkip("EndToEnd tests cannot currently run in CI: https://github.com/swiftlang/swift-sdk-generator/issues/145") +// } var logger = logger logger[metadataKey: "testcase"] = "testRepeatedSDKBuilds" // Test that an existing SDK can be rebuilt without cleaning up. // Test with no arguments by default: - var possibleArguments = ["--host-toolchain"] + var possibleArguments = ["--no-host-toolchain"] do { - try await Shell.run("docker ps") + try await Shell.run("podman ps") possibleArguments.append("--with-docker --linux-distribution-name rhel --linux-distribution-version ubi9") } catch { self.logger.warning("Docker CLI does not seem to be working, skipping tests that involve Docker.") @@ -176,7 +176,7 @@ struct SDKConfiguration { var sdkGeneratorArguments: String { return [ "--sdk-name \(bundleName)", - "--host-toolchain", + "--no-host-toolchain", withDocker ? "--with-docker" : nil, "--swift-version \(swiftVersion)-RELEASE", testLinuxSwiftSDKs ? "--host \(hostArch!)-unknown-linux-gnu" : nil, @@ -231,7 +231,7 @@ func buildTestcase(_ logger: Logger, testcase: String, bundleName: String, tempD logger.info("Building test project in 6.0-\(containerVersion) container") buildOutput = try await Shell.readStdout( """ - docker run --rm -v \(testPackageDir):/src \ + podman run --rm -v \(testPackageDir):/src \ -v $HOME/.swiftpm/swift-sdks:/root/.swiftpm/swift-sdks \ --workdir /src swift:6.0-\(containerVersion) \ /bin/bash -c "swift build --scratch-path /root/.build --experimental-swift-sdk \(bundleName)" @@ -243,7 +243,7 @@ func buildTestcase(_ logger: Logger, testcase: String, bundleName: String, tempD logger.info("Building test project in 6.0-\(containerVersion) container with static-swift-stdlib") buildOutput = try await Shell.readStdout( """ - docker run --rm -v \(testPackageDir):/src \ + podman run --rm -v \(testPackageDir):/src \ -v $HOME/.swiftpm/swift-sdks:/root/.swiftpm/swift-sdks \ --workdir /src swift:6.0-\(containerVersion) \ /bin/bash -c "swift build --scratch-path /root/.build --experimental-swift-sdk \(bundleName) --static-swift-stdlib" @@ -275,13 +275,13 @@ func buildTestcases(config: SDKConfiguration) async throws { var logger = Logger(label: "EndToEndTests") logger[metadataKey: "testcase"] = "testPackageInitExecutable" - if ProcessInfo.processInfo.environment.keys.contains("JENKINS_URL") { - throw XCTSkip("EndToEnd tests cannot currently run in CI: https://github.com/swiftlang/swift-sdk-generator/issues/145") - } +// if ProcessInfo.processInfo.environment.keys.contains("JENKINS_URL") { +// throw XCTSkip("EndToEnd tests cannot currently run in CI: https://github.com/swiftlang/swift-sdk-generator/issues/145") +// } if config.withDocker { do { - try await Shell.run("docker ps") + try await Shell.run("podman ps") } catch { throw XCTSkip("Container runtime is not available - skipping tests which require it") } @@ -323,12 +323,10 @@ final class Swift59_UbuntuEndToEndTests: XCTestCase { } func testAarch64FromContainer() async throws { - try skipSlow() try await buildTestcases(config: config.withArchitecture("aarch64").withDocker()) } func testX86_64FromContainer() async throws { - try skipSlow() try await buildTestcases(config: config.withArchitecture("x86_64").withDocker()) } }