-
Notifications
You must be signed in to change notification settings - Fork 626
Commit
Signed-off-by: Austin Vazquez <[email protected]>
- Loading branch information
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
/* | ||
Copyright The containerd Authors. | ||
Licensed under the Apache License, Version 2.0 (the "License"); | ||
you may not use this file except in compliance with the License. | ||
You may obtain a copy of the License at | ||
http://www.apache.org/licenses/LICENSE-2.0 | ||
Unless required by applicable law or agreed to in writing, software | ||
distributed under the License is distributed on an "AS IS" BASIS, | ||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
See the License for the specific language governing permissions and | ||
limitations under the License. | ||
*/ | ||
|
||
package main | ||
|
||
import ( | ||
"fmt" | ||
"testing" | ||
|
||
"gotest.tools/v3/assert" | ||
|
||
"github.com/containerd/nerdctl/v2/pkg/testutil" | ||
) | ||
|
||
func TestBuildContextWithOCILayout(t *testing.T) { | ||
testutil.RequiresBuild(t) | ||
testutil.RegisterBuildCacheCleanup(t) | ||
|
||
base := testutil.NewBase(t) | ||
imageName := testutil.Identifier(t) | ||
ociLayout := "parent" | ||
parentImageName := fmt.Sprintf("%s-%s", imageName, ociLayout) | ||
|
||
teardown := func() { | ||
base.Cmd("rmi", parentImageName, imageName).Run() | ||
} | ||
t.Cleanup(teardown) | ||
teardown() | ||
|
||
dockerfile := fmt.Sprintf(`FROM %s | ||
LABEL layer=oci-layout-parent | ||
CMD ["echo", "test-nerdctl-build-context-oci-layout-parent"]`, testutil.CommonImage) | ||
buildCtx := createBuildContext(t, dockerfile) | ||
|
||
ociLayout := "parent" | ||
Check failure on line 48 in cmd/nerdctl/builder_build_linux_test.go GitHub Actions / lint
Check failure on line 48 in cmd/nerdctl/builder_build_linux_test.go GitHub Actions / lint
Check failure on line 48 in cmd/nerdctl/builder_build_linux_test.go GitHub Actions / test-integration-docker-compatibility
|
||
tarPath := fmt.Sprintf("%s/%s.tar", buildCtx, ociLayout) | ||
|
||
// Create OCI archive from parent image. | ||
base.Cmd("build", buildCtx, "--tag", parentImageName).AssertOK() | ||
base.Cmd("image", "save", "--output", tarPath, parentImageName).AssertOK() | ||
|
||
// Unpack OCI archive into OCI layout directory. | ||
ociLayoutDir := t.TempDir() | ||
err := extractTarFile(ociLayoutDir, tarPath) | ||
assert.NilError(t, err) | ||
|
||
dockerfile = fmt.Sprintf(`FROM %s | ||
CMD ["echo", "test-nerdctl-build-context-oci-layout"]`, ociLayout) | ||
buildCtx = createBuildContext(t, dockerfile) | ||
|
||
base.Cmd("build", buildCtx, fmt.Sprintf("--build-context=%s=oci-layout://%s", ociLayout, ociLayoutPath), "--tag", imageName).AssertOK() | ||
Check failure on line 64 in cmd/nerdctl/builder_build_linux_test.go GitHub Actions / lint
Check failure on line 64 in cmd/nerdctl/builder_build_linux_test.go GitHub Actions / lint
Check failure on line 64 in cmd/nerdctl/builder_build_linux_test.go GitHub Actions / test-integration-docker-compatibility
|
||
base.Cmd("run", "--rm", imageName).AssertOutContains("test-nerdctl-build-context-oci-layout") | ||
} |