From b2e7cb5e876e622325678967a079ff37593fe5b9 Mon Sep 17 00:00:00 2001 From: Kathryn Baldauf Date: Wed, 16 Jul 2025 14:35:29 -0700 Subject: [PATCH] Add test for using previous stages as FROM source (#342) Depends on https://github.com/apple/container-builder-shim/pull/38 and a new builder image tag Related to https://github.com/apple/container/issues/334 Signed-off-by: Kathryn Baldauf --- Package.swift | 2 +- .../Subcommands/Build/CLIBuilderTest.swift | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index 205affc3..585e9802 100644 --- a/Package.swift +++ b/Package.swift @@ -23,7 +23,7 @@ import PackageDescription let releaseVersion = ProcessInfo.processInfo.environment["RELEASE_VERSION"] ?? "0.0.0" let gitCommit = ProcessInfo.processInfo.environment["GIT_COMMIT"] ?? "unspecified" let scVersion = "0.4.1" -let builderShimVersion = "0.3.0" +let builderShimVersion = "0.4.0" let package = Package( name: "container", diff --git a/Tests/CLITests/Subcommands/Build/CLIBuilderTest.swift b/Tests/CLITests/Subcommands/Build/CLIBuilderTest.swift index 8ddcea0c..7101e0d4 100644 --- a/Tests/CLITests/Subcommands/Build/CLIBuilderTest.swift +++ b/Tests/CLITests/Subcommands/Build/CLIBuilderTest.swift @@ -47,6 +47,23 @@ extension TestCLIBuildBase { #expect(try self.inspectImage(imageName) == imageName, "expected to have successfully built \(imageName)") } + @Test func testBuildFromPreviousStage() throws { + let tempDir: URL = try createTempDir() + let dockerfile = + """ + FROM ghcr.io/linuxcontainers/alpine:3.20 AS layer1 + RUN sh -c "echo 'layer1' > /layer1.txt" + + FROM layer1 + CMD ["cat", "/layer1.txt"] + """ + + try createContext(tempDir: tempDir, dockerfile: dockerfile) + let imageName = "registry.local/from-previous-layer:\(UUID().uuidString)" + try self.build(tag: imageName, tempDir: tempDir) + #expect(try self.inspectImage(imageName) == imageName, "expected to have successfully build \(imageName)") + } + @Test func testBuildFromLocalImage() throws { let tempDir: URL = try createTempDir() let dockerfile: String =