diff --git a/copy/sign_test.go b/copy/sign_test.go index 6c95d438f0..0e74c7cde8 100644 --- a/copy/sign_test.go +++ b/copy/sign_test.go @@ -39,9 +39,7 @@ func TestCreateSignature(t *testing.T) { defer os.Unsetenv("GNUPGHOME") // Signing a directory: reference, which does not have a DockerReference(), fails. - tempDir, err := ioutil.TempDir("", "signature-dir-dest") - require.NoError(t, err) - defer os.RemoveAll(tempDir) + tempDir := t.TempDir() dirRef, err := directory.NewReference(tempDir) require.NoError(t, err) dirDest, err := dirRef.NewImageDestination(context.Background(), nil) diff --git a/directory/directory_test.go b/directory/directory_test.go index 1ee5f68474..a616352d78 100644 --- a/directory/directory_test.go +++ b/directory/directory_test.go @@ -18,7 +18,6 @@ import ( func TestDestinationReference(t *testing.T) { ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) dest, err := ref.NewImageDestination(context.Background(), nil) require.NoError(t, err) @@ -28,8 +27,7 @@ func TestDestinationReference(t *testing.T) { } func TestGetPutManifest(t *testing.T) { - ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempDir(t) man := []byte("test-manifest") list := []byte("test-manifest-list") @@ -64,8 +62,7 @@ func TestGetPutBlob(t *testing.T) { providedBlob := []byte("provided-blob") providedDigest := digest.Digest("sha256:provided-test-digest") - ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempDir(t) cache := memory.New() dest, err := ref.NewImageDestination(context.Background(), nil) @@ -114,8 +111,7 @@ func TestPutBlobDigestFailure(t *testing.T) { const digestErrorString = "Simulated digest error" const blobDigest = digest.Digest("sha256:test-digest") - ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempDir(t) dirRef, ok := ref.(dirReference) require.True(t, ok) blobPath := dirRef.layerPath(blobDigest) @@ -153,8 +149,7 @@ func TestPutBlobDigestFailure(t *testing.T) { } func TestGetPutSignatures(t *testing.T) { - ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempDir(t) man := []byte("test-manifest") list := []byte("test-manifest-list") @@ -201,7 +196,6 @@ func TestGetPutSignatures(t *testing.T) { func TestSourceReference(t *testing.T) { ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) src, err := ref.NewImageSource(context.Background(), nil) require.NoError(t, err) diff --git a/directory/directory_transport_test.go b/directory/directory_transport_test.go index 50c5c1d693..30b210ebe7 100644 --- a/directory/directory_transport_test.go +++ b/directory/directory_transport_test.go @@ -50,9 +50,7 @@ func TestNewReference(t *testing.T) { // testNewReference is a test shared for Transport.ParseReference and NewReference. func testNewReference(t *testing.T, fn func(string) (types.ImageReference, error)) { - tmpDir, err := ioutil.TempDir("", "dir-transport-test") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() for _, path := range []string{ "/", @@ -68,42 +66,35 @@ func testNewReference(t *testing.T, fn func(string) (types.ImageReference, error assert.Equal(t, path, dirRef.path, path) } - _, err = fn(tmpDir + "/thisparentdoesnotexist/something") + _, err := fn(tmpDir + "/thisparentdoesnotexist/something") assert.Error(t, err) } // refToTempDir creates a temporary directory and returns a reference to it. -// The caller should -// defer os.RemoveAll(tmpDir) -func refToTempDir(t *testing.T) (ref types.ImageReference, tmpDir string) { - tmpDir, err := ioutil.TempDir("", "dir-transport-test") - require.NoError(t, err) - ref, err = NewReference(tmpDir) +func refToTempDir(t *testing.T) (types.ImageReference, string) { + tmpDir := t.TempDir() + ref, err := NewReference(tmpDir) require.NoError(t, err) return ref, tmpDir } func TestReferenceTransport(t *testing.T) { - ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempDir(t) assert.Equal(t, Transport, ref.Transport()) } func TestReferenceStringWithinTransport(t *testing.T) { ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) assert.Equal(t, tmpDir, ref.StringWithinTransport()) } func TestReferenceDockerReference(t *testing.T) { - ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempDir(t) assert.Nil(t, ref.DockerReference()) } func TestReferencePolicyConfigurationIdentity(t *testing.T) { ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) assert.Equal(t, tmpDir, ref.PolicyConfigurationIdentity()) // A non-canonical path. Test just one, the various other cases are @@ -120,7 +111,6 @@ func TestReferencePolicyConfigurationIdentity(t *testing.T) { func TestReferencePolicyConfigurationNamespaces(t *testing.T) { ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) // We don't really know enough to make a full equality test here. ns := ref.PolicyConfigurationNamespaces() require.NotNil(t, ns) @@ -150,8 +140,7 @@ func TestReferencePolicyConfigurationNamespaces(t *testing.T) { } func TestReferenceNewImage(t *testing.T) { - ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempDir(t) dest, err := ref.NewImageDestination(context.Background(), nil) require.NoError(t, err) @@ -169,8 +158,7 @@ func TestReferenceNewImage(t *testing.T) { } func TestReferenceNewImageNoValidManifest(t *testing.T) { - ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempDir(t) dest, err := ref.NewImageDestination(context.Background(), nil) require.NoError(t, err) @@ -185,24 +173,21 @@ func TestReferenceNewImageNoValidManifest(t *testing.T) { } func TestReferenceNewImageSource(t *testing.T) { - ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempDir(t) src, err := ref.NewImageSource(context.Background(), nil) assert.NoError(t, err) defer src.Close() } func TestReferenceNewImageDestination(t *testing.T) { - ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempDir(t) dest, err := ref.NewImageDestination(context.Background(), nil) assert.NoError(t, err) defer dest.Close() } func TestReferenceDeleteImage(t *testing.T) { - ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempDir(t) err := ref.DeleteImage(context.Background(), nil) assert.Error(t, err) } @@ -211,7 +196,6 @@ func TestReferenceManifestPath(t *testing.T) { dhex := digest.Digest("sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef") ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) dirRef, ok := ref.(dirReference) require.True(t, ok) assert.Equal(t, tmpDir+"/manifest.json", dirRef.manifestPath(nil)) @@ -222,7 +206,6 @@ func TestReferenceLayerPath(t *testing.T) { const hex = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) dirRef, ok := ref.(dirReference) require.True(t, ok) assert.Equal(t, tmpDir+"/"+hex, dirRef.layerPath("sha256:"+hex)) @@ -232,7 +215,6 @@ func TestReferenceSignaturePath(t *testing.T) { dhex := digest.Digest("sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef") ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) dirRef, ok := ref.(dirReference) require.True(t, ok) assert.Equal(t, tmpDir+"/signature-1", dirRef.signaturePath(0, nil)) @@ -243,7 +225,6 @@ func TestReferenceSignaturePath(t *testing.T) { func TestReferenceVersionPath(t *testing.T) { ref, tmpDir := refToTempDir(t) - defer os.RemoveAll(tmpDir) dirRef, ok := ref.(dirReference) require.True(t, ok) assert.Equal(t, tmpDir+"/version", dirRef.versionPath()) diff --git a/directory/explicitfilepath/path_test.go b/directory/explicitfilepath/path_test.go index 3c7434a1b9..f1eedcaca9 100644 --- a/directory/explicitfilepath/path_test.go +++ b/directory/explicitfilepath/path_test.go @@ -2,7 +2,6 @@ package explicitfilepath import ( "fmt" - "io/ioutil" "os" "path/filepath" "testing" @@ -125,12 +124,10 @@ func testPathsAreSameFile(t *testing.T, path1, path2, description string) { } func runPathResolvingTestCase(t *testing.T, f func(string) (string, error), c pathResolvingTestCase, suffix string) { - topDir, err := ioutil.TempDir("", "pathResolving") - require.NoError(t, err) + topDir := t.TempDir() defer func() { - // Clean up after the "Unreadable directory" case; os.RemoveAll just fails. + // Clean up after the "Unreadable directory" case; os.RemoveAll just fails without this. _ = os.Chmod(filepath.Join(topDir, "unreadable"), 0755) // Ignore errors, especially if this does not exist. - os.RemoveAll(topDir) }() input := c.setup(t, topDir) + suffix // Do not call filepath.Join() on input, it calls filepath.Clean() internally! diff --git a/docker/archive/transport_test.go b/docker/archive/transport_test.go index 2b4b853b0c..4c06bdc880 100644 --- a/docker/archive/transport_test.go +++ b/docker/archive/transport_test.go @@ -251,9 +251,7 @@ func TestReferenceNewImageSource(t *testing.T) { } func TestReferenceNewImageDestination(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "docker-archive-test") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() ref, err := ParseReference(filepath.Join(tmpDir, "no-reference")) require.NoError(t, err) @@ -269,9 +267,7 @@ func TestReferenceNewImageDestination(t *testing.T) { } func TestReferenceDeleteImage(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "docker-archive-test") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() for i, suffix := range []string{"", ":some-reference", ":@0"} { testFile := filepath.Join(tmpDir, fmt.Sprintf("file%d.tar", i)) diff --git a/docker/lookaside_test.go b/docker/lookaside_test.go index a1f568187f..8e3859ae20 100644 --- a/docker/lookaside_test.go +++ b/docker/lookaside_test.go @@ -29,9 +29,7 @@ func TestSignatureStorageBaseURL(t *testing.T) { // No match found // expect default user storage base - emptyDir, err := ioutil.TempDir("", "empty-dir") - require.NoError(t, err) - defer os.RemoveAll(emptyDir) + emptyDir := t.TempDir() base, err := SignatureStorageBaseURL(&types.SystemContext{RegistriesDirPath: emptyDir}, dockerRefFromString(t, "//this/is/not/in/the:configuration"), false) assert.NoError(t, err) @@ -55,9 +53,7 @@ func TestRegistriesDirPath(t *testing.T) { const nondefaultPath = "/this/is/not/the/default/registries.d" const variableReference = "$HOME" const rootPrefix = "/root/prefix" - tempHome, err := ioutil.TempDir("", "tempHome") - require.NoError(t, err) - defer os.RemoveAll(tempHome) + tempHome := t.TempDir() var userRegistriesDir = filepath.FromSlash(".config/containers/registries.d") userRegistriesDirPath := filepath.Join(tempHome, userRegistriesDir) for _, c := range []struct { @@ -115,9 +111,7 @@ func TestRegistriesDirPath(t *testing.T) { } func TestLoadAndMergeConfig(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "merge-config") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() // No registries.d exists config, err := loadAndMergeConfig(filepath.Join(tmpDir, "thisdoesnotexist")) diff --git a/oci/archive/oci_transport_test.go b/oci/archive/oci_transport_test.go index 046e2c2b9c..88e6c7ab84 100644 --- a/oci/archive/oci_transport_test.go +++ b/oci/archive/oci_transport_test.go @@ -49,9 +49,7 @@ func TestParseReference(t *testing.T) { // testParseReference is a test shared for Transport.ParseReference and ParseReference. func testParseReference(t *testing.T, fn func(string) (types.ImageReference, error)) { - tmpDir, err := ioutil.TempDir("", "oci-transport-test") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() for _, path := range []string{ "/", @@ -76,7 +74,7 @@ func testParseReference(t *testing.T, fn func(string) (types.ImageReference, err } } - _, err = fn(tmpDir + ":invalid'image!value@") + _, err := fn(tmpDir + ":invalid'image!value@") assert.Error(t, err) } @@ -86,9 +84,7 @@ func TestNewReference(t *testing.T) { noImageValue = "" ) - tmpDir, err := ioutil.TempDir("", "oci-transport-test") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() ref, err := NewReference(tmpDir, imageValue) require.NoError(t, err) @@ -115,11 +111,8 @@ func TestNewReference(t *testing.T) { } // refToTempOCI creates a temporary directory and returns an reference to it. -// The caller should -// defer os.RemoveAll(tmpDir) -func refToTempOCI(t *testing.T) (ref types.ImageReference, tmpDir string) { - tmpDir, err := ioutil.TempDir("", "oci-transport-test") - require.NoError(t, err) +func refToTempOCI(t *testing.T) (types.ImageReference, string) { + tmpDir := t.TempDir() m := `{ "schemaVersion": 2, "manifests": [ @@ -138,9 +131,9 @@ func refToTempOCI(t *testing.T) (ref types.ImageReference, tmpDir string) { ] } ` - err = ioutil.WriteFile(filepath.Join(tmpDir, "index.json"), []byte(m), 0644) + err := ioutil.WriteFile(filepath.Join(tmpDir, "index.json"), []byte(m), 0644) require.NoError(t, err) - ref, err = NewReference(tmpDir, "imageValue") + ref, err := NewReference(tmpDir, "imageValue") require.NoError(t, err) return ref, tmpDir } @@ -148,9 +141,7 @@ func refToTempOCI(t *testing.T) (ref types.ImageReference, tmpDir string) { // refToTempOCIArchive creates a temporary directory, copies the contents of that directory // to a temporary tar file and returns a reference to the temporary tar file func refToTempOCIArchive(t *testing.T) (ref types.ImageReference, tmpTarFile string) { - tmpDir, err := ioutil.TempDir("", "oci-transport-test") - defer os.RemoveAll(tmpDir) - require.NoError(t, err) + tmpDir := t.TempDir() m := `{ "schemaVersion": 2, "manifests": [ @@ -169,7 +160,7 @@ func refToTempOCIArchive(t *testing.T) (ref types.ImageReference, tmpTarFile str ] } ` - err = ioutil.WriteFile(filepath.Join(tmpDir, "index.json"), []byte(m), 0644) + err := ioutil.WriteFile(filepath.Join(tmpDir, "index.json"), []byte(m), 0644) require.NoError(t, err) tarFile, err := ioutil.TempFile("", "oci-transport-test.tar") require.NoError(t, err) @@ -181,15 +172,12 @@ func refToTempOCIArchive(t *testing.T) (ref types.ImageReference, tmpTarFile str } func TestReferenceTransport(t *testing.T) { - ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempOCI(t) assert.Equal(t, Transport, ref.Transport()) } func TestReferenceStringWithinTransport(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "oci-transport-test") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() for _, c := range []struct{ input, result string }{ {"/dir1:notlatest:notlatest", "/dir1:notlatest:notlatest"}, // Explicit image @@ -208,14 +196,12 @@ func TestReferenceStringWithinTransport(t *testing.T) { } func TestReferenceDockerReference(t *testing.T) { - ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempOCI(t) assert.Nil(t, ref.DockerReference()) } func TestReferencePolicyConfigurationIdentity(t *testing.T) { ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) assert.Equal(t, tmpDir, ref.PolicyConfigurationIdentity()) // A non-canonical path. Test just one, the various other cases are @@ -232,7 +218,6 @@ func TestReferencePolicyConfigurationIdentity(t *testing.T) { func TestReferencePolicyConfigurationNamespaces(t *testing.T) { ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) // We don't really know enough to make a full equality test here. ns := ref.PolicyConfigurationNamespaces() require.NotNil(t, ns) @@ -263,8 +248,7 @@ func TestReferencePolicyConfigurationNamespaces(t *testing.T) { } func TestReferenceNewImage(t *testing.T) { - ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempOCI(t) _, err := ref.NewImage(context.Background(), nil) assert.Error(t, err) } @@ -277,16 +261,14 @@ func TestReferenceNewImageSource(t *testing.T) { } func TestReferenceNewImageDestination(t *testing.T) { - ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempOCI(t) dest, err := ref.NewImageDestination(context.Background(), nil) assert.NoError(t, err) defer dest.Close() } func TestReferenceDeleteImage(t *testing.T) { - ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempOCI(t) err := ref.DeleteImage(context.Background(), nil) assert.Error(t, err) } diff --git a/oci/layout/oci_dest_test.go b/oci/layout/oci_dest_test.go index 20b318c558..a3c98f9971 100644 --- a/oci/layout/oci_dest_test.go +++ b/oci/layout/oci_dest_test.go @@ -29,8 +29,7 @@ func TestPutBlobDigestFailure(t *testing.T) { const digestErrorString = "Simulated digest error" const blobDigest = "sha256:e692418e4cbaf90ca69d05a66403747baa33ee08806650b51fab815ad7fc331f" - ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempOCI(t) dirRef, ok := ref.(ociReference) require.True(t, ok) blobPath, err := dirRef.blobPath(blobDigest, "") @@ -71,7 +70,6 @@ func TestPutBlobDigestFailure(t *testing.T) { // TestPutManifestAppendsToExistingManifest tests that new manifests are getting added to existing index. func TestPutManifestAppendsToExistingManifest(t *testing.T) { ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) ociRef, ok := ref.(ociReference) require.True(t, ok) @@ -95,7 +93,6 @@ func TestPutManifestAppendsToExistingManifest(t *testing.T) { // TestPutManifestTwice tests that existing manifest gets updated and not appended. func TestPutManifestTwice(t *testing.T) { ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) ociRef, ok := ref.(ociReference) require.True(t, ok) @@ -111,7 +108,6 @@ func TestPutManifestTwice(t *testing.T) { func TestPutTwoDifferentTags(t *testing.T) { ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) ociRef, ok := ref.(ociReference) require.True(t, ok) diff --git a/oci/layout/oci_transport_test.go b/oci/layout/oci_transport_test.go index a795e9dd3a..a56f72a83e 100644 --- a/oci/layout/oci_transport_test.go +++ b/oci/layout/oci_transport_test.go @@ -61,9 +61,7 @@ func TestParseReference(t *testing.T) { // testParseReference is a test shared for Transport.ParseReference and ParseReference. func testParseReference(t *testing.T, fn func(string) (types.ImageReference, error)) { - tmpDir, err := ioutil.TempDir("", "oci-transport-test") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() for _, path := range []string{ "/", @@ -88,7 +86,7 @@ func testParseReference(t *testing.T, fn func(string) (types.ImageReference, err } } - _, err = fn(tmpDir + ":invalid'image!value@") + _, err := fn(tmpDir + ":invalid'image!value@") assert.Error(t, err) } @@ -98,9 +96,7 @@ func TestNewReference(t *testing.T) { noImageValue = "" ) - tmpDir, err := ioutil.TempDir("", "oci-transport-test") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() ref, err := NewReference(tmpDir, imageValue) require.NoError(t, err) @@ -127,11 +123,8 @@ func TestNewReference(t *testing.T) { } // refToTempOCI creates a temporary directory and returns an reference to it. -// The caller should -// defer os.RemoveAll(tmpDir) -func refToTempOCI(t *testing.T) (ref types.ImageReference, tmpDir string) { - tmpDir, err := ioutil.TempDir("", "oci-transport-test") - require.NoError(t, err) +func refToTempOCI(t *testing.T) (types.ImageReference, string) { + tmpDir := t.TempDir() m := `{ "schemaVersion": 2, "manifests": [ @@ -150,23 +143,20 @@ func refToTempOCI(t *testing.T) (ref types.ImageReference, tmpDir string) { ] } ` - err = ioutil.WriteFile(filepath.Join(tmpDir, "index.json"), []byte(m), 0644) + err := ioutil.WriteFile(filepath.Join(tmpDir, "index.json"), []byte(m), 0644) require.NoError(t, err) - ref, err = NewReference(tmpDir, "imageValue") + ref, err := NewReference(tmpDir, "imageValue") require.NoError(t, err) return ref, tmpDir } func TestReferenceTransport(t *testing.T) { - ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempOCI(t) assert.Equal(t, Transport, ref.Transport()) } func TestReferenceStringWithinTransport(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "oci-transport-test") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() for _, c := range []struct{ input, result string }{ {"/dir1:notlatest:notlatest", "/dir1:notlatest:notlatest"}, // Explicit image @@ -185,14 +175,12 @@ func TestReferenceStringWithinTransport(t *testing.T) { } func TestReferenceDockerReference(t *testing.T) { - ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempOCI(t) assert.Nil(t, ref.DockerReference()) } func TestReferencePolicyConfigurationIdentity(t *testing.T) { ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) assert.Equal(t, tmpDir, ref.PolicyConfigurationIdentity()) // A non-canonical path. Test just one, the various other cases are @@ -209,7 +197,6 @@ func TestReferencePolicyConfigurationIdentity(t *testing.T) { func TestReferencePolicyConfigurationNamespaces(t *testing.T) { ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) // We don't really know enough to make a full equality test here. ns := ref.PolicyConfigurationNamespaces() require.NotNil(t, ns) @@ -240,37 +227,32 @@ func TestReferencePolicyConfigurationNamespaces(t *testing.T) { } func TestReferenceNewImage(t *testing.T) { - ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempOCI(t) _, err := ref.NewImage(context.Background(), nil) assert.Error(t, err) } func TestReferenceNewImageSource(t *testing.T) { - ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempOCI(t) _, err := ref.NewImageSource(context.Background(), nil) assert.NoError(t, err) } func TestReferenceNewImageDestination(t *testing.T) { - ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempOCI(t) dest, err := ref.NewImageDestination(context.Background(), nil) assert.NoError(t, err) defer dest.Close() } func TestReferenceDeleteImage(t *testing.T) { - ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempOCI(t) err := ref.DeleteImage(context.Background(), nil) assert.Error(t, err) } func TestReferenceOCILayoutPath(t *testing.T) { ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) ociRef, ok := ref.(ociReference) require.True(t, ok) assert.Equal(t, tmpDir+"/oci-layout", ociRef.ociLayoutPath()) @@ -278,7 +260,6 @@ func TestReferenceOCILayoutPath(t *testing.T) { func TestReferenceIndexPath(t *testing.T) { ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) ociRef, ok := ref.(ociReference) require.True(t, ok) assert.Equal(t, tmpDir+"/index.json", ociRef.indexPath()) @@ -288,7 +269,6 @@ func TestReferenceBlobPath(t *testing.T) { const hex = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) ociRef, ok := ref.(ociReference) require.True(t, ok) bp, err := ociRef.blobPath("sha256:"+hex, "") @@ -299,8 +279,7 @@ func TestReferenceBlobPath(t *testing.T) { func TestReferenceSharedBlobPathShared(t *testing.T) { const hex = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempOCI(t) ociRef, ok := ref.(ociReference) require.True(t, ok) bp, err := ociRef.blobPath("sha256:"+hex, "/external/path") @@ -311,8 +290,7 @@ func TestReferenceSharedBlobPathShared(t *testing.T) { func TestReferenceBlobPathInvalid(t *testing.T) { const hex = "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef" - ref, tmpDir := refToTempOCI(t) - defer os.RemoveAll(tmpDir) + ref, _ := refToTempOCI(t) ociRef, ok := ref.(ociReference) require.True(t, ok) _, err := ociRef.blobPath(hex, "") diff --git a/ostree/ostree_transport_test.go b/ostree/ostree_transport_test.go index 6eabc13be1..da2f8031b7 100644 --- a/ostree/ostree_transport_test.go +++ b/ostree/ostree_transport_test.go @@ -55,9 +55,7 @@ var imageNameTestcases = []struct{ input, normalized, branchName string }{ } func TestTransportParseReference(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "ostreeParseReference") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() for _, c := range imageNameTestcases { for _, suffix := range repoSuffixes { @@ -104,9 +102,7 @@ func TestTransportValidatePolicyConfigurationScope(t *testing.T) { } func TestNewReference(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "ostreeNewReference") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() for _, c := range imageNameTestcases { for _, suffix := range repoSuffixes { @@ -161,9 +157,7 @@ func TestReferenceTransport(t *testing.T) { } func TestReferenceStringWithinTransport(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "ostreeStringWithinTransport") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() for _, c := range validReferenceTestCases { ref, err := Transport.ParseReference(withTmpDir(c.input, tmpDir)) @@ -179,9 +173,7 @@ func TestReferenceStringWithinTransport(t *testing.T) { } func TestReferenceDockerReference(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "ostreeDockerReference") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() for _, c := range validReferenceTestCases { ref, err := Transport.ParseReference(withTmpDir(c.input, tmpDir)) @@ -192,9 +184,7 @@ func TestReferenceDockerReference(t *testing.T) { } func TestReferencePolicyConfigurationIdentity(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "ostreePolicyConfigurationIdentity") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() for _, c := range validReferenceTestCases { ref, err := Transport.ParseReference(withTmpDir(c.input, tmpDir)) @@ -204,9 +194,7 @@ func TestReferencePolicyConfigurationIdentity(t *testing.T) { } func TestReferencePolicyConfigurationNamespaces(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "ostreePolicyConfigurationNamespaces") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() // Test both that DockerReferenceIdentity returns the expected value (fullName+suffix), // and that DockerReferenceNamespaces starts with the expected value (fullName), i.e. that the two functions are @@ -257,9 +245,7 @@ func TestReferenceNewImageSource(t *testing.T) { } func TestReferenceNewImageDestination(t *testing.T) { - otherTmpDir, err := ioutil.TempDir("", "ostree-transport-test") - require.NoError(t, err) - defer os.RemoveAll(otherTmpDir) + otherTmpDir := t.TempDir() for _, c := range []struct { sys *types.SystemContext @@ -281,9 +267,7 @@ func TestReferenceNewImageDestination(t *testing.T) { } func TestReferenceDeleteImage(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "ostreeDeleteImage") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() ref, err := Transport.ParseReference(withTmpDir("busybox@$TMP/this-repo-does-not-exist", tmpDir)) require.NoError(t, err) diff --git a/pkg/blobcache/blobcache_test.go b/pkg/blobcache/blobcache_test.go index 2393350c37..b9fad2606b 100644 --- a/pkg/blobcache/blobcache_test.go +++ b/pkg/blobcache/blobcache_test.go @@ -58,15 +58,7 @@ func makeLayer(filename string, repeat int, compression archive.Compression) ([] } func TestBlobCache(t *testing.T) { - cacheDir, err := ioutil.TempDir("", "blobcache") - if err != nil { - t.Fatalf("error creating persistent cache directory: %v", err) - } - defer func() { - if err := os.RemoveAll(cacheDir); err != nil { - t.Fatalf("error removing persistent cache directory %q: %v", cacheDir, err) - } - }() + cacheDir := t.TempDir() systemContext := types.SystemContext{} @@ -119,11 +111,7 @@ func TestBlobCache(t *testing.T) { t.Fatalf("error encoding image manifest: %v", err) } // Write this image to a "dir" destination with blob caching using this directory. - srcdir, err := ioutil.TempDir("", "blobcache-source") - if err != nil { - t.Fatalf("error creating temporary source directory: %v", err) - } - defer os.RemoveAll(srcdir) + srcdir := t.TempDir() srcRef, err := directory.NewReference(srcdir) if err != nil { t.Fatalf("error creating source image name reference for %q: %v", srcdir, err) @@ -215,11 +203,7 @@ func TestBlobCache(t *testing.T) { } // Now that we've deleted some of the contents, try to copy from the source image // to a second image. It should fail because the source is missing some blobs. - destdir, err := ioutil.TempDir("", "blobcache-destination") - if err != nil { - t.Fatalf("error creating temporary destination directory: %v", err) - } - defer os.RemoveAll(destdir) + destdir := t.TempDir() destRef, err := directory.NewReference(destdir) if err != nil { t.Fatalf("error creating destination image reference for %q: %v", destdir, err) diff --git a/pkg/blobinfocache/boltdb/boltdb_test.go b/pkg/blobinfocache/boltdb/boltdb_test.go index a91ab6d7dd..e53f6e9dd3 100644 --- a/pkg/blobinfocache/boltdb/boltdb_test.go +++ b/pkg/blobinfocache/boltdb/boltdb_test.go @@ -1,14 +1,11 @@ package boltdb import ( - "io/ioutil" - "os" "path/filepath" "testing" "github.com/containers/image/v5/internal/blobinfocache" "github.com/containers/image/v5/pkg/blobinfocache/internal/test" - "github.com/stretchr/testify/require" ) var _ blobinfocache.BlobInfoCache2 = &cache{} @@ -18,12 +15,8 @@ func newTestCache(t *testing.T) (blobinfocache.BlobInfoCache2, func(t *testing.T // an existing but empty file, and incorrectly fails without releasing the lock - which in turn causes // any future writes to hang. Creating a temporary directory allows us to use a path to a // non-existent file, thus replicating the expected conditions for creating a new DB. - dir, err := ioutil.TempDir("", "boltdb") - require.NoError(t, err) - return new2(filepath.Join(dir, "db")), func(t *testing.T) { - err = os.RemoveAll(dir) - require.NoError(t, err) - } + dir := t.TempDir() + return new2(filepath.Join(dir, "db")), func(t *testing.T) {} } func TestNew(t *testing.T) { diff --git a/pkg/blobinfocache/default_test.go b/pkg/blobinfocache/default_test.go index 3ade76fd9e..bc3ca8ebba 100644 --- a/pkg/blobinfocache/default_test.go +++ b/pkg/blobinfocache/default_test.go @@ -1,7 +1,6 @@ package blobinfocache import ( - "io/ioutil" "os" "path/filepath" "testing" @@ -115,9 +114,7 @@ func TestBlobInfoCacheDir(t *testing.T) { } func TestDefaultCache(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "TestDefaultCache") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() // Success normalDir := filepath.Join(tmpDir, "normal") @@ -152,7 +149,7 @@ func TestDefaultCache(t *testing.T) { // Error creating the parent directory: unwritableDir := filepath.Join(tmpDir, "unwritable") - err = os.Mkdir(unwritableDir, 0700) + err := os.Mkdir(unwritableDir, 0700) require.NoError(t, err) defer func() { err = os.Chmod(unwritableDir, 0700) // To make it possible to remove it again diff --git a/pkg/docker/config/config_test.go b/pkg/docker/config/config_test.go index 6bcac1690e..ab47aaac33 100644 --- a/pkg/docker/config/config_test.go +++ b/pkg/docker/config/config_test.go @@ -25,9 +25,7 @@ func TestGetPathToAuth(t *testing.T) { // on any state of the filesystem. darwinDefault := filepath.Join(os.Getenv("HOME"), ".config", "containers", "auth.json") - tmpDir, err := ioutil.TempDir("", "TestGetPathToAuth") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() // Environment is per-process, so this looks very unsafe; actually it seems fine because tests are not // run in parallel unless they opt in by calling t.Parallel(). So don’t do that. @@ -83,20 +81,11 @@ func TestGetPathToAuth(t *testing.T) { func TestGetAuth(t *testing.T) { origXDG := os.Getenv("XDG_RUNTIME_DIR") - tmpXDGRuntimeDir, err := ioutil.TempDir("", "test_docker_client_get_auth") - if err != nil { - t.Fatal(err) - } + tmpXDGRuntimeDir := t.TempDir() t.Logf("using temporary XDG_RUNTIME_DIR directory: %q", tmpXDGRuntimeDir) // override XDG_RUNTIME_DIR os.Setenv("XDG_RUNTIME_DIR", tmpXDGRuntimeDir) - defer func() { - err := os.RemoveAll(tmpXDGRuntimeDir) - if err != nil { - t.Logf("failed to cleanup temporary home directory %q: %v", tmpXDGRuntimeDir, err) - } - os.Setenv("XDG_RUNTIME_DIR", origXDG) - }() + defer os.Setenv("XDG_RUNTIME_DIR", origXDG) // override PATH for executing credHelper curtDir, err := os.Getwd() @@ -109,17 +98,8 @@ func TestGetAuth(t *testing.T) { os.Setenv("PATH", origPath) }() - tmpHomeDir, err := ioutil.TempDir("", "test_docker_client_get_auth") - if err != nil { - t.Fatal(err) - } + tmpHomeDir := t.TempDir() t.Logf("using temporary home directory: %q", tmpHomeDir) - defer func() { - err := os.RemoveAll(tmpHomeDir) - if err != nil { - t.Logf("failed to cleanup temporary home directory %q: %v", tmpHomeDir, err) - } - }() configDir1 := filepath.Join(tmpXDGRuntimeDir, "containers") if runtime.GOOS == "windows" || runtime.GOOS == "darwin" { @@ -339,17 +319,8 @@ func TestGetAuth(t *testing.T) { } func TestGetAuthFromLegacyFile(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "test_docker_client_get_auth") - if err != nil { - t.Fatal(err) - } + tmpDir := t.TempDir() t.Logf("using temporary home directory: %q", tmpDir) - defer func() { - err := os.RemoveAll(tmpDir) - if err != nil { - t.Logf("failed to cleanup temporary home directory %q: %v", tmpDir, err) - } - }() configPath := filepath.Join(tmpDir, ".dockercfg") contents, err := ioutil.ReadFile(filepath.Join("testdata", "legacy.json")) @@ -398,17 +369,8 @@ func TestGetAuthFromLegacyFile(t *testing.T) { } func TestGetAuthPreferNewConfig(t *testing.T) { - tmpDir, err := ioutil.TempDir("", "test_docker_client_get_auth") - if err != nil { - t.Fatal(err) - } + tmpDir := t.TempDir() t.Logf("using temporary home directory: %q", tmpDir) - defer func() { - err := os.RemoveAll(tmpDir) - if err != nil { - t.Logf("failed to cleanup temporary home directory %q: %v", tmpDir, err) - } - }() configDir := filepath.Join(tmpDir, ".docker") if err := os.Mkdir(configDir, 0750); err != nil { @@ -446,32 +408,14 @@ func TestGetAuthPreferNewConfig(t *testing.T) { func TestGetAuthFailsOnBadInput(t *testing.T) { origXDG := os.Getenv("XDG_RUNTIME_DIR") - tmpXDGRuntimeDir, err := ioutil.TempDir("", "test_docker_client_get_auth") - if err != nil { - t.Fatal(err) - } + tmpXDGRuntimeDir := t.TempDir() t.Logf("using temporary XDG_RUNTIME_DIR directory: %q", tmpXDGRuntimeDir) // override XDG_RUNTIME_DIR os.Setenv("XDG_RUNTIME_DIR", tmpXDGRuntimeDir) - defer func() { - err := os.RemoveAll(tmpXDGRuntimeDir) - if err != nil { - t.Logf("failed to cleanup temporary home directory %q: %v", tmpXDGRuntimeDir, err) - } - os.Setenv("XDG_RUNTIME_DIR", origXDG) - }() + defer os.Setenv("XDG_RUNTIME_DIR", origXDG) - tmpHomeDir, err := ioutil.TempDir("", "test_docker_client_get_auth") - if err != nil { - t.Fatal(err) - } + tmpHomeDir := t.TempDir() t.Logf("using temporary home directory: %q", tmpHomeDir) - defer func() { - err := os.RemoveAll(tmpHomeDir) - if err != nil { - t.Logf("failed to cleanup temporary home directory %q: %v", tmpHomeDir, err) - } - }() configDir := filepath.Join(tmpXDGRuntimeDir, "containers") if runtime.GOOS == "windows" || runtime.GOOS == "darwin" { @@ -901,9 +845,7 @@ func TestSetGetCredentials(t *testing.T) { password = "password" ) - tmpDir, err := ioutil.TempDir("", "auth-test-") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() for _, tc := range []struct { name string diff --git a/pkg/sysregistriesv2/system_registries_v2_test.go b/pkg/sysregistriesv2/system_registries_v2_test.go index 0c3f141b0e..6c6a29e807 100644 --- a/pkg/sysregistriesv2/system_registries_v2_test.go +++ b/pkg/sysregistriesv2/system_registries_v2_test.go @@ -226,9 +226,7 @@ func TestNewConfigWrapper(t *testing.T) { const nondefaultPath = "/this/is/not/the/default/registries.conf" const variableReference = "$HOME" const rootPrefix = "/root/prefix" - tempHome, err := ioutil.TempDir("", "tempHome") - require.NoError(t, err) - defer os.RemoveAll(tempHome) + tempHome := t.TempDir() var userRegistriesFile = filepath.FromSlash(".config/containers/registries.conf") userRegistriesFilePath := filepath.Join(tempHome, userRegistriesFile) diff --git a/pkg/tlsclientconfig/tlsclientconfig_test.go b/pkg/tlsclientconfig/tlsclientconfig_test.go index 979eb91ae5..3b65fe022f 100644 --- a/pkg/tlsclientconfig/tlsclientconfig_test.go +++ b/pkg/tlsclientconfig/tlsclientconfig_test.go @@ -5,7 +5,6 @@ import ( "crypto/x509" "crypto/x509/pkix" "encoding/asn1" - "io/ioutil" "os" "sort" "testing" @@ -93,11 +92,9 @@ func TestSetupCertificates(t *testing.T) { assert.Equal(t, &tls.Config{}, &tlsc) // Directory not accessible - unreadableDir, err := ioutil.TempDir("", "containers-image-tlsclientconfig") - require.NoError(t, err) + unreadableDir := t.TempDir() defer func() { _ = os.Chmod(unreadableDir, 0700) - _ = os.Remove(unreadableDir) }() err = os.Chmod(unreadableDir, 000) require.NoError(t, err) diff --git a/sif/transport_test.go b/sif/transport_test.go index 3ac6b79bde..c68dd045f5 100644 --- a/sif/transport_test.go +++ b/sif/transport_test.go @@ -49,11 +49,9 @@ func TestNewReference(t *testing.T) { // testNewReference is a test shared for Transport.ParseReference and NewReference. func testNewReference(t *testing.T, fn func(string) (types.ImageReference, error)) { - tmpDir, err := ioutil.TempDir("", "sif-transport-test") - require.NoError(t, err) - defer os.RemoveAll(tmpDir) + tmpDir := t.TempDir() tmpFile := filepath.Join(tmpDir, "image.sif") - err = ioutil.WriteFile(tmpFile, nil, 0600) + err := ioutil.WriteFile(tmpFile, nil, 0600) require.NoError(t, err) for _, file := range []string{ diff --git a/signature/mechanism_test.go b/signature/mechanism_test.go index a503223c25..4b5cf23dcf 100644 --- a/signature/mechanism_test.go +++ b/signature/mechanism_test.go @@ -63,9 +63,7 @@ func TestNewGPGSigningMechanismInDirectory(t *testing.T) { // Similarly, using a newly created empty directory makes TestKeyFingerprint // unavailable - emptyDir, err := ioutil.TempDir("", "signing-empty-directory") - require.NoError(t, err) - defer os.RemoveAll(emptyDir) + emptyDir := t.TempDir() mech, err = newGPGSigningMechanismInDirectory(emptyDir) require.NoError(t, err) defer mech.Close() @@ -77,9 +75,7 @@ func TestNewGPGSigningMechanismInDirectory(t *testing.T) { // If pubring.gpg is unreadable in the directory, either initializing // the mechanism fails (with openpgp), or it succeeds (sadly, gpgme) and // later verification fails. - unreadableDir, err := ioutil.TempDir("", "signing-unreadable-directory") - require.NoError(t, err) - defer os.RemoveAll(unreadableDir) + unreadableDir := t.TempDir() f, err := os.OpenFile(filepath.Join(unreadableDir, "pubring.gpg"), os.O_RDONLY|os.O_CREATE, 0000) require.NoError(t, err) f.Close() diff --git a/signature/policy_config_test.go b/signature/policy_config_test.go index 96141d7466..68890b275e 100644 --- a/signature/policy_config_test.go +++ b/signature/policy_config_test.go @@ -120,9 +120,7 @@ func TestDefaultPolicyPath(t *testing.T) { const nondefaultPath = "/this/is/not/the/default/path.json" const variableReference = "$HOME" const rootPrefix = "/root/prefix" - tempHome, err := ioutil.TempDir("", "tempHome") - require.NoError(t, err) - defer os.RemoveAll(tempHome) + tempHome := t.TempDir() userDefaultPolicyPath := filepath.Join(tempHome, userPolicyFile) for _, c := range []struct { diff --git a/signature/policy_eval_signedby_test.go b/signature/policy_eval_signedby_test.go index 34a52d1b2d..87a3d9a5bd 100644 --- a/signature/policy_eval_signedby_test.go +++ b/signature/policy_eval_signedby_test.go @@ -184,11 +184,9 @@ func TestPRSignedByIsSignatureAuthorAccepted(t *testing.T) { // createInvalidSigDir creates a directory suitable for dirImageMock, in which image.Signatures() // fails. -// The caller should eventually call os.RemoveAll on the returned path. func createInvalidSigDir(t *testing.T) string { - dir, err := ioutil.TempDir("", "skopeo-test-unreadable-signature") - require.NoError(t, err) - err = ioutil.WriteFile(path.Join(dir, "manifest.json"), []byte("{}"), 0644) + dir := t.TempDir() + err := ioutil.WriteFile(path.Join(dir, "manifest.json"), []byte("{}"), 0644) require.NoError(t, err) // Creating a 000-permissions file would work for unprivileged accounts, but root (in particular, // in the Docker container we use for testing) would still have access. So, create a symlink @@ -212,7 +210,6 @@ func TestPRSignedByIsRunningImageAllowed(t *testing.T) { // Error reading signatures invalidSigDir := createInvalidSigDir(t) - defer os.RemoveAll(invalidSigDir) image = dirImageMock(t, invalidSigDir, "testing/manifest:latest") pr, err = NewPRSignedByKeyPath(ktGPG, "fixtures/public-key.gpg", prm) require.NoError(t, err) diff --git a/signature/policy_eval_test.go b/signature/policy_eval_test.go index c56be7de08..db86f6f5af 100644 --- a/signature/policy_eval_test.go +++ b/signature/policy_eval_test.go @@ -3,7 +3,6 @@ package signature import ( "context" "fmt" - "os" "testing" "github.com/containers/image/v5/docker" @@ -355,7 +354,6 @@ func TestPolicyContextGetSignaturesWithAcceptedAuthor(t *testing.T) { // Error reading signatures. invalidSigDir := createInvalidSigDir(t) - defer os.RemoveAll(invalidSigDir) img = pcImageMock(t, invalidSigDir, "testing/manifest:latest") sigs, err = pc.GetSignaturesWithAcceptedAuthor(context.Background(), img) assert.Error(t, err) diff --git a/storage/storage_test.go b/storage/storage_test.go index ecfe9b2394..19cd0b3e25 100644 --- a/storage/storage_test.go +++ b/storage/storage_test.go @@ -37,12 +37,11 @@ import ( ) var ( - topwd = "" - _ types.ImageDestination = &storageImageDestination{} - _ private.ImageDestination = (*storageImageDestination)(nil) - _ types.ImageSource = &storageImageSource{} - _ types.ImageReference = &storageReference{} - _ types.ImageTransport = &storageTransport{} + _ types.ImageDestination = &storageImageDestination{} + _ private.ImageDestination = (*storageImageDestination)(nil) + _ types.ImageSource = &storageImageSource{} + _ types.ImageReference = &storageReference{} + _ types.ImageTransport = &storageTransport{} ) const ( @@ -53,31 +52,17 @@ func TestMain(m *testing.M) { if reexec.Init() { return } - wd, err := ioutil.TempDir("", "test.") - if err != nil { - os.Exit(1) - } - topwd = wd debug := false flag.BoolVar(&debug, "debug", false, "print debug statements") flag.Parse() if debug { logrus.SetLevel(logrus.DebugLevel) } - code := m.Run() - os.RemoveAll(wd) - os.Exit(code) + os.Exit(m.Run()) } func newStoreWithGraphDriverOptions(t *testing.T, options []string) storage.Store { - wd, err := ioutil.TempDir(topwd, "test.") - if err != nil { - t.Fatal(err) - } - err = os.MkdirAll(wd, 0700) - if err != nil { - t.Fatal(err) - } + wd := t.TempDir() run := filepath.Join(wd, "run") root := filepath.Join(wd, "root") Transport.SetDefaultUIDMap([]idtools.IDMap{{