9 "github.com/docker/docker/builder"
10 "github.com/docker/docker/pkg/archive"
11 "github.com/docker/docker/pkg/reexec"
12 "github.com/pkg/errors"
17 contents = "contents test"
24 func TestCloseRootDirectory(t *testing.T) {
25 contextDir, err := ioutil.TempDir("", "builder-tarsum-test")
26 defer os.RemoveAll(contextDir)
28 t.Fatalf("Error with creating temporary directory: %s", err)
31 src := makeTestArchiveContext(t, contextDir)
35 t.Fatalf("Error while executing Close: %s", err)
38 _, err = os.Stat(src.Root())
40 if !os.IsNotExist(err) {
41 t.Fatal("Directory should not exist at this point")
45 func TestHashFile(t *testing.T) {
46 contextDir, cleanup := createTestTempDir(t, "", "builder-tarsum-test")
49 createTestTempFile(t, contextDir, filename, contents, 0755)
51 tarSum := makeTestArchiveContext(t, contextDir)
53 sum, err := tarSum.Hash(filename)
56 t.Fatalf("Error when executing Stat: %s", err)
60 t.Fatalf("Hash returned empty sum")
63 expected := "1149ab94af7be6cc1da1335e398f24ee1cf4926b720044d229969dfc248ae7ec"
65 if actual := sum; expected != actual {
66 t.Fatalf("invalid checksum. expected %s, got %s", expected, actual)
70 func TestHashSubdir(t *testing.T) {
71 contextDir, cleanup := createTestTempDir(t, "", "builder-tarsum-test")
74 contextSubdir := filepath.Join(contextDir, "builder-tarsum-test-subdir")
75 err := os.Mkdir(contextSubdir, 0755)
77 t.Fatalf("Failed to make directory: %s", contextSubdir)
80 testFilename := createTestTempFile(t, contextSubdir, filename, contents, 0755)
82 tarSum := makeTestArchiveContext(t, contextDir)
84 relativePath, err := filepath.Rel(contextDir, testFilename)
87 t.Fatalf("Error when getting relative path: %s", err)
90 sum, err := tarSum.Hash(relativePath)
93 t.Fatalf("Error when executing Stat: %s", err)
97 t.Fatalf("Hash returned empty sum")
100 expected := "d7f8d6353dee4816f9134f4156bf6a9d470fdadfb5d89213721f7e86744a4e69"
102 if actual := sum; expected != actual {
103 t.Fatalf("invalid checksum. expected %s, got %s", expected, actual)
107 func TestStatNotExisting(t *testing.T) {
108 contextDir, cleanup := createTestTempDir(t, "", "builder-tarsum-test")
111 src := makeTestArchiveContext(t, contextDir)
112 _, err := src.Hash("not-existing")
113 if !os.IsNotExist(errors.Cause(err)) {
114 t.Fatalf("This file should not exist: %s", err)
118 func TestRemoveDirectory(t *testing.T) {
119 contextDir, cleanup := createTestTempDir(t, "", "builder-tarsum-test")
122 contextSubdir := createTestTempSubdir(t, contextDir, "builder-tarsum-test-subdir")
124 relativePath, err := filepath.Rel(contextDir, contextSubdir)
127 t.Fatalf("Error when getting relative path: %s", err)
130 src := makeTestArchiveContext(t, contextDir)
132 tarSum := src.(modifiableContext)
134 err = tarSum.Remove(relativePath)
136 t.Fatalf("Error when executing Remove: %s", err)
139 _, err = src.Hash(contextSubdir)
141 if !os.IsNotExist(errors.Cause(err)) {
142 t.Fatal("Directory should not exist at this point")
146 func makeTestArchiveContext(t *testing.T, dir string) builder.Source {
147 tarStream, err := archive.Tar(dir, archive.Uncompressed)
149 t.Fatalf("error: %s", err)
151 defer tarStream.Close()
152 tarSum, err := FromArchive(tarStream)
154 t.Fatalf("Error when executing FromArchive: %s", err)