Skip to content

Commit

Permalink
Merge pull request #2869 from jmpargana/replace-os-mkdir-with-t-tempdir
Browse files Browse the repository at this point in the history
refactor: replace os.MkdirTemp with t.TempDir with cleanup
  • Loading branch information
AkihiroSuda committed Mar 12, 2024
2 parents a12dfa1 + 0ec5c7e commit 9ce158b
Show file tree
Hide file tree
Showing 10 changed files with 41 additions and 128 deletions.
83 changes: 22 additions & 61 deletions cmd/nerdctl/builder_build_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,7 @@ func TestBuild(t *testing.T) {
CMD ["echo", "nerdctl-build-test-string"]
`, testutil.CommonImage)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", "-t", imageName, buildCtx).AssertOK()
base.Cmd("build", buildCtx, "-t", imageName).AssertOK()
Expand Down Expand Up @@ -69,9 +67,7 @@ func TestBuildIsShareableForCompatiblePlatform(t *testing.T) {
CMD ["echo", "nerdctl-build-test-string"]
`, testutil.CommonImage)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", buildCtx, "-t", imageName).AssertErrNotContains("tarball")

Expand All @@ -86,7 +82,6 @@ CMD ["echo", "nerdctl-build-test-string"]
base.Cmd("build", buildCtx, "-t", imageName, "--platform", notCompatiblePlatformConfig).AssertOK()
base.Cmd("build", buildCtx, "-t", imageName, "--platform", notCompatiblePlatformConfig, "--progress", "plain").AssertErrContains("tarball")
}

}

// TestBuildBaseImage tests if an image can be built on the previously built image.
Expand All @@ -105,9 +100,7 @@ RUN echo hello > /hello
CMD ["echo", "nerdctl-build-test-string"]
`, testutil.CommonImage)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", "-t", imageName, buildCtx).AssertOK()
base.Cmd("build", buildCtx, "-t", imageName).AssertOK()
Expand All @@ -117,9 +110,7 @@ RUN echo hello2 > /hello2
CMD ["cat", "/hello2"]
`, imageName)

buildCtx2, err := createBuildContext(dockerfile2)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx2)
buildCtx2 := createBuildContext(t, dockerfile2)

base.Cmd("build", "-t", imageName2, buildCtx2).AssertOK()
base.Cmd("build", buildCtx2, "-t", imageName2).AssertOK()
Expand Down Expand Up @@ -152,9 +143,7 @@ RUN echo hello2 > /hello2
CMD ["cat", "/hello2"]
`, imageName)

buildCtx2, err := createBuildContext(dockerfile2)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx2)
buildCtx2 := createBuildContext(t, dockerfile2)

base.Cmd("build", "-t", imageName2, buildCtx2).AssertOK()
base.Cmd("build", buildCtx2, "-t", imageName2).AssertOK()
Expand Down Expand Up @@ -225,9 +214,7 @@ func TestBuildLocal(t *testing.T) {
COPY %s /`,
testFileName)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

if err := os.WriteFile(filepath.Join(buildCtx, testFileName), []byte(testContent), 0644); err != nil {
t.Fatal(err)
Expand All @@ -253,15 +240,11 @@ COPY %s /`,
assert.Equal(t, string(data), testContent)
}

func createBuildContext(dockerfile string) (string, error) {
tmpDir, err := os.MkdirTemp("", "nerdctl-build-test")
if err != nil {
return "", err
}
if err = os.WriteFile(filepath.Join(tmpDir, "Dockerfile"), []byte(dockerfile), 0644); err != nil {
return "", err
}
return tmpDir, nil
func createBuildContext(t *testing.T, dockerfile string) string {
tmpDir := t.TempDir()
err := os.WriteFile(filepath.Join(tmpDir, "Dockerfile"), []byte(dockerfile), 0644)
assert.NilError(t, err)
return tmpDir
}

func TestBuildWithBuildArg(t *testing.T) {
Expand All @@ -277,9 +260,7 @@ ENV TEST_STRING=$TEST_STRING
CMD echo $TEST_STRING
`, testutil.CommonImage)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", buildCtx, "-t", imageName).AssertOK()
base.Cmd("run", "--rm", imageName).AssertOutExactly("1\n")
Expand Down Expand Up @@ -324,9 +305,7 @@ func TestBuildWithIIDFile(t *testing.T) {
CMD ["echo", "nerdctl-build-test-string"]
`, testutil.CommonImage)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)
fileName := filepath.Join(t.TempDir(), "id.txt")

base.Cmd("build", "-t", imageName, buildCtx, "--iidfile", fileName).AssertOK()
Expand All @@ -350,9 +329,7 @@ func TestBuildWithLabels(t *testing.T) {
LABEL name=nerdctl-build-test-label
`, testutil.CommonImage)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", "-t", imageName, buildCtx, "--label", "label=test").AssertOK()
defer base.Cmd("rmi", imageName).Run()
Expand All @@ -375,9 +352,7 @@ func TestBuildMultipleTags(t *testing.T) {
dockerfile := fmt.Sprintf(`FROM %s
CMD ["echo", "%s"]
`, testutil.CommonImage, output)
buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", "-t", img, buildCtx).AssertOK()
base.Cmd("build", buildCtx, "-t", img, "-t", imgWithNoTag, "-t", imgWithCustomTag).AssertOK()
Expand Down Expand Up @@ -430,9 +405,7 @@ CMD ["echo", "dockerfile"]
err = os.WriteFile(filepath.Join(tmpDir, "Containerfile"), []byte(containerfile), 0644)
assert.NilError(t, err)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", "-t", imageName, buildCtx).AssertOK()
base.Cmd("run", "--rm", imageName).AssertOutExactly("dockerfile\n")
Expand All @@ -447,9 +420,7 @@ func TestBuildNoTag(t *testing.T) {
dockerfile := fmt.Sprintf(`FROM %s
CMD ["echo", "nerdctl-build-notag-string"]
`, testutil.CommonImage)
buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", buildCtx).AssertOK()
base.Cmd("images").AssertOutContains("<none>")
Expand All @@ -464,9 +435,7 @@ func TestBuildContextDockerImageAlias(t *testing.T) {

dockerfile := `FROM myorg/myapp
CMD ["echo", "nerdctl-build-myorg/myapp"]`
buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", buildCtx, fmt.Sprintf("--build-context=myorg/myapp=docker-image://%s", testutil.CommonImage)).AssertOK()
base.Cmd("images").AssertOutContains("<none>")
Expand All @@ -491,9 +460,7 @@ func TestBuildContextWithCopyFromDir(t *testing.T) {
COPY --from=dir2 /%s /hello_from_dir2.txt
RUN ["cat", "/hello_from_dir2.txt"]`, testutil.CommonImage, filename)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", buildCtx, fmt.Sprintf("--build-context=dir2=%s", dir2)).AssertOK()
base.Cmd("images").AssertOutContains("<none>")
Expand All @@ -515,9 +482,7 @@ RUN echo $SOURCE_DATE_EPOCH >/source-date-epoch
CMD ["cat", "/source-date-epoch"]
`, testutil.CommonImage)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

const sourceDateEpochEnvStr = "1111111111"
t.Setenv("SOURCE_DATE_EPOCH", sourceDateEpochEnvStr)
Expand All @@ -538,9 +503,7 @@ func TestBuildNetwork(t *testing.T) {
RUN apk add --no-cache curl
RUN curl -I http://google.com
`, testutil.CommonImage)
buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

validCases := []struct {
name string
Expand Down Expand Up @@ -597,9 +560,7 @@ func TestBuildAttestation(t *testing.T) {
defer base.Cmd("builder", "prune").Run()

dockerfile := "FROM " + testutil.NginxAlpineImage
buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

// Test sbom
outputSBOMDir := t.TempDir()
Expand Down
6 changes: 1 addition & 5 deletions cmd/nerdctl/builder_linux_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,9 @@ package main
import (
"bytes"
"fmt"
"os"
"testing"

"github.com/containerd/nerdctl/v2/pkg/testutil"
"gotest.tools/v3/assert"
)

func TestBuilderDebug(t *testing.T) {
Expand All @@ -34,9 +32,7 @@ func TestBuilderDebug(t *testing.T) {
CMD ["echo", "nerdctl-builder-debug-test-string"]
`, testutil.CommonImage)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("builder", "debug", buildCtx).CmdOption(testutil.WithStdin(bytes.NewReader([]byte("c\n")))).AssertOK()
}
20 changes: 5 additions & 15 deletions cmd/nerdctl/container_run_mount_linux_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,9 +122,7 @@ func TestRunAnonymousVolumeWithBuild(t *testing.T) {
VOLUME /foo
`, testutil.AlpineImage)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", "-t", imageName, buildCtx).AssertOK()
base.Cmd("run", "--rm", "-v", "/foo", testutil.AlpineImage,
Expand All @@ -146,9 +144,7 @@ RUN mkdir -p /mnt && echo hi > /mnt/initial_file
CMD ["cat", "/mnt/initial_file"]
`, testutil.AlpineImage)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", "-t", imageName, buildCtx).AssertOK()

Expand Down Expand Up @@ -176,9 +172,7 @@ VOLUME /mnt
CMD ["cat", "/mnt/initial_file"]
`, testutil.AlpineImage)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", "-t", imageName, buildCtx).AssertOK()
//AnonymousVolume
Expand Down Expand Up @@ -211,9 +205,7 @@ CMD ["readlink", "/mnt/passwd"]
`, testutil.AlpineImage)
const expected = "../../../../../../../../../../../../../../../../../../etc/passwd\n"

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", "-t", imageName, buildCtx).AssertOK()

Expand All @@ -240,9 +232,7 @@ func TestRunCopyingUpInitialContentsShouldNotResetTheCopiedContents(t *testing.T
RUN echo -n "rev0" > /mnt/file
`, testutil.AlpineImage)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", "-t", imageName, buildCtx).AssertOK()

Expand Down
8 changes: 2 additions & 6 deletions cmd/nerdctl/container_run_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,7 @@ ENTRYPOINT ["echo", "foo"]
CMD ["echo", "bar"]
`, testutil.CommonImage)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", "-t", imageName, buildCtx).AssertOK()
base.Cmd("run", "--rm", imageName).AssertOutExactly("foo echo bar\n")
Expand Down Expand Up @@ -428,9 +426,7 @@ FROM scratch
COPY --from=builder /go/src/logger/logger /
`

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)
tmpDir := t.TempDir()
base.Cmd("build", buildCtx, "--output", fmt.Sprintf("type=local,src=/go/src/logger/logger,dest=%s", tmpDir)).AssertOK()
defer base.Cmd("image", "rm", "-f", imageName).AssertOK()
Expand Down
6 changes: 1 addition & 5 deletions cmd/nerdctl/container_run_verify_linux_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,10 @@ package main

import (
"fmt"
"os"
"testing"

"github.com/containerd/nerdctl/v2/pkg/testutil"
"github.com/containerd/nerdctl/v2/pkg/testutil/testregistry"
"gotest.tools/v3/assert"
)

func TestRunVerifyCosign(t *testing.T) {
Expand All @@ -48,9 +46,7 @@ func TestRunVerifyCosign(t *testing.T) {
CMD ["echo", "nerdctl-build-test-string"]
`, testutil.CommonImage)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)

base.Cmd("build", "-t", testImageRef, buildCtx).AssertOK()
base.Cmd("push", testImageRef, "--sign=cosign", "--cosign-key="+keyPair.privateKey).AssertOK()
Expand Down
9 changes: 2 additions & 7 deletions cmd/nerdctl/image_list_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ package main

import (
"fmt"
"os"
"strings"
"testing"

Expand Down Expand Up @@ -88,9 +87,7 @@ CMD ["echo", "nerdctl-build-test-string"] \n
LABEL foo=bar
LABEL version=0.1`, testutil.CommonImage)

buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
defer os.RemoveAll(buildCtx)
buildCtx := createBuildContext(t, dockerfile)
base.Cmd("build", "-t", tempName, "-f", buildCtx+"/Dockerfile", buildCtx).AssertOK()
defer base.Cmd("rmi", tempName).AssertOK()

Expand Down Expand Up @@ -128,10 +125,8 @@ func TestImagesFilterDangling(t *testing.T) {
dockerfile := fmt.Sprintf(`FROM %s
CMD ["echo", "nerdctl-build-notag-string"]
`, testutil.CommonImage)
buildCtx, err := createBuildContext(dockerfile)
assert.NilError(t, err)
buildCtx := createBuildContext(t, dockerfile)

defer os.RemoveAll(buildCtx)
base.Cmd("build", "-f", buildCtx+"/Dockerfile", buildCtx).AssertOK()

// dangling image test
Expand Down
Loading

0 comments on commit 9ce158b

Please sign in to comment.