From 18ec2761c0bccdfe6d125efdabd5aeb5df52b0be Mon Sep 17 00:00:00 2001 From: Eng Zer Jun Date: Tue, 15 Mar 2022 11:41:08 +0800 Subject: [PATCH] test: use `T.TempDir` to create temporary test directory The directory created by `T.TempDir` is automatically removed when the test and all its subtests complete. Reference: https://pkg.go.dev/testing#T.TempDir Signed-off-by: Eng Zer Jun --- archive/compression/compression_test.go | 7 +- archive/issues_test.go | 6 +- archive/tar_linux_test.go | 12 +-- archive/tar_test.go | 77 +++++-------------- cio/io_test.go | 4 +- cio/io_unix_test.go | 8 +- content/local/store_test.go | 27 +------ integration/addition_gids_test.go | 4 +- .../client/container_checkpoint_test.go | 6 +- .../client/daemon_config_linux_test.go | 10 +-- integration/client/restart_monitor_test.go | 16 +--- integration/container_log_test.go | 8 +- integration/container_volume_test.go | 9 +-- integration/image_load_test.go | 7 +- integration/pod_dualstack_test.go | 4 +- integration/pod_hostname_test.go | 4 +- integration/shim_dial_unix_test.go | 5 +- metadata/containers_test.go | 10 +-- metadata/db_test.go | 17 +--- metadata/gc_test.go | 16 ++-- mount/fmountat_linux_test.go | 6 +- mount/lookup_linux_test.go | 33 ++------ mount/mount_linux_test.go | 10 +-- pkg/cri/server/helpers_linux_test.go | 12 +-- pkg/cri/server/helpers_test.go | 5 +- pkg/cri/server/update_runtime_config_test.go | 6 +- pkg/cri/store/container/status_test.go | 4 +- remotes/docker/config/hosts_test.go | 6 +- runtime/v1/linux/bundle_test.go | 4 +- runtime/v2/bundle_linux_test.go | 4 +- services/server/config/config_test.go | 38 +++------ snapshots/btrfs/btrfs_test.go | 12 +-- snapshots/devmapper/dmsetup/dmsetup_test.go | 12 +-- snapshots/devmapper/metadata_test.go | 51 ++++++------ snapshots/devmapper/pool_device_test.go | 12 +-- snapshots/devmapper/snapshotter_test.go | 18 +---- snapshots/overlay/overlay_test.go | 30 ++------ snapshots/overlay/overlayutils/check_test.go | 7 +- snapshots/storage/metastore_bench_test.go | 26 ++----- snapshots/storage/metastore_test.go | 12 ++- 40 files changed, 137 insertions(+), 428 deletions(-) diff --git a/archive/compression/compression_test.go b/archive/compression/compression_test.go index b6f7fbe4b..a5e48835c 100644 --- a/archive/compression/compression_test.go +++ b/archive/compression/compression_test.go @@ -122,10 +122,7 @@ func TestCompressDecompressUncompressed(t *testing.T) { func TestDetectPigz(t *testing.T) { // Create fake PATH with unpigz executable, make sure detectPigz can find it - tempPath, err := os.MkdirTemp("", "containerd_temp_") - if err != nil { - t.Fatal(err) - } + tempPath := t.TempDir() filename := "unpigz" if runtime.GOOS == "windows" { @@ -138,8 +135,6 @@ func TestDetectPigz(t *testing.T) { t.Fatal(err) } - defer os.RemoveAll(tempPath) - oldPath := os.Getenv("PATH") os.Setenv("PATH", tempPath) defer os.Setenv("PATH", oldPath) diff --git a/archive/issues_test.go b/archive/issues_test.go index 60eeb28b8..de6d090cb 100644 --- a/archive/issues_test.go +++ b/archive/issues_test.go @@ -36,11 +36,7 @@ func TestPrefixHeaderReadable(t *testing.T) { // https://gist.github.com/stevvooe/e2a790ad4e97425896206c0816e1a882#file-out-go var testFile = []byte("\x1f\x8b\x08\x08\x44\x21\x68\x59\x00\x03\x74\x2e\x74\x61\x72\x00\x4b\xcb\xcf\x67\xa0\x35\x30\x80\x00\x86\x06\x10\x47\x01\xc1\x37\x40\x00\x54\xb6\xb1\xa1\xa9\x99\x09\x48\x25\x1d\x40\x69\x71\x49\x62\x91\x02\xe5\x76\xa1\x79\x84\x21\x91\xd6\x80\x72\xaf\x8f\x82\x51\x30\x0a\x46\x36\x00\x00\xf0\x1c\x1e\x95\x00\x06\x00\x00") - tmpDir, err := os.MkdirTemp("", "prefix-test") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() r, err := compression.DecompressStream(bytes.NewReader(testFile)) if err != nil { diff --git a/archive/tar_linux_test.go b/archive/tar_linux_test.go index 9a4397de5..bfe056f00 100644 --- a/archive/tar_linux_test.go +++ b/archive/tar_linux_test.go @@ -36,11 +36,7 @@ import ( func TestOverlayApply(t *testing.T) { testutil.RequiresRoot(t) - base, err := os.MkdirTemp("", "test-ovl-diff-apply-") - if err != nil { - t.Fatalf("unable to create temp dir: %+v", err) - } - defer os.RemoveAll(base) + base := t.TempDir() if err := overlayutils.Supported(base); err != nil { t.Skipf("skipping because overlay is not supported %v", err) @@ -55,11 +51,7 @@ func TestOverlayApply(t *testing.T) { func TestOverlayApplyNoParents(t *testing.T) { testutil.RequiresRoot(t) - base, err := os.MkdirTemp("", "test-ovl-diff-apply-") - if err != nil { - t.Fatalf("unable to create temp dir: %+v", err) - } - defer os.RemoveAll(base) + base := t.TempDir() if err := overlayutils.Supported(base); err != nil { t.Skipf("skipping because overlay is not supported %v", err) diff --git a/archive/tar_test.go b/archive/tar_test.go index f18b1ce4f..3ffb697cb 100644 --- a/archive/tar_test.go +++ b/archive/tar_test.go @@ -23,6 +23,7 @@ import ( "archive/tar" "bytes" "context" + _ "crypto/sha256" "errors" "fmt" "io" @@ -31,8 +32,6 @@ import ( "testing" "time" - _ "crypto/sha256" - "github.com/containerd/containerd/archive/tartest" "github.com/containerd/containerd/pkg/testutil" "github.com/containerd/continuity/fs" @@ -58,7 +57,7 @@ var baseApplier = fstest.Apply( func TestUnpack(t *testing.T) { requireTar(t) - if err := testApply(baseApplier); err != nil { + if err := testApply(t, baseApplier); err != nil { t.Fatalf("Test apply failed: %+v", err) } } @@ -66,7 +65,7 @@ func TestUnpack(t *testing.T) { func TestBaseDiff(t *testing.T) { requireTar(t) - if err := testBaseDiff(baseApplier); err != nil { + if err := testBaseDiff(t, baseApplier); err != nil { t.Fatalf("Test base diff failed: %+v", err) } } @@ -102,7 +101,7 @@ func TestRelativeSymlinks(t *testing.T) { } for _, bo := range breakoutLinks { - if err := testDiffApply(bo); err != nil { + if err := testDiffApply(t, bo); err != nil { t.Fatalf("Test apply failed: %+v", err) } } @@ -179,7 +178,7 @@ func TestSymlinks(t *testing.T) { } for i, l := range links { - if err := testDiffApply(l[0], l[1]); err != nil { + if err := testDiffApply(t, l[0], l[1]); err != nil { t.Fatalf("Test[%d] apply failed: %+v", i+1, err) } } @@ -243,11 +242,7 @@ func TestBreakouts(t *testing.T) { return nil } errFileDiff := errors.New("files differ") - td, err := os.MkdirTemp("", "test-breakouts-") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(td) + td := t.TempDir() isSymlinkFile := func(f string) func(string) error { return func(root string) error { @@ -841,17 +836,9 @@ func TestApplyTar(t *testing.T) { } } -func testApply(a fstest.Applier) error { - td, err := os.MkdirTemp("", "test-apply-") - if err != nil { - return fmt.Errorf("failed to create temp dir: %w", err) - } - defer os.RemoveAll(td) - dest, err := os.MkdirTemp("", "test-apply-dest-") - if err != nil { - return fmt.Errorf("failed to create temp dir: %w", err) - } - defer os.RemoveAll(dest) +func testApply(t *testing.T, a fstest.Applier) error { + td := t.TempDir() + dest := t.TempDir() if err := a.Apply(td); err != nil { return fmt.Errorf("failed to apply filesystem changes: %w", err) @@ -882,17 +869,9 @@ func testApply(a fstest.Applier) error { return fstest.CheckDirectoryEqual(td, dest) } -func testBaseDiff(a fstest.Applier) error { - td, err := os.MkdirTemp("", "test-base-diff-") - if err != nil { - return fmt.Errorf("failed to create temp dir: %w", err) - } - defer os.RemoveAll(td) - dest, err := os.MkdirTemp("", "test-base-diff-dest-") - if err != nil { - return fmt.Errorf("failed to create temp dir: %w", err) - } - defer os.RemoveAll(dest) +func testBaseDiff(t *testing.T, a fstest.Applier) error { + td := t.TempDir() + dest := t.TempDir() if err := a.Apply(td); err != nil { return fmt.Errorf("failed to apply filesystem changes: %w", err) @@ -909,17 +888,9 @@ func testBaseDiff(a fstest.Applier) error { return fstest.CheckDirectoryEqual(td, dest) } -func testDiffApply(appliers ...fstest.Applier) error { - td, err := os.MkdirTemp("", "test-diff-apply-") - if err != nil { - return fmt.Errorf("failed to create temp dir: %w", err) - } - defer os.RemoveAll(td) - dest, err := os.MkdirTemp("", "test-diff-apply-dest-") - if err != nil { - return fmt.Errorf("failed to create temp dir: %w", err) - } - defer os.RemoveAll(dest) +func testDiffApply(t *testing.T, appliers ...fstest.Applier) error { + td := t.TempDir() + dest := t.TempDir() for _, a := range appliers { if err := a.Apply(td); err != nil { @@ -950,11 +921,7 @@ func testDiffApply(appliers ...fstest.Applier) error { func makeWriterToTarTest(wt tartest.WriterToTar, a fstest.Applier, validate func(string) error, applyErr error) func(*testing.T) { return func(t *testing.T) { - td, err := os.MkdirTemp("", "test-writer-to-tar-") - if err != nil { - t.Fatalf("Failed to create temp dir: %v", err) - } - defer os.RemoveAll(td) + td := t.TempDir() if a != nil { if err := a.Apply(td); err != nil { @@ -1254,20 +1221,12 @@ func whiteoutEntry(name string) tarEntryValidator { func makeDiffTarTest(validators []tarEntryValidator, a, b fstest.Applier) func(*testing.T) { return func(t *testing.T) { - ad, err := os.MkdirTemp("", "test-make-diff-tar-") - if err != nil { - t.Fatalf("failed to create temp dir: %v", err) - } - defer os.RemoveAll(ad) + ad := t.TempDir() if err := a.Apply(ad); err != nil { t.Fatalf("failed to apply a: %v", err) } - bd, err := os.MkdirTemp("", "test-make-diff-tar-") - if err != nil { - t.Fatalf("failed to create temp dir: %v", err) - } - defer os.RemoveAll(bd) + bd := t.TempDir() if err := fs.CopyDir(bd, ad); err != nil { t.Fatalf("failed to copy dir: %v", err) } diff --git a/cio/io_test.go b/cio/io_test.go index b52a0bf4a..3df46a722 100644 --- a/cio/io_test.go +++ b/cio/io_test.go @@ -49,9 +49,7 @@ func TestNewFIFOSetInDir(t *testing.T) { t.Skip("NewFIFOSetInDir has different behaviour on windows") } - root, err := os.MkdirTemp("", "test-new-fifo-set") - assert.NilError(t, err) - defer os.RemoveAll(root) + root := t.TempDir() fifos, err := NewFIFOSetInDir(root, "theid", true) assert.NilError(t, err) diff --git a/cio/io_unix_test.go b/cio/io_unix_test.go index fc4fad8a9..d4e0a70bf 100644 --- a/cio/io_unix_test.go +++ b/cio/io_unix_test.go @@ -21,8 +21,6 @@ package cio import ( "context" - "fmt" - "os" "path/filepath" "testing" @@ -65,11 +63,7 @@ func TestOpenFifosWithTerminal(t *testing.T) { var ctx, cancel = context.WithCancel(context.Background()) defer cancel() - ioFifoDir, err := os.MkdirTemp("", fmt.Sprintf("cio-%s", t.Name())) - if err != nil { - t.Fatalf("unexpected error during creating temp dir: %v", err) - } - defer os.RemoveAll(ioFifoDir) + ioFifoDir := t.TempDir() cfg := Config{ Stdout: filepath.Join(ioFifoDir, "test-stdout"), diff --git a/content/local/store_test.go b/content/local/store_test.go index e89c74241..e78ff4016 100644 --- a/content/local/store_test.go +++ b/content/local/store_test.go @@ -291,28 +291,17 @@ func populateBlobStore(ctx context.Context, t checker, cs content.Store, nblobs, return blobs } -func contentStoreEnv(t checker) (context.Context, string, content.Store, func()) { - pc, _, _, ok := runtime.Caller(1) - if !ok { - t.Fatal("failed to resolve caller") - } - fn := runtime.FuncForPC(pc) - - tmpdir, err := os.MkdirTemp("", filepath.Base(fn.Name())+"-") - if err != nil { - t.Fatal(err) - } +func contentStoreEnv(t testing.TB) (context.Context, string, content.Store, func()) { + tmpdir := t.TempDir() cs, err := NewStore(tmpdir) if err != nil { - os.RemoveAll(tmpdir) t.Fatal(err) } ctx, cancel := context.WithCancel(context.Background()) return ctx, tmpdir, cs, func() { cancel() - os.RemoveAll(tmpdir) } } @@ -361,11 +350,7 @@ func checkWrite(ctx context.Context, t checker, cs content.Store, dgst digest.Di } func TestWriterTruncateRecoversFromIncompleteWrite(t *testing.T) { - tmpdir, err := os.MkdirTemp("", "test-local-content-store-recover") - assert.NilError(t, err) - defer os.RemoveAll(tmpdir) - - cs, err := NewStore(tmpdir) + cs, err := NewStore(t.TempDir()) assert.NilError(t, err) ctx, cancel := context.WithCancel(context.Background()) @@ -400,11 +385,7 @@ func setupIncompleteWrite(ctx context.Context, t *testing.T, cs content.Store, r } func TestWriteReadEmptyFileTimestamp(t *testing.T) { - root, err := os.MkdirTemp("", "test-write-read-file-timestamp") - if err != nil { - t.Errorf("failed to create a tmp dir: %v", err) - } - defer os.RemoveAll(root) + root := t.TempDir() emptyFile := filepath.Join(root, "updatedat") if err := writeTimestampFile(emptyFile, time.Time{}); err != nil { diff --git a/integration/addition_gids_test.go b/integration/addition_gids_test.go index 6f8a1c73f..08ab327d6 100644 --- a/integration/addition_gids_test.go +++ b/integration/addition_gids_test.go @@ -31,9 +31,7 @@ import ( ) func TestAdditionalGids(t *testing.T) { - testPodLogDir, err := os.MkdirTemp("", "additional-gids") - require.NoError(t, err) - defer os.RemoveAll(testPodLogDir) + testPodLogDir := t.TempDir() t.Log("Create a sandbox with log directory") sb, sbConfig := PodSandboxConfigWithCleanup(t, "sandbox", "additional-gids", diff --git a/integration/client/container_checkpoint_test.go b/integration/client/container_checkpoint_test.go index 56e862bea..932975131 100644 --- a/integration/client/container_checkpoint_test.go +++ b/integration/client/container_checkpoint_test.go @@ -455,11 +455,7 @@ func TestCheckpointRestoreWithImagePath(t *testing.T) { } // create image path store criu image files - crDir, err := os.MkdirTemp("", "test-cr") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(crDir) + crDir := t.TempDir() imagePath := filepath.Join(crDir, "cr") // checkpoint task if _, err := task.Checkpoint(ctx, WithCheckpointImagePath(imagePath)); err != nil { diff --git a/integration/client/daemon_config_linux_test.go b/integration/client/daemon_config_linux_test.go index 45bbc9096..bfec810d5 100644 --- a/integration/client/daemon_config_linux_test.go +++ b/integration/client/daemon_config_linux_test.go @@ -35,15 +35,7 @@ import ( // TestDaemonRuntimeRoot ensures plugin.linux.runtime_root is not ignored func TestDaemonRuntimeRoot(t *testing.T) { - runtimeRoot, err := os.MkdirTemp("", "containerd-test-runtime-root") - if err != nil { - t.Fatal(err) - } - defer func() { - if err != nil { - os.RemoveAll(runtimeRoot) - } - }() + runtimeRoot := t.TempDir() configTOML := ` version = 2 [plugins] diff --git a/integration/client/restart_monitor_test.go b/integration/client/restart_monitor_test.go index af04ff64c..ad1183927 100644 --- a/integration/client/restart_monitor_test.go +++ b/integration/client/restart_monitor_test.go @@ -49,22 +49,14 @@ func newDaemonWithConfig(t *testing.T, configTOML string) (*Client, *daemon, fun buf = bytes.NewBuffer(nil) ) - tempDir, err := os.MkdirTemp("", "containerd-test-new-daemon-with-config") - if err != nil { - t.Fatal(err) - } - defer func() { - if err != nil { - os.RemoveAll(tempDir) - } - }() + tempDir := t.TempDir() configTOMLFile := filepath.Join(tempDir, "config.toml") - if err = os.WriteFile(configTOMLFile, []byte(configTOML), 0600); err != nil { + if err := os.WriteFile(configTOMLFile, []byte(configTOML), 0600); err != nil { t.Fatal(err) } - if err = srvconfig.LoadConfig(configTOMLFile, &configTOMLDecoded); err != nil { + if err := srvconfig.LoadConfig(configTOMLFile, &configTOMLDecoded); err != nil { t.Fatal(err) } @@ -83,7 +75,7 @@ func newDaemonWithConfig(t *testing.T, configTOML string) (*Client, *daemon, fun if configTOMLDecoded.State == "" { args = append(args, "--state", filepath.Join(tempDir, "state")) } - if err = ctrd.start("containerd", address, args, buf, buf); err != nil { + if err := ctrd.start("containerd", address, args, buf, buf); err != nil { t.Fatalf("%v: %s", err, buf.String()) } diff --git a/integration/container_log_test.go b/integration/container_log_test.go index bd866d311..60de3e568 100644 --- a/integration/container_log_test.go +++ b/integration/container_log_test.go @@ -30,9 +30,7 @@ import ( ) func TestContainerLogWithoutTailingNewLine(t *testing.T) { - testPodLogDir, err := os.MkdirTemp("", "container-log-without-tailing-newline") - require.NoError(t, err) - defer os.RemoveAll(testPodLogDir) + testPodLogDir := t.TempDir() t.Log("Create a sandbox with log directory") sb, sbConfig := PodSandboxConfigWithCleanup(t, "sandbox", "container-log-without-tailing-newline", @@ -80,9 +78,7 @@ func TestContainerLogWithoutTailingNewLine(t *testing.T) { } func TestLongContainerLog(t *testing.T) { - testPodLogDir, err := os.MkdirTemp("", "long-container-log") - require.NoError(t, err) - defer os.RemoveAll(testPodLogDir) + testPodLogDir := t.TempDir() t.Log("Create a sandbox with log directory") sb, sbConfig := PodSandboxConfigWithCleanup(t, "sandbox", "long-container-log", diff --git a/integration/container_volume_test.go b/integration/container_volume_test.go index dbb822b57..02b438522 100644 --- a/integration/container_volume_test.go +++ b/integration/container_volume_test.go @@ -83,13 +83,8 @@ func TestContainerSymlinkVolumes(t *testing.T) { } { testCase := testCase // capture range variable t.Run(name, func(t *testing.T) { - testPodLogDir, err := os.MkdirTemp("", "symlink-test") - require.NoError(t, err) - defer os.RemoveAll(testPodLogDir) - - testVolDir, err := os.MkdirTemp("", "symlink-test-vol") - require.NoError(t, err) - defer os.RemoveAll(testVolDir) + testPodLogDir := t.TempDir() + testVolDir := t.TempDir() content := "hello there\n" regularFile, err := createRegularFile(testVolDir, content) diff --git a/integration/image_load_test.go b/integration/image_load_test.go index 32ee20c86..99647435c 100644 --- a/integration/image_load_test.go +++ b/integration/image_load_test.go @@ -17,12 +17,10 @@ package integration import ( - "os" "path/filepath" "testing" "time" - "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" exec "golang.org/x/sys/execabs" runtime "k8s.io/cri-api/pkg/apis/runtime/v1" @@ -40,12 +38,9 @@ func TestImageLoad(t *testing.T) { output, err := exec.Command("docker", "pull", testImage).CombinedOutput() require.NoError(t, err, "output: %q", output) // os.CreateTemp also opens a file, which might prevent us from overwriting that file with docker save. - tarDir, err := os.MkdirTemp("", "image-load") + tarDir := t.TempDir() tar := filepath.Join(tarDir, "image.tar") require.NoError(t, err) - defer func() { - assert.NoError(t, os.RemoveAll(tarDir)) - }() output, err = exec.Command("docker", "save", testImage, "-o", tar).CombinedOutput() require.NoError(t, err, "output: %q", output) diff --git a/integration/pod_dualstack_test.go b/integration/pod_dualstack_test.go index 24bd0a2de..14231f28c 100644 --- a/integration/pod_dualstack_test.go +++ b/integration/pod_dualstack_test.go @@ -31,9 +31,7 @@ import ( ) func TestPodDualStack(t *testing.T) { - testPodLogDir, err := os.MkdirTemp("", "dualstack") - require.NoError(t, err) - defer os.RemoveAll(testPodLogDir) + testPodLogDir := t.TempDir() t.Log("Create a sandbox") sb, sbConfig := PodSandboxConfigWithCleanup(t, "sandbox", "dualstack", WithPodLogDirectory(testPodLogDir)) diff --git a/integration/pod_hostname_test.go b/integration/pod_hostname_test.go index 9ef9c367e..c7a47321d 100644 --- a/integration/pod_hostname_test.go +++ b/integration/pod_hostname_test.go @@ -64,9 +64,7 @@ func TestPodHostname(t *testing.T) { if test.needsHostNetwork && goruntime.GOOS == "windows" { t.Skip("Skipped on Windows.") } - testPodLogDir, err := os.MkdirTemp("", "hostname") - require.NoError(t, err) - defer os.RemoveAll(testPodLogDir) + testPodLogDir := t.TempDir() opts := append(test.opts, WithPodLogDirectory(testPodLogDir)) t.Log("Create a sandbox with hostname") diff --git a/integration/shim_dial_unix_test.go b/integration/shim_dial_unix_test.go index 7308bf021..981fe0575 100644 --- a/integration/shim_dial_unix_test.go +++ b/integration/shim_dial_unix_test.go @@ -150,10 +150,7 @@ func testFailFastWhenConnectShim(abstract bool, dialFn dialFunc) func(*testing.T } func newTestListener(t testing.TB, abstract bool) (string, net.Listener, func()) { - tmpDir, err := os.MkdirTemp("", "shim-ut-XX") - if err != nil { - t.Fatalf("failed to create tmp directory: %v", err) - } + tmpDir := t.TempDir() // NOTE(fuweid): // diff --git a/metadata/containers_test.go b/metadata/containers_test.go index 2b9efbd14..e38242bad 100644 --- a/metadata/containers_test.go +++ b/metadata/containers_test.go @@ -20,10 +20,8 @@ import ( "context" "errors" "fmt" - "os" "path/filepath" "reflect" - "strings" "testing" "time" @@ -715,10 +713,7 @@ func testEnv(t *testing.T) (context.Context, *bolt.DB, func()) { ctx = namespaces.WithNamespace(ctx, "testing") ctx = logtest.WithT(ctx, t) - dirname, err := os.MkdirTemp("", strings.Replace(t.Name(), "/", "_", -1)+"-") - if err != nil { - t.Fatal(err) - } + dirname := t.TempDir() db, err := bolt.Open(filepath.Join(dirname, "meta.db"), 0644, nil) if err != nil { @@ -727,9 +722,6 @@ func testEnv(t *testing.T) (context.Context, *bolt.DB, func()) { return ctx, db, func() { db.Close() - if err := os.RemoveAll(dirname); err != nil { - t.Log("failed removing temp dir", err) - } cancel() } } diff --git a/metadata/db_test.go b/metadata/db_test.go index d66408bdd..707d9a9f4 100644 --- a/metadata/db_test.go +++ b/metadata/db_test.go @@ -23,7 +23,6 @@ import ( "fmt" "io" "math/rand" - "os" "path/filepath" "runtime/pprof" "strings" @@ -73,10 +72,7 @@ func testDB(t *testing.T, opt ...testOpt) (context.Context, *DB, func()) { o(&topts) } - dirname, err := os.MkdirTemp("", strings.Replace(t.Name(), "/", "_", -1)+"-") - if err != nil { - t.Fatal(err) - } + dirname := t.TempDir() snapshotter, err := native.NewSnapshotter(filepath.Join(dirname, "native")) if err != nil { @@ -112,9 +108,6 @@ func testDB(t *testing.T, opt ...testOpt) (context.Context, *DB, func()) { return ctx, db, func() { bdb.Close() - if err := os.RemoveAll(dirname); err != nil { - t.Log("failed removing temp dir", err) - } cancel() } } @@ -764,10 +757,7 @@ type testLease struct { } func newStores(t testing.TB) (*DB, content.Store, snapshots.Snapshotter, func()) { - td, err := os.MkdirTemp("", "gc-test-") - if err != nil { - t.Fatal(err) - } + td := t.TempDir() db, err := bolt.Open(filepath.Join(td, "meta.db"), 0644, nil) if err != nil { t.Fatal(err) @@ -786,6 +776,7 @@ func newStores(t testing.TB) (*DB, content.Store, snapshots.Snapshotter, func()) mdb := NewDB(db, lcs, map[string]snapshots.Snapshotter{"native": nsn}) return mdb, mdb.ContentStore(), mdb.Snapshotter("native"), func() { - os.RemoveAll(td) + nsn.Close() + db.Close() } } diff --git a/metadata/gc_test.go b/metadata/gc_test.go index 86dc88890..9a514e935 100644 --- a/metadata/gc_test.go +++ b/metadata/gc_test.go @@ -20,7 +20,6 @@ import ( "context" "io" "math/rand" - "os" "path/filepath" "sort" "testing" @@ -42,7 +41,7 @@ func TestResourceMax(t *testing.T) { } func TestGCRoots(t *testing.T) { - db, cleanup, err := newDatabase() + db, cleanup, err := newDatabase(t) if err != nil { t.Fatal(err) } @@ -163,7 +162,7 @@ func TestGCRoots(t *testing.T) { } func TestGCRemove(t *testing.T) { - db, cleanup, err := newDatabase() + db, cleanup, err := newDatabase(t) if err != nil { t.Fatal(err) } @@ -256,7 +255,7 @@ func TestGCRemove(t *testing.T) { } func TestGCRefs(t *testing.T) { - db, cleanup, err := newDatabase() + db, cleanup, err := newDatabase(t) if err != nil { t.Fatal(err) } @@ -387,21 +386,16 @@ func TestGCRefs(t *testing.T) { } } -func newDatabase() (*bolt.DB, func(), error) { - td, err := os.MkdirTemp("", "gc-roots-") - if err != nil { - return nil, nil, err - } +func newDatabase(t testing.TB) (*bolt.DB, func(), error) { + td := t.TempDir() db, err := bolt.Open(filepath.Join(td, "test.db"), 0777, nil) if err != nil { - os.RemoveAll(td) return nil, nil, err } return db, func() { db.Close() - os.RemoveAll(td) }, nil } diff --git a/mount/fmountat_linux_test.go b/mount/fmountat_linux_test.go index 026effe6b..154165c55 100644 --- a/mount/fmountat_linux_test.go +++ b/mount/fmountat_linux_test.go @@ -45,11 +45,7 @@ func makeTestForFMountat(fn fMountatCaseFunc) func(t *testing.T) { return func(t *testing.T) { t.Parallel() - suiteDir, err := os.MkdirTemp("", "fmountat-test-") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(suiteDir) + suiteDir := t.TempDir() fn(t, suiteDir) } diff --git a/mount/lookup_linux_test.go b/mount/lookup_linux_test.go index dd43fb3a0..2e31070c4 100644 --- a/mount/lookup_linux_test.go +++ b/mount/lookup_linux_test.go @@ -41,11 +41,7 @@ func checkLookup(t *testing.T, fsType, mntPoint, dir string) { func testLookup(t *testing.T, fsType string) { testutil.RequiresRoot(t) - mnt, err := os.MkdirTemp("", "containerd-mountinfo-test-lookup") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(mnt) + mnt := t.TempDir() loop, err := loopback.New(100 << 20) // 100 MB if err != nil { @@ -68,11 +64,7 @@ func testLookup(t *testing.T, fsType string) { assert.Check(t, strings.HasPrefix(loop.Device, "/dev/loop")) checkLookup(t, fsType, mnt, mnt) - newMnt, err := os.MkdirTemp("", "containerd-mountinfo-test-newMnt") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(newMnt) + newMnt := t.TempDir() if out, err := exec.Command("mount", "--bind", mnt, newMnt).CombinedOutput(); err != nil { t.Fatalf("could not mount %s to %s: %v (out: %q)", mnt, newMnt, err, string(out)) @@ -99,21 +91,10 @@ func TestLookupWithXFS(t *testing.T) { } func TestLookupWithOverlay(t *testing.T) { - lower, err := os.MkdirTemp("", "containerd-mountinfo-test-lower") - assert.NilError(t, err) - defer os.RemoveAll(lower) - - upper, err := os.MkdirTemp("", "containerd-mountinfo-test-upper") - assert.NilError(t, err) - defer os.RemoveAll(upper) - - work, err := os.MkdirTemp("", "containerd-mountinfo-test-work") - assert.NilError(t, err) - defer os.RemoveAll(work) - - overlay, err := os.MkdirTemp("", "containerd-mountinfo-test-overlay") - assert.NilError(t, err) - defer os.RemoveAll(overlay) + lower := t.TempDir() + upper := t.TempDir() + work := t.TempDir() + overlay := t.TempDir() if out, err := exec.Command("mount", "-t", "overlay", "overlay", "-o", fmt.Sprintf("lowerdir=%s,upperdir=%s,workdir=%s", lower, upper, work), overlay).CombinedOutput(); err != nil { @@ -123,7 +104,7 @@ func TestLookupWithOverlay(t *testing.T) { defer testutil.Unmount(t, overlay) testdir := filepath.Join(overlay, "testdir") - err = os.Mkdir(testdir, 0777) + err := os.Mkdir(testdir, 0777) assert.NilError(t, err) testfile := filepath.Join(overlay, "testfile") diff --git a/mount/mount_linux_test.go b/mount/mount_linux_test.go index 3310e3dbb..84e708551 100644 --- a/mount/mount_linux_test.go +++ b/mount/mount_linux_test.go @@ -104,15 +104,7 @@ func TestFUSEHelper(t *testing.T) { if err != nil { t.Skip("fuse-overlayfs not installed") } - td, err := os.MkdirTemp("", "fuse") - if err != nil { - t.Fatal(err) - } - defer func() { - if err := os.RemoveAll(td); err != nil { - t.Fatal(err) - } - }() + td := t.TempDir() for _, dir := range []string{"lower1", "lower2", "upper", "work", "merged"} { if err := os.Mkdir(filepath.Join(td, dir), 0755); err != nil { diff --git a/pkg/cri/server/helpers_linux_test.go b/pkg/cri/server/helpers_linux_test.go index 4a3433be0..ee26df98e 100644 --- a/pkg/cri/server/helpers_linux_test.go +++ b/pkg/cri/server/helpers_linux_test.go @@ -65,15 +65,9 @@ func TestEnsureRemoveAllWithMount(t *testing.T) { t.Skip("skipping test that requires root") } - dir1, err := os.MkdirTemp("", "test-ensure-removeall-with-dir1") - if err != nil { - t.Fatal(err) - } - dir2, err := os.MkdirTemp("", "test-ensure-removeall-with-dir2") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(dir2) + var err error + dir1 := t.TempDir() + dir2 := t.TempDir() bindDir := filepath.Join(dir1, "bind") if err := os.MkdirAll(bindDir, 0755); err != nil { diff --git a/pkg/cri/server/helpers_test.go b/pkg/cri/server/helpers_test.go index c0c1c6e75..f73e174dc 100644 --- a/pkg/cri/server/helpers_test.go +++ b/pkg/cri/server/helpers_test.go @@ -492,10 +492,7 @@ func TestEnsureRemoveAllNotExist(t *testing.T) { } func TestEnsureRemoveAllWithDir(t *testing.T) { - dir, err := os.MkdirTemp("", "test-ensure-removeall-with-dir") - if err != nil { - t.Fatal(err) - } + dir := t.TempDir() if err := ensureRemoveAll(context.Background(), dir); err != nil { t.Fatal(err) } diff --git a/pkg/cri/server/update_runtime_config_test.go b/pkg/cri/server/update_runtime_config_test.go index d08571755..6cb535ca4 100644 --- a/pkg/cri/server/update_runtime_config_test.go +++ b/pkg/cri/server/update_runtime_config_test.go @@ -93,11 +93,9 @@ func TestUpdateRuntimeConfig(t *testing.T) { }, } { t.Run(name, func(t *testing.T) { - testDir, err := os.MkdirTemp(os.TempDir(), "test-runtime-config") - require.NoError(t, err) - defer os.RemoveAll(testDir) + testDir := t.TempDir() templateName := filepath.Join(testDir, "template") - err = os.WriteFile(templateName, []byte(testTemplate), 0666) + err := os.WriteFile(templateName, []byte(testTemplate), 0666) require.NoError(t, err) confDir := filepath.Join(testDir, "net.d") confName := filepath.Join(confDir, cniConfigFileName) diff --git a/pkg/cri/store/container/status_test.go b/pkg/cri/store/container/status_test.go index 9ca07f34b..b5080a629 100644 --- a/pkg/cri/store/container/status_test.go +++ b/pkg/cri/store/container/status_test.go @@ -114,9 +114,7 @@ func TestStatus(t *testing.T) { assert := assertlib.New(t) require := requirelib.New(t) - tempDir, err := os.MkdirTemp(os.TempDir(), "status-test") - require.NoError(err) - defer os.RemoveAll(tempDir) + tempDir := t.TempDir() statusFile := filepath.Join(tempDir, "status") t.Logf("simple store and get") diff --git a/remotes/docker/config/hosts_test.go b/remotes/docker/config/hosts_test.go index dda810991..a3941f026 100644 --- a/remotes/docker/config/hosts_test.go +++ b/remotes/docker/config/hosts_test.go @@ -208,11 +208,7 @@ ca = "/etc/path/default" } func TestLoadCertFiles(t *testing.T) { - dir, err := os.MkdirTemp("", t.Name()) - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(dir) + dir := t.TempDir() type testCase struct { input hostConfig diff --git a/runtime/v1/linux/bundle_test.go b/runtime/v1/linux/bundle_test.go index 5356693a5..242411097 100644 --- a/runtime/v1/linux/bundle_test.go +++ b/runtime/v1/linux/bundle_test.go @@ -48,9 +48,7 @@ func TestNewBundle(t *testing.T) { for i, tc := range tests { t.Run(strconv.Itoa(i), func(t *testing.T) { - dir, err := os.MkdirTemp("", "test-new-bundle") - require.NoError(t, err, "failed to create test directory") - defer os.RemoveAll(dir) + dir := t.TempDir() work := filepath.Join(dir, "work") state := filepath.Join(dir, "state") id := fmt.Sprintf("new-bundle-%d", i) diff --git a/runtime/v2/bundle_linux_test.go b/runtime/v2/bundle_linux_test.go index 91bbb9c1a..685dc2fbf 100644 --- a/runtime/v2/bundle_linux_test.go +++ b/runtime/v2/bundle_linux_test.go @@ -47,9 +47,7 @@ func TestNewBundle(t *testing.T) { for i, tc := range tests { t.Run(strconv.Itoa(i), func(t *testing.T) { - dir, err := os.MkdirTemp("", "test-new-bundle") - require.NoError(t, err, "failed to create test directory") - defer os.RemoveAll(dir) + dir := t.TempDir() work := filepath.Join(dir, "work") state := filepath.Join(dir, "state") id := fmt.Sprintf("new-bundle-%d", i) diff --git a/services/server/config/config_test.go b/services/server/config/config_test.go index 3964032a7..49a10d98b 100644 --- a/services/server/config/config_test.go +++ b/services/server/config/config_test.go @@ -61,12 +61,10 @@ func TestMergeConfigs(t *testing.T) { } func TestResolveImports(t *testing.T) { - tempDir, err := os.MkdirTemp("", "containerd_") - assert.NilError(t, err) - defer os.RemoveAll(tempDir) + tempDir := t.TempDir() for _, filename := range []string{"config_1.toml", "config_2.toml", "test.toml"} { - err = os.WriteFile(filepath.Join(tempDir, filename), []byte(""), 0600) + err := os.WriteFile(filepath.Join(tempDir, filename), []byte(""), 0600) assert.NilError(t, err) } @@ -95,12 +93,10 @@ root = "/var/lib/containerd" accepts = ["application/vnd.docker.image.rootfs.diff.tar.gzip"] path = "unpigz" ` - tempDir, err := os.MkdirTemp("", "containerd_") - assert.NilError(t, err) - defer os.RemoveAll(tempDir) + tempDir := t.TempDir() path := filepath.Join(tempDir, "config.toml") - err = os.WriteFile(path, []byte(data), 0600) + err := os.WriteFile(path, []byte(data), 0600) assert.NilError(t, err) var out Config @@ -127,11 +123,9 @@ imports = ["data2.toml"] disabled_plugins = ["io.containerd.v1.xyz"] ` - tempDir, err := os.MkdirTemp("", "containerd_") - assert.NilError(t, err) - defer os.RemoveAll(tempDir) + tempDir := t.TempDir() - err = os.WriteFile(filepath.Join(tempDir, "data1.toml"), []byte(data1), 0600) + err := os.WriteFile(filepath.Join(tempDir, "data1.toml"), []byte(data1), 0600) assert.NilError(t, err) err = os.WriteFile(filepath.Join(tempDir, "data2.toml"), []byte(data2), 0600) @@ -157,11 +151,9 @@ imports = ["data2.toml", "data1.toml"] disabled_plugins = ["io.containerd.v1.xyz"] imports = ["data1.toml", "data2.toml"] ` - tempDir, err := os.MkdirTemp("", "containerd_") - assert.NilError(t, err) - defer os.RemoveAll(tempDir) + tempDir := t.TempDir() - err = os.WriteFile(filepath.Join(tempDir, "data1.toml"), []byte(data1), 0600) + err := os.WriteFile(filepath.Join(tempDir, "data1.toml"), []byte(data1), 0600) assert.NilError(t, err) err = os.WriteFile(filepath.Join(tempDir, "data2.toml"), []byte(data2), 0600) @@ -189,12 +181,10 @@ version = 2 shim_debug = true ` - tempDir, err := os.MkdirTemp("", "containerd_") - assert.NilError(t, err) - defer os.RemoveAll(tempDir) + tempDir := t.TempDir() path := filepath.Join(tempDir, "config.toml") - err = os.WriteFile(path, []byte(data), 0600) + err := os.WriteFile(path, []byte(data), 0600) assert.NilError(t, err) var out Config @@ -215,12 +205,8 @@ func TestDecodePluginInV1Config(t *testing.T) { shim_debug = true ` - tempDir, err := os.MkdirTemp("", "containerd_") - assert.NilError(t, err) - defer os.RemoveAll(tempDir) - - path := filepath.Join(tempDir, "config.toml") - err = os.WriteFile(path, []byte(data), 0600) + path := filepath.Join(t.TempDir(), "config.toml") + err := os.WriteFile(path, []byte(data), 0600) assert.NilError(t, err) var out Config diff --git a/snapshots/btrfs/btrfs_test.go b/snapshots/btrfs/btrfs_test.go index e7dde3c50..41714e324 100644 --- a/snapshots/btrfs/btrfs_test.go +++ b/snapshots/btrfs/btrfs_test.go @@ -122,18 +122,10 @@ func TestBtrfsMounts(t *testing.T) { ctx := context.Background() // create temporary directory for mount point - mountPoint, err := os.MkdirTemp("", "containerd-btrfs-test") - if err != nil { - t.Fatal("could not create mount point for btrfs test", err) - } - defer os.RemoveAll(mountPoint) + mountPoint := t.TempDir() t.Log("temporary mount point created", mountPoint) - root, err := os.MkdirTemp(mountPoint, "TestBtrfsPrepare-") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(root) + root := t.TempDir() b, c, err := boltSnapshotter(t)(ctx, root) if err != nil { diff --git a/snapshots/devmapper/dmsetup/dmsetup_test.go b/snapshots/devmapper/dmsetup/dmsetup_test.go index 06759894d..876bd1ab8 100644 --- a/snapshots/devmapper/dmsetup/dmsetup_test.go +++ b/snapshots/devmapper/dmsetup/dmsetup_test.go @@ -43,19 +43,13 @@ const ( func TestDMSetup(t *testing.T) { testutil.RequiresRoot(t) - tempDir, err := os.MkdirTemp("", "dmsetup-tests-") - assert.NilError(t, err, "failed to make temp dir for tests") - - defer func() { - err := os.RemoveAll(tempDir) - assert.NilError(t, err) - }() + tempDir := t.TempDir() dataImage, loopDataDevice := createLoopbackDevice(t, tempDir) metaImage, loopMetaDevice := createLoopbackDevice(t, tempDir) defer func() { - err = mount.DetachLoopDevice(loopDataDevice, loopMetaDevice) + err := mount.DetachLoopDevice(loopDataDevice, loopMetaDevice) assert.NilError(t, err, "failed to detach loop devices for data image: %s and meta image: %s", dataImage, metaImage) }() @@ -87,7 +81,7 @@ func TestDMSetup(t *testing.T) { t.Run("RemoveDevice", testRemoveDevice) t.Run("RemovePool", func(t *testing.T) { - err = RemoveDevice(testPoolName, RemoveWithForce, RemoveWithRetries) + err := RemoveDevice(testPoolName, RemoveWithForce, RemoveWithRetries) assert.NilError(t, err, "failed to remove thin-pool") }) diff --git a/snapshots/devmapper/metadata_test.go b/snapshots/devmapper/metadata_test.go index f482fd45c..7069ee1a1 100644 --- a/snapshots/devmapper/metadata_test.go +++ b/snapshots/devmapper/metadata_test.go @@ -22,7 +22,6 @@ package devmapper import ( "context" "errors" - "os" "path/filepath" "strconv" "testing" @@ -37,8 +36,8 @@ var ( ) func TestPoolMetadata_AddDevice(t *testing.T) { - tempDir, store := createStore(t) - defer cleanupStore(t, tempDir, store) + store := createStore(t) + defer cleanupStore(t, store) expected := &DeviceInfo{ Name: "test2", @@ -62,8 +61,8 @@ func TestPoolMetadata_AddDevice(t *testing.T) { } func TestPoolMetadata_AddDeviceRollback(t *testing.T) { - tempDir, store := createStore(t) - defer cleanupStore(t, tempDir, store) + store := createStore(t) + defer cleanupStore(t, store) err := store.AddDevice(testCtx, &DeviceInfo{Name: ""}) assert.Assert(t, err != nil) @@ -73,8 +72,8 @@ func TestPoolMetadata_AddDeviceRollback(t *testing.T) { } func TestPoolMetadata_AddDeviceDuplicate(t *testing.T) { - tempDir, store := createStore(t) - defer cleanupStore(t, tempDir, store) + store := createStore(t) + defer cleanupStore(t, store) err := store.AddDevice(testCtx, &DeviceInfo{Name: "test"}) assert.NilError(t, err) @@ -84,8 +83,8 @@ func TestPoolMetadata_AddDeviceDuplicate(t *testing.T) { } func TestPoolMetadata_ReuseDeviceID(t *testing.T) { - tempDir, store := createStore(t) - defer cleanupStore(t, tempDir, store) + store := createStore(t) + defer cleanupStore(t, store) info1 := &DeviceInfo{Name: "test1"} err := store.AddDevice(testCtx, info1) @@ -109,8 +108,8 @@ func TestPoolMetadata_ReuseDeviceID(t *testing.T) { } func TestPoolMetadata_RemoveDevice(t *testing.T) { - tempDir, store := createStore(t) - defer cleanupStore(t, tempDir, store) + store := createStore(t) + defer cleanupStore(t, store) err := store.AddDevice(testCtx, &DeviceInfo{Name: "test"}) assert.NilError(t, err) @@ -123,8 +122,8 @@ func TestPoolMetadata_RemoveDevice(t *testing.T) { } func TestPoolMetadata_UpdateDevice(t *testing.T) { - tempDir, store := createStore(t) - defer cleanupStore(t, tempDir, store) + store := createStore(t) + defer cleanupStore(t, store) oldInfo := &DeviceInfo{ Name: "test1", @@ -155,8 +154,8 @@ func TestPoolMetadata_UpdateDevice(t *testing.T) { } func TestPoolMetadata_MarkFaulty(t *testing.T) { - tempDir, store := createStore(t) - defer cleanupStore(t, tempDir, store) + store := createStore(t) + defer cleanupStore(t, store) info := &DeviceInfo{Name: "test"} err := store.AddDevice(testCtx, info) @@ -182,8 +181,8 @@ func TestPoolMetadata_MarkFaulty(t *testing.T) { } func TestPoolMetadata_WalkDevices(t *testing.T) { - tempDir, store := createStore(t) - defer cleanupStore(t, tempDir, store) + store := createStore(t) + defer cleanupStore(t, store) err := store.AddDevice(testCtx, &DeviceInfo{Name: "device1", DeviceID: 1, State: Created}) assert.NilError(t, err) @@ -214,8 +213,8 @@ func TestPoolMetadata_WalkDevices(t *testing.T) { } func TestPoolMetadata_GetDeviceNames(t *testing.T) { - tempDir, store := createStore(t) - defer cleanupStore(t, tempDir, store) + store := createStore(t) + defer cleanupStore(t, store) err := store.AddDevice(testCtx, &DeviceInfo{Name: "test1"}) assert.NilError(t, err) @@ -231,21 +230,15 @@ func TestPoolMetadata_GetDeviceNames(t *testing.T) { assert.Equal(t, "test2", names[1]) } -func createStore(t *testing.T) (tempDir string, store *PoolMetadata) { - tempDir, err := os.MkdirTemp("", "pool-metadata-") - assert.NilError(t, err, "couldn't create temp directory for metadata tests") - - path := filepath.Join(tempDir, "test.db") +func createStore(t *testing.T) (store *PoolMetadata) { + path := filepath.Join(t.TempDir(), "test.db") metadata, err := NewPoolMetadata(path) assert.NilError(t, err) - return tempDir, metadata + return metadata } -func cleanupStore(t *testing.T, tempDir string, store *PoolMetadata) { +func cleanupStore(t *testing.T, store *PoolMetadata) { err := store.Close() assert.NilError(t, err, "failed to close metadata store") - - err = os.RemoveAll(tempDir) - assert.NilError(t, err, "failed to cleanup temp directory") } diff --git a/snapshots/devmapper/pool_device_test.go b/snapshots/devmapper/pool_device_test.go index f68d41609..951659328 100644 --- a/snapshots/devmapper/pool_device_test.go +++ b/snapshots/devmapper/pool_device_test.go @@ -61,23 +61,19 @@ func TestPoolDevice(t *testing.T) { logrus.SetLevel(logrus.DebugLevel) ctx := context.Background() - tempDir, err := os.MkdirTemp("", "pool-device-test-") - assert.NilError(t, err, "couldn't get temp directory for testing") + tempDir := t.TempDir() _, loopDataDevice := createLoopbackDevice(t, tempDir) _, loopMetaDevice := createLoopbackDevice(t, tempDir) poolName := fmt.Sprintf("test-pool-device-%d", time.Now().Nanosecond()) - err = dmsetup.CreatePool(poolName, loopDataDevice, loopMetaDevice, 64*1024/dmsetup.SectorSize) + err := dmsetup.CreatePool(poolName, loopDataDevice, loopMetaDevice, 64*1024/dmsetup.SectorSize) assert.NilError(t, err, "failed to create pool %q", poolName) defer func() { // Detach loop devices and remove images err := mount.DetachLoopDevice(loopDataDevice, loopMetaDevice) assert.NilError(t, err) - - err = os.RemoveAll(tempDir) - assert.NilError(t, err, "couldn't cleanup temp directory") }() config := &Config{ @@ -176,8 +172,8 @@ func TestPoolDevice(t *testing.T) { } func TestPoolDeviceMarkFaulty(t *testing.T) { - tempDir, store := createStore(t) - defer cleanupStore(t, tempDir, store) + store := createStore(t) + defer cleanupStore(t, store) err := store.AddDevice(testCtx, &DeviceInfo{Name: "1", State: Unknown}) assert.NilError(t, err) diff --git a/snapshots/devmapper/snapshotter_test.go b/snapshots/devmapper/snapshotter_test.go index 244c9845a..369d43f44 100644 --- a/snapshots/devmapper/snapshotter_test.go +++ b/snapshots/devmapper/snapshotter_test.go @@ -23,7 +23,6 @@ import ( "context" _ "crypto/sha256" "fmt" - "os" "testing" "time" @@ -61,11 +60,7 @@ func TestSnapshotterSuite(t *testing.T) { ctx = namespaces.WithNamespace(ctx, "testsuite") t.Run("DevMapperUsage", func(t *testing.T) { - tempDir, err := os.MkdirTemp("", "snapshot-suite-usage") - assert.NilError(t, err) - defer os.RemoveAll(tempDir) - - snapshotter, closer, err := snapshotterFn(ctx, tempDir) + snapshotter, closer, err := snapshotterFn(ctx, t.TempDir()) assert.NilError(t, err) defer closer() @@ -148,13 +143,10 @@ func TestMultipleXfsMounts(t *testing.T) { ctx := context.Background() ctx = namespaces.WithNamespace(ctx, "testsuite") - tempDir, err := os.MkdirTemp("", "snapshot-suite-usage") - assert.NilError(t, err) - defer os.RemoveAll(tempDir) poolName := fmt.Sprintf("containerd-snapshotter-suite-pool-%d", time.Now().Nanosecond()) config := &Config{ - RootPath: tempDir, + RootPath: t.TempDir(), PoolName: poolName, BaseImageSize: "16Mb", FileSystemType: "xfs", @@ -172,10 +164,9 @@ func TestMultipleXfsMounts(t *testing.T) { mounts, err := snapshotter.Prepare(ctx, "prepare-1", "") assert.NilError(t, err) - root1, _ := os.MkdirTemp(os.TempDir(), "containerd-mount") + root1 := t.TempDir() defer func() { mount.UnmountAll(root1, 0) - os.Remove(root1) }() err = mount.All(mounts, root1) assert.NilError(t, err) @@ -186,10 +177,9 @@ func TestMultipleXfsMounts(t *testing.T) { mounts, err = snapshotter.Prepare(ctx, "prepare-2", "layer-1") assert.NilError(t, err) - root2, _ := os.MkdirTemp(os.TempDir(), "containerd-mount") + root2 := t.TempDir() defer func() { mount.UnmountAll(root2, 0) - os.Remove(root2) }() err = mount.All(mounts, root2) assert.NilError(t, err) diff --git a/snapshots/overlay/overlay_test.go b/snapshots/overlay/overlay_test.go index 2dac58573..279613935 100644 --- a/snapshots/overlay/overlay_test.go +++ b/snapshots/overlay/overlay_test.go @@ -79,11 +79,7 @@ func TestOverlay(t *testing.T) { func testOverlayMounts(t *testing.T, newSnapshotter testsuite.SnapshotterFunc) { ctx := context.TODO() - root, err := os.MkdirTemp("", "overlay") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(root) + root := t.TempDir() o, _, err := newSnapshotter(ctx, root) if err != nil { t.Fatal(err) @@ -113,11 +109,7 @@ func testOverlayMounts(t *testing.T, newSnapshotter testsuite.SnapshotterFunc) { func testOverlayCommit(t *testing.T, newSnapshotter testsuite.SnapshotterFunc) { ctx := context.TODO() - root, err := os.MkdirTemp("", "overlay") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(root) + root := t.TempDir() o, _, err := newSnapshotter(ctx, root) if err != nil { t.Fatal(err) @@ -138,11 +130,7 @@ func testOverlayCommit(t *testing.T, newSnapshotter testsuite.SnapshotterFunc) { func testOverlayOverlayMount(t *testing.T, newSnapshotter testsuite.SnapshotterFunc) { ctx := context.TODO() - root, err := os.MkdirTemp("", "overlay") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(root) + root := t.TempDir() o, _, err := newSnapshotter(ctx, root) if err != nil { t.Fatal(err) @@ -235,11 +223,7 @@ func getParents(ctx context.Context, sn snapshots.Snapshotter, root, key string) func testOverlayOverlayRead(t *testing.T, newSnapshotter testsuite.SnapshotterFunc) { testutil.RequiresRoot(t) ctx := context.TODO() - root, err := os.MkdirTemp("", "overlay") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(root) + root := t.TempDir() o, _, err := newSnapshotter(ctx, root) if err != nil { t.Fatal(err) @@ -278,11 +262,7 @@ func testOverlayOverlayRead(t *testing.T, newSnapshotter testsuite.SnapshotterFu func testOverlayView(t *testing.T, newSnapshotter testsuite.SnapshotterFunc) { ctx := context.TODO() - root, err := os.MkdirTemp("", "overlay") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(root) + root := t.TempDir() o, _, err := newSnapshotter(ctx, root) if err != nil { t.Fatal(err) diff --git a/snapshots/overlay/overlayutils/check_test.go b/snapshots/overlay/overlayutils/check_test.go index 3618fa141..700057217 100644 --- a/snapshots/overlay/overlayutils/check_test.go +++ b/snapshots/overlay/overlayutils/check_test.go @@ -20,7 +20,6 @@ package overlayutils import ( - "os" "testing" "github.com/containerd/containerd/pkg/testutil" @@ -30,11 +29,7 @@ import ( func testOverlaySupported(t testing.TB, expected bool, mkfs ...string) { testutil.RequiresRoot(t) - mnt, err := os.MkdirTemp("", "containerd-fs-test-supports-overlay") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(mnt) + mnt := t.TempDir() loop, err := loopback.New(100 << 20) // 100 MB if err != nil { diff --git a/snapshots/storage/metastore_bench_test.go b/snapshots/storage/metastore_bench_test.go index b7f4f094a..8f360c1f8 100644 --- a/snapshots/storage/metastore_bench_test.go +++ b/snapshots/storage/metastore_bench_test.go @@ -19,7 +19,6 @@ package storage import ( "context" "fmt" - "os" "testing" "github.com/containerd/containerd/snapshots" @@ -42,17 +41,16 @@ func Benchmarks(b *testing.B, name string, metaFn metaFactory) { func makeBench(b *testing.B, name string, metaFn metaFactory, fn func(context.Context, *testing.B, *MetaStore)) func(b *testing.B) { return func(b *testing.B) { ctx := context.Background() - tmpDir, err := os.MkdirTemp("", "metastore-bench-"+name+"-") - if err != nil { - b.Fatal(err) - } - defer os.RemoveAll(tmpDir) - ms, err := metaFn(tmpDir) + ms, err := metaFn(b.TempDir()) if err != nil { b.Fatal(err) } + b.Cleanup(func() { + ms.Close() + }) + ctx, t, err := ms.TransactionContext(ctx, true) if err != nil { b.Fatal(err) @@ -67,13 +65,8 @@ func makeBench(b *testing.B, name string, metaFn metaFactory, fn func(context.Co func openCloseWritable(b *testing.B, name string, metaFn metaFactory) func(b *testing.B) { return func(b *testing.B) { ctx := context.Background() - tmpDir, err := os.MkdirTemp("", "metastore-bench-"+name+"-") - if err != nil { - b.Fatal(err) - } - defer os.RemoveAll(tmpDir) - ms, err := metaFn(tmpDir) + ms, err := metaFn(b.TempDir()) if err != nil { b.Fatal(err) } @@ -95,13 +88,8 @@ func openCloseWritable(b *testing.B, name string, metaFn metaFactory) func(b *te func openCloseReadonly(b *testing.B, name string, metaFn metaFactory) func(b *testing.B) { return func(b *testing.B) { ctx := context.Background() - tmpDir, err := os.MkdirTemp("", "metastore-bench-"+name+"-") - if err != nil { - b.Fatal(err) - } - defer os.RemoveAll(tmpDir) - ms, err := metaFn(tmpDir) + ms, err := metaFn(b.TempDir()) if err != nil { b.Fatal(err) } diff --git a/snapshots/storage/metastore_test.go b/snapshots/storage/metastore_test.go index b3355e863..10aedc4d8 100644 --- a/snapshots/storage/metastore_test.go +++ b/snapshots/storage/metastore_test.go @@ -20,7 +20,6 @@ import ( "context" "errors" "fmt" - "os" "testing" "time" @@ -66,17 +65,16 @@ func MetaStoreSuite(t *testing.T, name string, meta func(root string) (*MetaStor func makeTest(t *testing.T, name string, metaFn metaFactory, fn testFunc) func(t *testing.T) { return func(t *testing.T) { ctx := context.Background() - tmpDir, err := os.MkdirTemp("", "metastore-test-"+name+"-") - if err != nil { - t.Fatal(err) - } - defer os.RemoveAll(tmpDir) - ms, err := metaFn(tmpDir) + ms, err := metaFn(t.TempDir()) if err != nil { t.Fatal(err) } + t.Cleanup(func() { + ms.Close() + }) + fn(ctx, t, ms) } }