github.com/moby/docker@v26.1.3+incompatible/pkg/directory/directory_test.go (about) 1 package directory // import "github.com/docker/docker/pkg/directory" 2 3 import ( 4 "context" 5 "os" 6 "testing" 7 ) 8 9 // Size of an empty directory should be 0 10 func TestSizeEmpty(t *testing.T) { 11 var dir string 12 var err error 13 if dir, err = os.MkdirTemp(os.TempDir(), "testSizeEmptyDirectory"); err != nil { 14 t.Fatalf("failed to create directory: %s", err) 15 } 16 17 var size int64 18 if size, _ = Size(context.Background(), dir); size != 0 { 19 t.Fatalf("empty directory has size: %d", size) 20 } 21 } 22 23 // Size of a directory with one empty file should be 0 24 func TestSizeEmptyFile(t *testing.T) { 25 var dir string 26 var err error 27 if dir, err = os.MkdirTemp(os.TempDir(), "testSizeEmptyFile"); err != nil { 28 t.Fatalf("failed to create directory: %s", err) 29 } 30 31 var file *os.File 32 if file, err = os.CreateTemp(dir, "file"); err != nil { 33 t.Fatalf("failed to create file: %s", err) 34 } 35 defer file.Close() 36 37 var size int64 38 if size, _ = Size(context.Background(), file.Name()); size != 0 { 39 t.Fatalf("directory with one file has size: %d", size) 40 } 41 } 42 43 // Size of a directory with one 5-byte file should be 5 44 func TestSizeNonemptyFile(t *testing.T) { 45 var dir string 46 var err error 47 if dir, err = os.MkdirTemp(os.TempDir(), "testSizeNonemptyFile"); err != nil { 48 t.Fatalf("failed to create directory: %s", err) 49 } 50 51 var file *os.File 52 if file, err = os.CreateTemp(dir, "file"); err != nil { 53 t.Fatalf("failed to create file: %s", err) 54 } 55 defer file.Close() 56 57 d := []byte{97, 98, 99, 100, 101} 58 file.Write(d) 59 60 var size int64 61 if size, _ = Size(context.Background(), file.Name()); size != 5 { 62 t.Fatalf("directory with one 5-byte file has size: %d", size) 63 } 64 } 65 66 // Size of a directory with one empty directory should be 0 67 func TestSizeNestedDirectoryEmpty(t *testing.T) { 68 var dir string 69 var err error 70 if dir, err = os.MkdirTemp(os.TempDir(), "testSizeNestedDirectoryEmpty"); err != nil { 71 t.Fatalf("failed to create directory: %s", err) 72 } 73 if dir, err = os.MkdirTemp(dir, "nested"); err != nil { 74 t.Fatalf("failed to create nested directory: %s", err) 75 } 76 77 var size int64 78 if size, _ = Size(context.Background(), dir); size != 0 { 79 t.Fatalf("directory with one empty directory has size: %d", size) 80 } 81 } 82 83 // Test directory with 1 file and 1 empty directory 84 func TestSizeFileAndNestedDirectoryEmpty(t *testing.T) { 85 var dir string 86 var err error 87 if dir, err = os.MkdirTemp(os.TempDir(), "testSizeFileAndNestedDirectoryEmpty"); err != nil { 88 t.Fatalf("failed to create directory: %s", err) 89 } 90 if dir, err = os.MkdirTemp(dir, "nested"); err != nil { 91 t.Fatalf("failed to create nested directory: %s", err) 92 } 93 94 var file *os.File 95 if file, err = os.CreateTemp(dir, "file"); err != nil { 96 t.Fatalf("failed to create file: %s", err) 97 } 98 defer file.Close() 99 100 d := []byte{100, 111, 99, 107, 101, 114} 101 file.Write(d) 102 103 var size int64 104 if size, _ = Size(context.Background(), dir); size != 6 { 105 t.Fatalf("directory with 6-byte file and empty directory has size: %d", size) 106 } 107 } 108 109 // Test directory with 1 file and 1 non-empty directory 110 func TestSizeFileAndNestedDirectoryNonempty(t *testing.T) { 111 var dir, dirNested string 112 var err error 113 if dir, err = os.MkdirTemp(os.TempDir(), "TestSizeFileAndNestedDirectoryNonempty"); err != nil { 114 t.Fatalf("failed to create directory: %s", err) 115 } 116 if dirNested, err = os.MkdirTemp(dir, "nested"); err != nil { 117 t.Fatalf("failed to create nested directory: %s", err) 118 } 119 120 var file *os.File 121 if file, err = os.CreateTemp(dir, "file"); err != nil { 122 t.Fatalf("failed to create file: %s", err) 123 } 124 defer file.Close() 125 126 data := []byte{100, 111, 99, 107, 101, 114} 127 file.Write(data) 128 129 var nestedFile *os.File 130 if nestedFile, err = os.CreateTemp(dirNested, "file"); err != nil { 131 t.Fatalf("failed to create file in nested directory: %s", err) 132 } 133 defer nestedFile.Close() 134 135 nestedData := []byte{100, 111, 99, 107, 101, 114} 136 nestedFile.Write(nestedData) 137 138 var size int64 139 if size, _ = Size(context.Background(), dir); size != 12 { 140 t.Fatalf("directory with 6-byte file and nested directory with 6-byte file has size: %d", size) 141 } 142 } 143 144 // Test a non-existing directory 145 func TestSizeNonExistingDirectory(t *testing.T) { 146 if _, err := Size(context.Background(), "/thisdirectoryshouldnotexist/TestSizeNonExistingDirectory"); err == nil { 147 t.Fatalf("error is expected") 148 } 149 }