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  }