Signed-off-by: yangshukui <yangshukui@huawei.com>
| ... | ... |
@@ -8,6 +8,7 @@ import ( |
| 8 | 8 |
"testing" |
| 9 | 9 |
|
| 10 | 10 |
"github.com/docker/docker/pkg/system" |
| 11 |
+ "github.com/stretchr/testify/require" |
|
| 11 | 12 |
"golang.org/x/sys/unix" |
| 12 | 13 |
) |
| 13 | 14 |
|
| ... | ... |
@@ -22,46 +23,37 @@ import ( |
| 22 | 22 |
// └── f1 # whiteout, 0644 |
| 23 | 23 |
func setupOverlayTestDir(t *testing.T, src string) {
|
| 24 | 24 |
// Create opaque directory containing single file and permission 0700 |
| 25 |
- if err := os.Mkdir(filepath.Join(src, "d1"), 0700); err != nil {
|
|
| 26 |
- t.Fatal(err) |
|
| 27 |
- } |
|
| 25 |
+ err := os.Mkdir(filepath.Join(src, "d1"), 0700) |
|
| 26 |
+ require.NoError(t, err) |
|
| 28 | 27 |
|
| 29 |
- if err := system.Lsetxattr(filepath.Join(src, "d1"), "trusted.overlay.opaque", []byte("y"), 0); err != nil {
|
|
| 30 |
- t.Fatal(err) |
|
| 31 |
- } |
|
| 28 |
+ err = system.Lsetxattr(filepath.Join(src, "d1"), "trusted.overlay.opaque", []byte("y"), 0)
|
|
| 29 |
+ require.NoError(t, err) |
|
| 32 | 30 |
|
| 33 |
- if err := ioutil.WriteFile(filepath.Join(src, "d1", "f1"), []byte{}, 0600); err != nil {
|
|
| 34 |
- t.Fatal(err) |
|
| 35 |
- } |
|
| 31 |
+ err = ioutil.WriteFile(filepath.Join(src, "d1", "f1"), []byte{}, 0600)
|
|
| 32 |
+ require.NoError(t, err) |
|
| 36 | 33 |
|
| 37 | 34 |
// Create another opaque directory containing single file but with permission 0750 |
| 38 |
- if err := os.Mkdir(filepath.Join(src, "d2"), 0750); err != nil {
|
|
| 39 |
- t.Fatal(err) |
|
| 40 |
- } |
|
| 35 |
+ err = os.Mkdir(filepath.Join(src, "d2"), 0750) |
|
| 36 |
+ require.NoError(t, err) |
|
| 41 | 37 |
|
| 42 |
- if err := system.Lsetxattr(filepath.Join(src, "d2"), "trusted.overlay.opaque", []byte("y"), 0); err != nil {
|
|
| 43 |
- t.Fatal(err) |
|
| 44 |
- } |
|
| 38 |
+ err = system.Lsetxattr(filepath.Join(src, "d2"), "trusted.overlay.opaque", []byte("y"), 0)
|
|
| 39 |
+ require.NoError(t, err) |
|
| 45 | 40 |
|
| 46 |
- if err := ioutil.WriteFile(filepath.Join(src, "d2", "f1"), []byte{}, 0660); err != nil {
|
|
| 47 |
- t.Fatal(err) |
|
| 48 |
- } |
|
| 41 |
+ err = ioutil.WriteFile(filepath.Join(src, "d2", "f1"), []byte{}, 0660)
|
|
| 42 |
+ require.NoError(t, err) |
|
| 49 | 43 |
|
| 50 | 44 |
// Create regular directory with deleted file |
| 51 |
- if err := os.Mkdir(filepath.Join(src, "d3"), 0700); err != nil {
|
|
| 52 |
- t.Fatal(err) |
|
| 53 |
- } |
|
| 45 |
+ err = os.Mkdir(filepath.Join(src, "d3"), 0700) |
|
| 46 |
+ require.NoError(t, err) |
|
| 54 | 47 |
|
| 55 |
- if err := system.Mknod(filepath.Join(src, "d3", "f1"), unix.S_IFCHR, 0); err != nil {
|
|
| 56 |
- t.Fatal(err) |
|
| 57 |
- } |
|
| 48 |
+ err = system.Mknod(filepath.Join(src, "d3", "f1"), unix.S_IFCHR, 0) |
|
| 49 |
+ require.NoError(t, err) |
|
| 58 | 50 |
} |
| 59 | 51 |
|
| 60 | 52 |
func checkOpaqueness(t *testing.T, path string, opaque string) {
|
| 61 | 53 |
xattrOpaque, err := system.Lgetxattr(path, "trusted.overlay.opaque") |
| 62 |
- if err != nil {
|
|
| 63 |
- t.Fatal(err) |
|
| 64 |
- } |
|
| 54 |
+ require.NoError(t, err) |
|
| 55 |
+ |
|
| 65 | 56 |
if string(xattrOpaque) != opaque {
|
| 66 | 57 |
t.Fatalf("Unexpected opaque value: %q, expected %q", string(xattrOpaque), opaque)
|
| 67 | 58 |
} |
| ... | ... |
@@ -70,9 +62,8 @@ func checkOpaqueness(t *testing.T, path string, opaque string) {
|
| 70 | 70 |
|
| 71 | 71 |
func checkOverlayWhiteout(t *testing.T, path string) {
|
| 72 | 72 |
stat, err := os.Stat(path) |
| 73 |
- if err != nil {
|
|
| 74 |
- t.Fatal(err) |
|
| 75 |
- } |
|
| 73 |
+ require.NoError(t, err) |
|
| 74 |
+ |
|
| 76 | 75 |
statT, ok := stat.Sys().(*syscall.Stat_t) |
| 77 | 76 |
if !ok {
|
| 78 | 77 |
t.Fatalf("Unexpected type: %t, expected *syscall.Stat_t", stat.Sys())
|
| ... | ... |
@@ -84,9 +75,8 @@ func checkOverlayWhiteout(t *testing.T, path string) {
|
| 84 | 84 |
|
| 85 | 85 |
func checkFileMode(t *testing.T, path string, perm os.FileMode) {
|
| 86 | 86 |
stat, err := os.Stat(path) |
| 87 |
- if err != nil {
|
|
| 88 |
- t.Fatal(err) |
|
| 89 |
- } |
|
| 87 |
+ require.NoError(t, err) |
|
| 88 |
+ |
|
| 90 | 89 |
if stat.Mode() != perm {
|
| 91 | 90 |
t.Fatalf("Unexpected file mode for %s: %o, expected %o", path, stat.Mode(), perm)
|
| 92 | 91 |
} |
| ... | ... |
@@ -94,23 +84,17 @@ func checkFileMode(t *testing.T, path string, perm os.FileMode) {
|
| 94 | 94 |
|
| 95 | 95 |
func TestOverlayTarUntar(t *testing.T) {
|
| 96 | 96 |
oldmask, err := system.Umask(0) |
| 97 |
- if err != nil {
|
|
| 98 |
- t.Fatal(err) |
|
| 99 |
- } |
|
| 97 |
+ require.NoError(t, err) |
|
| 100 | 98 |
defer system.Umask(oldmask) |
| 101 | 99 |
|
| 102 | 100 |
src, err := ioutil.TempDir("", "docker-test-overlay-tar-src")
|
| 103 |
- if err != nil {
|
|
| 104 |
- t.Fatal(err) |
|
| 105 |
- } |
|
| 101 |
+ require.NoError(t, err) |
|
| 106 | 102 |
defer os.RemoveAll(src) |
| 107 | 103 |
|
| 108 | 104 |
setupOverlayTestDir(t, src) |
| 109 | 105 |
|
| 110 | 106 |
dst, err := ioutil.TempDir("", "docker-test-overlay-tar-dst")
|
| 111 |
- if err != nil {
|
|
| 112 |
- t.Fatal(err) |
|
| 113 |
- } |
|
| 107 |
+ require.NoError(t, err) |
|
| 114 | 108 |
defer os.RemoveAll(dst) |
| 115 | 109 |
|
| 116 | 110 |
options := &TarOptions{
|
| ... | ... |
@@ -118,14 +102,11 @@ func TestOverlayTarUntar(t *testing.T) {
|
| 118 | 118 |
WhiteoutFormat: OverlayWhiteoutFormat, |
| 119 | 119 |
} |
| 120 | 120 |
archive, err := TarWithOptions(src, options) |
| 121 |
- if err != nil {
|
|
| 122 |
- t.Fatal(err) |
|
| 123 |
- } |
|
| 121 |
+ require.NoError(t, err) |
|
| 124 | 122 |
defer archive.Close() |
| 125 | 123 |
|
| 126 |
- if err := Untar(archive, dst, options); err != nil {
|
|
| 127 |
- t.Fatal(err) |
|
| 128 |
- } |
|
| 124 |
+ err = Untar(archive, dst, options) |
|
| 125 |
+ require.NoError(t, err) |
|
| 129 | 126 |
|
| 130 | 127 |
checkFileMode(t, filepath.Join(dst, "d1"), 0700|os.ModeDir) |
| 131 | 128 |
checkFileMode(t, filepath.Join(dst, "d2"), 0750|os.ModeDir) |
| ... | ... |
@@ -142,40 +123,31 @@ func TestOverlayTarUntar(t *testing.T) {
|
| 142 | 142 |
|
| 143 | 143 |
func TestOverlayTarAUFSUntar(t *testing.T) {
|
| 144 | 144 |
oldmask, err := system.Umask(0) |
| 145 |
- if err != nil {
|
|
| 146 |
- t.Fatal(err) |
|
| 147 |
- } |
|
| 145 |
+ require.NoError(t, err) |
|
| 148 | 146 |
defer system.Umask(oldmask) |
| 149 | 147 |
|
| 150 | 148 |
src, err := ioutil.TempDir("", "docker-test-overlay-tar-src")
|
| 151 |
- if err != nil {
|
|
| 152 |
- t.Fatal(err) |
|
| 153 |
- } |
|
| 149 |
+ require.NoError(t, err) |
|
| 154 | 150 |
defer os.RemoveAll(src) |
| 155 | 151 |
|
| 156 | 152 |
setupOverlayTestDir(t, src) |
| 157 | 153 |
|
| 158 | 154 |
dst, err := ioutil.TempDir("", "docker-test-overlay-tar-dst")
|
| 159 |
- if err != nil {
|
|
| 160 |
- t.Fatal(err) |
|
| 161 |
- } |
|
| 155 |
+ require.NoError(t, err) |
|
| 162 | 156 |
defer os.RemoveAll(dst) |
| 163 | 157 |
|
| 164 | 158 |
archive, err := TarWithOptions(src, &TarOptions{
|
| 165 | 159 |
Compression: Uncompressed, |
| 166 | 160 |
WhiteoutFormat: OverlayWhiteoutFormat, |
| 167 | 161 |
}) |
| 168 |
- if err != nil {
|
|
| 169 |
- t.Fatal(err) |
|
| 170 |
- } |
|
| 162 |
+ require.NoError(t, err) |
|
| 171 | 163 |
defer archive.Close() |
| 172 | 164 |
|
| 173 |
- if err := Untar(archive, dst, &TarOptions{
|
|
| 165 |
+ err = Untar(archive, dst, &TarOptions{
|
|
| 174 | 166 |
Compression: Uncompressed, |
| 175 | 167 |
WhiteoutFormat: AUFSWhiteoutFormat, |
| 176 |
- }); err != nil {
|
|
| 177 |
- t.Fatal(err) |
|
| 178 |
- } |
|
| 168 |
+ }) |
|
| 169 |
+ require.NoError(t, err) |
|
| 179 | 170 |
|
| 180 | 171 |
checkFileMode(t, filepath.Join(dst, "d1"), 0700|os.ModeDir) |
| 181 | 172 |
checkFileMode(t, filepath.Join(dst, "d1", WhiteoutOpaqueDir), 0700) |
| ... | ... |
@@ -263,9 +263,7 @@ func TestCmdStreamGood(t *testing.T) {
|
| 263 | 263 |
|
| 264 | 264 |
func TestUntarPathWithInvalidDest(t *testing.T) {
|
| 265 | 265 |
tempFolder, err := ioutil.TempDir("", "docker-archive-test")
|
| 266 |
- if err != nil {
|
|
| 267 |
- t.Fatal(err) |
|
| 268 |
- } |
|
| 266 |
+ require.NoError(t, err) |
|
| 269 | 267 |
defer os.RemoveAll(tempFolder) |
| 270 | 268 |
invalidDestFolder := filepath.Join(tempFolder, "invalidDest") |
| 271 | 269 |
// Create a src file |
| ... | ... |
@@ -284,9 +282,7 @@ func TestUntarPathWithInvalidDest(t *testing.T) {
|
| 284 | 284 |
|
| 285 | 285 |
cmd := exec.Command("sh", "-c", "tar cf "+tarFileU+" "+srcFileU)
|
| 286 | 286 |
_, err = cmd.CombinedOutput() |
| 287 |
- if err != nil {
|
|
| 288 |
- t.Fatal(err) |
|
| 289 |
- } |
|
| 287 |
+ require.NoError(t, err) |
|
| 290 | 288 |
|
| 291 | 289 |
err = defaultUntarPath(tarFile, invalidDestFolder) |
| 292 | 290 |
if err == nil {
|
| ... | ... |
@@ -308,9 +304,7 @@ func TestUntarPathWithInvalidSrc(t *testing.T) {
|
| 308 | 308 |
|
| 309 | 309 |
func TestUntarPath(t *testing.T) {
|
| 310 | 310 |
tmpFolder, err := ioutil.TempDir("", "docker-archive-test")
|
| 311 |
- if err != nil {
|
|
| 312 |
- t.Fatal(err) |
|
| 313 |
- } |
|
| 311 |
+ require.NoError(t, err) |
|
| 314 | 312 |
defer os.RemoveAll(tmpFolder) |
| 315 | 313 |
srcFile := filepath.Join(tmpFolder, "src") |
| 316 | 314 |
tarFile := filepath.Join(tmpFolder, "src.tar") |
| ... | ... |
@@ -331,9 +325,7 @@ func TestUntarPath(t *testing.T) {
|
| 331 | 331 |
} |
| 332 | 332 |
cmd := exec.Command("sh", "-c", "tar cf "+tarFileU+" "+srcFileU)
|
| 333 | 333 |
_, err = cmd.CombinedOutput() |
| 334 |
- if err != nil {
|
|
| 335 |
- t.Fatal(err) |
|
| 336 |
- } |
|
| 334 |
+ require.NoError(t, err) |
|
| 337 | 335 |
|
| 338 | 336 |
err = defaultUntarPath(tarFile, destFolder) |
| 339 | 337 |
if err != nil {
|
| ... | ... |
@@ -13,6 +13,8 @@ import ( |
| 13 | 13 |
"testing" |
| 14 | 14 |
|
| 15 | 15 |
"github.com/docker/docker/pkg/system" |
| 16 |
+ "github.com/stretchr/testify/assert" |
|
| 17 |
+ "github.com/stretchr/testify/require" |
|
| 16 | 18 |
"golang.org/x/sys/unix" |
| 17 | 19 |
) |
| 18 | 20 |
|
| ... | ... |
@@ -70,113 +72,89 @@ func TestChmodTarEntry(t *testing.T) {
|
| 70 | 70 |
|
| 71 | 71 |
func TestTarWithHardLink(t *testing.T) {
|
| 72 | 72 |
origin, err := ioutil.TempDir("", "docker-test-tar-hardlink")
|
| 73 |
- if err != nil {
|
|
| 74 |
- t.Fatal(err) |
|
| 75 |
- } |
|
| 73 |
+ require.NoError(t, err) |
|
| 76 | 74 |
defer os.RemoveAll(origin) |
| 77 |
- if err := ioutil.WriteFile(filepath.Join(origin, "1"), []byte("hello world"), 0700); err != nil {
|
|
| 78 |
- t.Fatal(err) |
|
| 79 |
- } |
|
| 80 |
- if err := os.Link(filepath.Join(origin, "1"), filepath.Join(origin, "2")); err != nil {
|
|
| 81 |
- t.Fatal(err) |
|
| 82 |
- } |
|
| 75 |
+ |
|
| 76 |
+ err = ioutil.WriteFile(filepath.Join(origin, "1"), []byte("hello world"), 0700)
|
|
| 77 |
+ require.NoError(t, err) |
|
| 78 |
+ |
|
| 79 |
+ err = os.Link(filepath.Join(origin, "1"), filepath.Join(origin, "2")) |
|
| 80 |
+ require.NoError(t, err) |
|
| 83 | 81 |
|
| 84 | 82 |
var i1, i2 uint64 |
| 85 |
- if i1, err = getNlink(filepath.Join(origin, "1")); err != nil {
|
|
| 86 |
- t.Fatal(err) |
|
| 87 |
- } |
|
| 83 |
+ i1, err = getNlink(filepath.Join(origin, "1")) |
|
| 84 |
+ require.NoError(t, err) |
|
| 85 |
+ |
|
| 88 | 86 |
// sanity check that we can hardlink |
| 89 | 87 |
if i1 != 2 {
|
| 90 | 88 |
t.Skipf("skipping since hardlinks don't work here; expected 2 links, got %d", i1)
|
| 91 | 89 |
} |
| 92 | 90 |
|
| 93 | 91 |
dest, err := ioutil.TempDir("", "docker-test-tar-hardlink-dest")
|
| 94 |
- if err != nil {
|
|
| 95 |
- t.Fatal(err) |
|
| 96 |
- } |
|
| 92 |
+ require.NoError(t, err) |
|
| 97 | 93 |
defer os.RemoveAll(dest) |
| 98 | 94 |
|
| 99 | 95 |
// we'll do this in two steps to separate failure |
| 100 | 96 |
fh, err := Tar(origin, Uncompressed) |
| 101 |
- if err != nil {
|
|
| 102 |
- t.Fatal(err) |
|
| 103 |
- } |
|
| 97 |
+ require.NoError(t, err) |
|
| 104 | 98 |
|
| 105 | 99 |
// ensure we can read the whole thing with no error, before writing back out |
| 106 | 100 |
buf, err := ioutil.ReadAll(fh) |
| 107 |
- if err != nil {
|
|
| 108 |
- t.Fatal(err) |
|
| 109 |
- } |
|
| 101 |
+ require.NoError(t, err) |
|
| 110 | 102 |
|
| 111 | 103 |
bRdr := bytes.NewReader(buf) |
| 112 | 104 |
err = Untar(bRdr, dest, &TarOptions{Compression: Uncompressed})
|
| 113 |
- if err != nil {
|
|
| 114 |
- t.Fatal(err) |
|
| 115 |
- } |
|
| 105 |
+ require.NoError(t, err) |
|
| 116 | 106 |
|
| 117 |
- if i1, err = getInode(filepath.Join(dest, "1")); err != nil {
|
|
| 118 |
- t.Fatal(err) |
|
| 119 |
- } |
|
| 120 |
- if i2, err = getInode(filepath.Join(dest, "2")); err != nil {
|
|
| 121 |
- t.Fatal(err) |
|
| 122 |
- } |
|
| 107 |
+ i1, err = getInode(filepath.Join(dest, "1")) |
|
| 108 |
+ require.NoError(t, err) |
|
| 123 | 109 |
|
| 124 |
- if i1 != i2 {
|
|
| 125 |
- t.Errorf("expected matching inodes, but got %d and %d", i1, i2)
|
|
| 126 |
- } |
|
| 110 |
+ i2, err = getInode(filepath.Join(dest, "2")) |
|
| 111 |
+ require.NoError(t, err) |
|
| 112 |
+ |
|
| 113 |
+ assert.Equal(t, i1, i2) |
|
| 127 | 114 |
} |
| 128 | 115 |
|
| 129 | 116 |
func TestTarWithHardLinkAndRebase(t *testing.T) {
|
| 130 | 117 |
tmpDir, err := ioutil.TempDir("", "docker-test-tar-hardlink-rebase")
|
| 131 |
- if err != nil {
|
|
| 132 |
- t.Fatal(err) |
|
| 133 |
- } |
|
| 118 |
+ require.NoError(t, err) |
|
| 134 | 119 |
defer os.RemoveAll(tmpDir) |
| 135 | 120 |
|
| 136 | 121 |
origin := filepath.Join(tmpDir, "origin") |
| 137 |
- if err := os.Mkdir(origin, 0700); err != nil {
|
|
| 138 |
- t.Fatal(err) |
|
| 139 |
- } |
|
| 140 |
- if err := ioutil.WriteFile(filepath.Join(origin, "1"), []byte("hello world"), 0700); err != nil {
|
|
| 141 |
- t.Fatal(err) |
|
| 142 |
- } |
|
| 143 |
- if err := os.Link(filepath.Join(origin, "1"), filepath.Join(origin, "2")); err != nil {
|
|
| 144 |
- t.Fatal(err) |
|
| 145 |
- } |
|
| 122 |
+ err = os.Mkdir(origin, 0700) |
|
| 123 |
+ require.NoError(t, err) |
|
| 124 |
+ |
|
| 125 |
+ err = ioutil.WriteFile(filepath.Join(origin, "1"), []byte("hello world"), 0700)
|
|
| 126 |
+ require.NoError(t, err) |
|
| 127 |
+ |
|
| 128 |
+ err = os.Link(filepath.Join(origin, "1"), filepath.Join(origin, "2")) |
|
| 129 |
+ require.NoError(t, err) |
|
| 146 | 130 |
|
| 147 | 131 |
var i1, i2 uint64 |
| 148 |
- if i1, err = getNlink(filepath.Join(origin, "1")); err != nil {
|
|
| 149 |
- t.Fatal(err) |
|
| 150 |
- } |
|
| 132 |
+ i1, err = getNlink(filepath.Join(origin, "1")) |
|
| 133 |
+ require.NoError(t, err) |
|
| 134 |
+ |
|
| 151 | 135 |
// sanity check that we can hardlink |
| 152 | 136 |
if i1 != 2 {
|
| 153 | 137 |
t.Skipf("skipping since hardlinks don't work here; expected 2 links, got %d", i1)
|
| 154 | 138 |
} |
| 155 | 139 |
|
| 156 | 140 |
dest := filepath.Join(tmpDir, "dest") |
| 157 |
- |
|
| 158 | 141 |
bRdr, err := TarResourceRebase(origin, "origin") |
| 159 |
- if err != nil {
|
|
| 160 |
- t.Fatal(err) |
|
| 161 |
- } |
|
| 142 |
+ require.NoError(t, err) |
|
| 143 |
+ |
|
| 162 | 144 |
dstDir, srcBase := SplitPathDirEntry(origin) |
| 163 | 145 |
_, dstBase := SplitPathDirEntry(dest) |
| 164 | 146 |
content := RebaseArchiveEntries(bRdr, srcBase, dstBase) |
| 165 | 147 |
err = Untar(content, dstDir, &TarOptions{Compression: Uncompressed, NoLchown: true, NoOverwriteDirNonDir: true})
|
| 166 |
- if err != nil {
|
|
| 167 |
- t.Fatal(err) |
|
| 168 |
- } |
|
| 148 |
+ require.NoError(t, err) |
|
| 169 | 149 |
|
| 170 |
- if i1, err = getInode(filepath.Join(dest, "1")); err != nil {
|
|
| 171 |
- t.Fatal(err) |
|
| 172 |
- } |
|
| 173 |
- if i2, err = getInode(filepath.Join(dest, "2")); err != nil {
|
|
| 174 |
- t.Fatal(err) |
|
| 175 |
- } |
|
| 150 |
+ i1, err = getInode(filepath.Join(dest, "1")) |
|
| 151 |
+ require.NoError(t, err) |
|
| 152 |
+ i2, err = getInode(filepath.Join(dest, "2")) |
|
| 153 |
+ require.NoError(t, err) |
|
| 176 | 154 |
|
| 177 |
- if i1 != i2 {
|
|
| 178 |
- t.Errorf("expected matching inodes, but got %d and %d", i1, i2)
|
|
| 179 |
- } |
|
| 155 |
+ assert.Equal(t, i1, i2) |
|
| 180 | 156 |
} |
| 181 | 157 |
|
| 182 | 158 |
func getNlink(path string) (uint64, error) {
|
| ... | ... |
@@ -206,51 +184,38 @@ func getInode(path string) (uint64, error) {
|
| 206 | 206 |
|
| 207 | 207 |
func TestTarWithBlockCharFifo(t *testing.T) {
|
| 208 | 208 |
origin, err := ioutil.TempDir("", "docker-test-tar-hardlink")
|
| 209 |
- if err != nil {
|
|
| 210 |
- t.Fatal(err) |
|
| 211 |
- } |
|
| 209 |
+ require.NoError(t, err) |
|
| 210 |
+ |
|
| 212 | 211 |
defer os.RemoveAll(origin) |
| 213 |
- if err := ioutil.WriteFile(filepath.Join(origin, "1"), []byte("hello world"), 0700); err != nil {
|
|
| 214 |
- t.Fatal(err) |
|
| 215 |
- } |
|
| 216 |
- if err := system.Mknod(filepath.Join(origin, "2"), unix.S_IFBLK, int(system.Mkdev(int64(12), int64(5)))); err != nil {
|
|
| 217 |
- t.Fatal(err) |
|
| 218 |
- } |
|
| 219 |
- if err := system.Mknod(filepath.Join(origin, "3"), unix.S_IFCHR, int(system.Mkdev(int64(12), int64(5)))); err != nil {
|
|
| 220 |
- t.Fatal(err) |
|
| 221 |
- } |
|
| 222 |
- if err := system.Mknod(filepath.Join(origin, "4"), unix.S_IFIFO, int(system.Mkdev(int64(12), int64(5)))); err != nil {
|
|
| 223 |
- t.Fatal(err) |
|
| 224 |
- } |
|
| 212 |
+ err = ioutil.WriteFile(filepath.Join(origin, "1"), []byte("hello world"), 0700)
|
|
| 213 |
+ require.NoError(t, err) |
|
| 214 |
+ |
|
| 215 |
+ err = system.Mknod(filepath.Join(origin, "2"), unix.S_IFBLK, int(system.Mkdev(int64(12), int64(5)))) |
|
| 216 |
+ require.NoError(t, err) |
|
| 217 |
+ err = system.Mknod(filepath.Join(origin, "3"), unix.S_IFCHR, int(system.Mkdev(int64(12), int64(5)))) |
|
| 218 |
+ require.NoError(t, err) |
|
| 219 |
+ err = system.Mknod(filepath.Join(origin, "4"), unix.S_IFIFO, int(system.Mkdev(int64(12), int64(5)))) |
|
| 220 |
+ require.NoError(t, err) |
|
| 225 | 221 |
|
| 226 | 222 |
dest, err := ioutil.TempDir("", "docker-test-tar-hardlink-dest")
|
| 227 |
- if err != nil {
|
|
| 228 |
- t.Fatal(err) |
|
| 229 |
- } |
|
| 223 |
+ require.NoError(t, err) |
|
| 230 | 224 |
defer os.RemoveAll(dest) |
| 231 | 225 |
|
| 232 | 226 |
// we'll do this in two steps to separate failure |
| 233 | 227 |
fh, err := Tar(origin, Uncompressed) |
| 234 |
- if err != nil {
|
|
| 235 |
- t.Fatal(err) |
|
| 236 |
- } |
|
| 228 |
+ require.NoError(t, err) |
|
| 237 | 229 |
|
| 238 | 230 |
// ensure we can read the whole thing with no error, before writing back out |
| 239 | 231 |
buf, err := ioutil.ReadAll(fh) |
| 240 |
- if err != nil {
|
|
| 241 |
- t.Fatal(err) |
|
| 242 |
- } |
|
| 232 |
+ require.NoError(t, err) |
|
| 243 | 233 |
|
| 244 | 234 |
bRdr := bytes.NewReader(buf) |
| 245 | 235 |
err = Untar(bRdr, dest, &TarOptions{Compression: Uncompressed})
|
| 246 |
- if err != nil {
|
|
| 247 |
- t.Fatal(err) |
|
| 248 |
- } |
|
| 236 |
+ require.NoError(t, err) |
|
| 249 | 237 |
|
| 250 | 238 |
changes, err := ChangesDirs(origin, dest) |
| 251 |
- if err != nil {
|
|
| 252 |
- t.Fatal(err) |
|
| 253 |
- } |
|
| 239 |
+ require.NoError(t, err) |
|
| 240 |
+ |
|
| 254 | 241 |
if len(changes) > 0 {
|
| 255 | 242 |
t.Fatalf("Tar with special device (block, char, fifo) should keep them (recreate them when untar) : %v", changes)
|
| 256 | 243 |
} |
| ... | ... |
@@ -262,22 +227,17 @@ func TestTarUntarWithXattr(t *testing.T) {
|
| 262 | 262 |
t.Skip() |
| 263 | 263 |
} |
| 264 | 264 |
origin, err := ioutil.TempDir("", "docker-test-untar-origin")
|
| 265 |
- if err != nil {
|
|
| 266 |
- t.Fatal(err) |
|
| 267 |
- } |
|
| 265 |
+ require.NoError(t, err) |
|
| 268 | 266 |
defer os.RemoveAll(origin) |
| 269 |
- if err := ioutil.WriteFile(filepath.Join(origin, "1"), []byte("hello world"), 0700); err != nil {
|
|
| 270 |
- t.Fatal(err) |
|
| 271 |
- } |
|
| 272 |
- if err := ioutil.WriteFile(filepath.Join(origin, "2"), []byte("welcome!"), 0700); err != nil {
|
|
| 273 |
- t.Fatal(err) |
|
| 274 |
- } |
|
| 275 |
- if err := ioutil.WriteFile(filepath.Join(origin, "3"), []byte("will be ignored"), 0700); err != nil {
|
|
| 276 |
- t.Fatal(err) |
|
| 277 |
- } |
|
| 278 |
- if err := system.Lsetxattr(filepath.Join(origin, "2"), "security.capability", []byte{0x00}, 0); err != nil {
|
|
| 279 |
- t.Fatal(err) |
|
| 280 |
- } |
|
| 267 |
+ err = ioutil.WriteFile(filepath.Join(origin, "1"), []byte("hello world"), 0700)
|
|
| 268 |
+ require.NoError(t, err) |
|
| 269 |
+ |
|
| 270 |
+ err = ioutil.WriteFile(filepath.Join(origin, "2"), []byte("welcome!"), 0700)
|
|
| 271 |
+ require.NoError(t, err) |
|
| 272 |
+ err = ioutil.WriteFile(filepath.Join(origin, "3"), []byte("will be ignored"), 0700)
|
|
| 273 |
+ require.NoError(t, err) |
|
| 274 |
+ err = system.Lsetxattr(filepath.Join(origin, "2"), "security.capability", []byte{0x00}, 0)
|
|
| 275 |
+ require.NoError(t, err) |
|
| 281 | 276 |
|
| 282 | 277 |
for _, c := range []Compression{
|
| 283 | 278 |
Uncompressed, |
| ... | ... |
@@ -11,6 +11,7 @@ import ( |
| 11 | 11 |
"time" |
| 12 | 12 |
|
| 13 | 13 |
"github.com/docker/docker/pkg/system" |
| 14 |
+ "github.com/stretchr/testify/require" |
|
| 14 | 15 |
) |
| 15 | 16 |
|
| 16 | 17 |
func max(x, y int) int {
|
| ... | ... |
@@ -79,24 +80,20 @@ func createSampleDir(t *testing.T, root string) {
|
| 79 | 79 |
for _, info := range files {
|
| 80 | 80 |
p := path.Join(root, info.path) |
| 81 | 81 |
if info.filetype == Dir {
|
| 82 |
- if err := os.MkdirAll(p, info.permissions); err != nil {
|
|
| 83 |
- t.Fatal(err) |
|
| 84 |
- } |
|
| 82 |
+ err := os.MkdirAll(p, info.permissions) |
|
| 83 |
+ require.NoError(t, err) |
|
| 85 | 84 |
} else if info.filetype == Regular {
|
| 86 |
- if err := ioutil.WriteFile(p, []byte(info.contents), info.permissions); err != nil {
|
|
| 87 |
- t.Fatal(err) |
|
| 88 |
- } |
|
| 85 |
+ err := ioutil.WriteFile(p, []byte(info.contents), info.permissions) |
|
| 86 |
+ require.NoError(t, err) |
|
| 89 | 87 |
} else if info.filetype == Symlink {
|
| 90 |
- if err := os.Symlink(info.contents, p); err != nil {
|
|
| 91 |
- t.Fatal(err) |
|
| 92 |
- } |
|
| 88 |
+ err := os.Symlink(info.contents, p) |
|
| 89 |
+ require.NoError(t, err) |
|
| 93 | 90 |
} |
| 94 | 91 |
|
| 95 | 92 |
if info.filetype != Symlink {
|
| 96 | 93 |
// Set a consistent ctime, atime for all files and dirs |
| 97 |
- if err := system.Chtimes(p, now, now); err != nil {
|
|
| 98 |
- t.Fatal(err) |
|
| 99 |
- } |
|
| 94 |
+ err := system.Chtimes(p, now, now) |
|
| 95 |
+ require.NoError(t, err) |
|
| 100 | 96 |
} |
| 101 | 97 |
} |
| 102 | 98 |
} |
| ... | ... |
@@ -126,20 +123,14 @@ func TestChangesWithNoChanges(t *testing.T) {
|
| 126 | 126 |
t.Skip("symlinks on Windows")
|
| 127 | 127 |
} |
| 128 | 128 |
rwLayer, err := ioutil.TempDir("", "docker-changes-test")
|
| 129 |
- if err != nil {
|
|
| 130 |
- t.Fatal(err) |
|
| 131 |
- } |
|
| 129 |
+ require.NoError(t, err) |
|
| 132 | 130 |
defer os.RemoveAll(rwLayer) |
| 133 | 131 |
layer, err := ioutil.TempDir("", "docker-changes-test-layer")
|
| 134 |
- if err != nil {
|
|
| 135 |
- t.Fatal(err) |
|
| 136 |
- } |
|
| 132 |
+ require.NoError(t, err) |
|
| 137 | 133 |
defer os.RemoveAll(layer) |
| 138 | 134 |
createSampleDir(t, layer) |
| 139 | 135 |
changes, err := Changes([]string{layer}, rwLayer)
|
| 140 |
- if err != nil {
|
|
| 141 |
- t.Fatal(err) |
|
| 142 |
- } |
|
| 136 |
+ require.NoError(t, err) |
|
| 143 | 137 |
if len(changes) != 0 {
|
| 144 | 138 |
t.Fatalf("Changes with no difference should have detect no changes, but detected %d", len(changes))
|
| 145 | 139 |
} |
| ... | ... |
@@ -153,18 +144,14 @@ func TestChangesWithChanges(t *testing.T) {
|
| 153 | 153 |
} |
| 154 | 154 |
// Mock the readonly layer |
| 155 | 155 |
layer, err := ioutil.TempDir("", "docker-changes-test-layer")
|
| 156 |
- if err != nil {
|
|
| 157 |
- t.Fatal(err) |
|
| 158 |
- } |
|
| 156 |
+ require.NoError(t, err) |
|
| 159 | 157 |
defer os.RemoveAll(layer) |
| 160 | 158 |
createSampleDir(t, layer) |
| 161 | 159 |
os.MkdirAll(path.Join(layer, "dir1/subfolder"), 0740) |
| 162 | 160 |
|
| 163 | 161 |
// Mock the RW layer |
| 164 | 162 |
rwLayer, err := ioutil.TempDir("", "docker-changes-test")
|
| 165 |
- if err != nil {
|
|
| 166 |
- t.Fatal(err) |
|
| 167 |
- } |
|
| 163 |
+ require.NoError(t, err) |
|
| 168 | 164 |
defer os.RemoveAll(rwLayer) |
| 169 | 165 |
|
| 170 | 166 |
// Create a folder in RW layer |
| ... | ... |
@@ -181,9 +168,7 @@ func TestChangesWithChanges(t *testing.T) {
|
| 181 | 181 |
ioutil.WriteFile(newFile, []byte{}, 0740)
|
| 182 | 182 |
|
| 183 | 183 |
changes, err := Changes([]string{layer}, rwLayer)
|
| 184 |
- if err != nil {
|
|
| 185 |
- t.Fatal(err) |
|
| 186 |
- } |
|
| 184 |
+ require.NoError(t, err) |
|
| 187 | 185 |
|
| 188 | 186 |
expectedChanges := []Change{
|
| 189 | 187 |
{"/dir1", ChangeModify},
|
| ... | ... |
@@ -224,9 +209,7 @@ func TestChangesWithChangesGH13590(t *testing.T) {
|
| 224 | 224 |
ioutil.WriteFile(file, []byte("bye"), 0666)
|
| 225 | 225 |
|
| 226 | 226 |
changes, err := Changes([]string{baseLayer}, layer)
|
| 227 |
- if err != nil {
|
|
| 228 |
- t.Fatal(err) |
|
| 229 |
- } |
|
| 227 |
+ require.NoError(t, err) |
|
| 230 | 228 |
|
| 231 | 229 |
expectedChanges := []Change{
|
| 232 | 230 |
{"/dir1/dir2/dir3", ChangeModify},
|
| ... | ... |
@@ -246,9 +229,7 @@ func TestChangesWithChangesGH13590(t *testing.T) {
|
| 246 | 246 |
ioutil.WriteFile(file, []byte("bye"), 0666)
|
| 247 | 247 |
|
| 248 | 248 |
changes, err = Changes([]string{baseLayer}, layer)
|
| 249 |
- if err != nil {
|
|
| 250 |
- t.Fatal(err) |
|
| 251 |
- } |
|
| 249 |
+ require.NoError(t, err) |
|
| 252 | 250 |
|
| 253 | 251 |
expectedChanges = []Change{
|
| 254 | 252 |
{"/dir1/dir2/dir3/file.txt", ChangeModify},
|
| ... | ... |
@@ -265,20 +246,15 @@ func TestChangesDirsEmpty(t *testing.T) {
|
| 265 | 265 |
t.Skip("symlinks on Windows; gcp failure on Solaris")
|
| 266 | 266 |
} |
| 267 | 267 |
src, err := ioutil.TempDir("", "docker-changes-test")
|
| 268 |
- if err != nil {
|
|
| 269 |
- t.Fatal(err) |
|
| 270 |
- } |
|
| 268 |
+ require.NoError(t, err) |
|
| 271 | 269 |
defer os.RemoveAll(src) |
| 272 | 270 |
createSampleDir(t, src) |
| 273 | 271 |
dst := src + "-copy" |
| 274 |
- if err := copyDir(src, dst); err != nil {
|
|
| 275 |
- t.Fatal(err) |
|
| 276 |
- } |
|
| 272 |
+ err = copyDir(src, dst) |
|
| 273 |
+ require.NoError(t, err) |
|
| 277 | 274 |
defer os.RemoveAll(dst) |
| 278 | 275 |
changes, err := ChangesDirs(dst, src) |
| 279 |
- if err != nil {
|
|
| 280 |
- t.Fatal(err) |
|
| 281 |
- } |
|
| 276 |
+ require.NoError(t, err) |
|
| 282 | 277 |
|
| 283 | 278 |
if len(changes) != 0 {
|
| 284 | 279 |
t.Fatalf("Reported changes for identical dirs: %v", changes)
|
| ... | ... |
@@ -289,81 +265,65 @@ func TestChangesDirsEmpty(t *testing.T) {
|
| 289 | 289 |
|
| 290 | 290 |
func mutateSampleDir(t *testing.T, root string) {
|
| 291 | 291 |
// Remove a regular file |
| 292 |
- if err := os.RemoveAll(path.Join(root, "file1")); err != nil {
|
|
| 293 |
- t.Fatal(err) |
|
| 294 |
- } |
|
| 292 |
+ err := os.RemoveAll(path.Join(root, "file1")) |
|
| 293 |
+ require.NoError(t, err) |
|
| 295 | 294 |
|
| 296 | 295 |
// Remove a directory |
| 297 |
- if err := os.RemoveAll(path.Join(root, "dir1")); err != nil {
|
|
| 298 |
- t.Fatal(err) |
|
| 299 |
- } |
|
| 296 |
+ err = os.RemoveAll(path.Join(root, "dir1")) |
|
| 297 |
+ require.NoError(t, err) |
|
| 300 | 298 |
|
| 301 | 299 |
// Remove a symlink |
| 302 |
- if err := os.RemoveAll(path.Join(root, "symlink1")); err != nil {
|
|
| 303 |
- t.Fatal(err) |
|
| 304 |
- } |
|
| 300 |
+ err = os.RemoveAll(path.Join(root, "symlink1")) |
|
| 301 |
+ require.NoError(t, err) |
|
| 305 | 302 |
|
| 306 | 303 |
// Rewrite a file |
| 307 |
- if err := ioutil.WriteFile(path.Join(root, "file2"), []byte("fileNN\n"), 0777); err != nil {
|
|
| 308 |
- t.Fatal(err) |
|
| 309 |
- } |
|
| 304 |
+ err = ioutil.WriteFile(path.Join(root, "file2"), []byte("fileNN\n"), 0777)
|
|
| 305 |
+ require.NoError(t, err) |
|
| 310 | 306 |
|
| 311 | 307 |
// Replace a file |
| 312 |
- if err := os.RemoveAll(path.Join(root, "file3")); err != nil {
|
|
| 313 |
- t.Fatal(err) |
|
| 314 |
- } |
|
| 315 |
- if err := ioutil.WriteFile(path.Join(root, "file3"), []byte("fileMM\n"), 0404); err != nil {
|
|
| 316 |
- t.Fatal(err) |
|
| 317 |
- } |
|
| 308 |
+ err = os.RemoveAll(path.Join(root, "file3")) |
|
| 309 |
+ require.NoError(t, err) |
|
| 310 |
+ err = ioutil.WriteFile(path.Join(root, "file3"), []byte("fileMM\n"), 0404)
|
|
| 311 |
+ require.NoError(t, err) |
|
| 318 | 312 |
|
| 319 | 313 |
// Touch file |
| 320 |
- if err := system.Chtimes(path.Join(root, "file4"), time.Now().Add(time.Second), time.Now().Add(time.Second)); err != nil {
|
|
| 321 |
- t.Fatal(err) |
|
| 322 |
- } |
|
| 314 |
+ err = system.Chtimes(path.Join(root, "file4"), time.Now().Add(time.Second), time.Now().Add(time.Second)) |
|
| 315 |
+ require.NoError(t, err) |
|
| 323 | 316 |
|
| 324 | 317 |
// Replace file with dir |
| 325 |
- if err := os.RemoveAll(path.Join(root, "file5")); err != nil {
|
|
| 326 |
- t.Fatal(err) |
|
| 327 |
- } |
|
| 328 |
- if err := os.MkdirAll(path.Join(root, "file5"), 0666); err != nil {
|
|
| 329 |
- t.Fatal(err) |
|
| 330 |
- } |
|
| 318 |
+ err = os.RemoveAll(path.Join(root, "file5")) |
|
| 319 |
+ require.NoError(t, err) |
|
| 320 |
+ err = os.MkdirAll(path.Join(root, "file5"), 0666) |
|
| 321 |
+ require.NoError(t, err) |
|
| 331 | 322 |
|
| 332 | 323 |
// Create new file |
| 333 |
- if err := ioutil.WriteFile(path.Join(root, "filenew"), []byte("filenew\n"), 0777); err != nil {
|
|
| 334 |
- t.Fatal(err) |
|
| 335 |
- } |
|
| 324 |
+ err = ioutil.WriteFile(path.Join(root, "filenew"), []byte("filenew\n"), 0777)
|
|
| 325 |
+ require.NoError(t, err) |
|
| 336 | 326 |
|
| 337 | 327 |
// Create new dir |
| 338 |
- if err := os.MkdirAll(path.Join(root, "dirnew"), 0766); err != nil {
|
|
| 339 |
- t.Fatal(err) |
|
| 340 |
- } |
|
| 328 |
+ err = os.MkdirAll(path.Join(root, "dirnew"), 0766) |
|
| 329 |
+ require.NoError(t, err) |
|
| 341 | 330 |
|
| 342 | 331 |
// Create a new symlink |
| 343 |
- if err := os.Symlink("targetnew", path.Join(root, "symlinknew")); err != nil {
|
|
| 344 |
- t.Fatal(err) |
|
| 345 |
- } |
|
| 332 |
+ err = os.Symlink("targetnew", path.Join(root, "symlinknew"))
|
|
| 333 |
+ require.NoError(t, err) |
|
| 346 | 334 |
|
| 347 | 335 |
// Change a symlink |
| 348 |
- if err := os.RemoveAll(path.Join(root, "symlink2")); err != nil {
|
|
| 349 |
- t.Fatal(err) |
|
| 350 |
- } |
|
| 351 |
- if err := os.Symlink("target2change", path.Join(root, "symlink2")); err != nil {
|
|
| 352 |
- t.Fatal(err) |
|
| 353 |
- } |
|
| 336 |
+ err = os.RemoveAll(path.Join(root, "symlink2")) |
|
| 337 |
+ require.NoError(t, err) |
|
| 338 |
+ |
|
| 339 |
+ err = os.Symlink("target2change", path.Join(root, "symlink2"))
|
|
| 340 |
+ require.NoError(t, err) |
|
| 354 | 341 |
|
| 355 | 342 |
// Replace dir with file |
| 356 |
- if err := os.RemoveAll(path.Join(root, "dir2")); err != nil {
|
|
| 357 |
- t.Fatal(err) |
|
| 358 |
- } |
|
| 359 |
- if err := ioutil.WriteFile(path.Join(root, "dir2"), []byte("dir2\n"), 0777); err != nil {
|
|
| 360 |
- t.Fatal(err) |
|
| 361 |
- } |
|
| 343 |
+ err = os.RemoveAll(path.Join(root, "dir2")) |
|
| 344 |
+ require.NoError(t, err) |
|
| 345 |
+ err = ioutil.WriteFile(path.Join(root, "dir2"), []byte("dir2\n"), 0777)
|
|
| 346 |
+ require.NoError(t, err) |
|
| 362 | 347 |
|
| 363 | 348 |
// Touch dir |
| 364 |
- if err := system.Chtimes(path.Join(root, "dir3"), time.Now().Add(time.Second), time.Now().Add(time.Second)); err != nil {
|
|
| 365 |
- t.Fatal(err) |
|
| 366 |
- } |
|
| 349 |
+ err = system.Chtimes(path.Join(root, "dir3"), time.Now().Add(time.Second), time.Now().Add(time.Second)) |
|
| 350 |
+ require.NoError(t, err) |
|
| 367 | 351 |
} |
| 368 | 352 |
|
| 369 | 353 |
func TestChangesDirsMutated(t *testing.T) {
|
| ... | ... |
@@ -374,23 +334,18 @@ func TestChangesDirsMutated(t *testing.T) {
|
| 374 | 374 |
t.Skip("symlinks on Windows; gcp failures on Solaris")
|
| 375 | 375 |
} |
| 376 | 376 |
src, err := ioutil.TempDir("", "docker-changes-test")
|
| 377 |
- if err != nil {
|
|
| 378 |
- t.Fatal(err) |
|
| 379 |
- } |
|
| 377 |
+ require.NoError(t, err) |
|
| 380 | 378 |
createSampleDir(t, src) |
| 381 | 379 |
dst := src + "-copy" |
| 382 |
- if err := copyDir(src, dst); err != nil {
|
|
| 383 |
- t.Fatal(err) |
|
| 384 |
- } |
|
| 380 |
+ err = copyDir(src, dst) |
|
| 381 |
+ require.NoError(t, err) |
|
| 385 | 382 |
defer os.RemoveAll(src) |
| 386 | 383 |
defer os.RemoveAll(dst) |
| 387 | 384 |
|
| 388 | 385 |
mutateSampleDir(t, dst) |
| 389 | 386 |
|
| 390 | 387 |
changes, err := ChangesDirs(dst, src) |
| 391 |
- if err != nil {
|
|
| 392 |
- t.Fatal(err) |
|
| 393 |
- } |
|
| 388 |
+ require.NoError(t, err) |
|
| 394 | 389 |
|
| 395 | 390 |
sort.Sort(changesByPath(changes)) |
| 396 | 391 |
|
| ... | ... |
@@ -436,41 +391,29 @@ func TestApplyLayer(t *testing.T) {
|
| 436 | 436 |
t.Skip("symlinks on Windows; gcp failures on Solaris")
|
| 437 | 437 |
} |
| 438 | 438 |
src, err := ioutil.TempDir("", "docker-changes-test")
|
| 439 |
- if err != nil {
|
|
| 440 |
- t.Fatal(err) |
|
| 441 |
- } |
|
| 439 |
+ require.NoError(t, err) |
|
| 442 | 440 |
createSampleDir(t, src) |
| 443 | 441 |
defer os.RemoveAll(src) |
| 444 | 442 |
dst := src + "-copy" |
| 445 |
- if err := copyDir(src, dst); err != nil {
|
|
| 446 |
- t.Fatal(err) |
|
| 447 |
- } |
|
| 443 |
+ err = copyDir(src, dst) |
|
| 444 |
+ require.NoError(t, err) |
|
| 448 | 445 |
mutateSampleDir(t, dst) |
| 449 | 446 |
defer os.RemoveAll(dst) |
| 450 | 447 |
|
| 451 | 448 |
changes, err := ChangesDirs(dst, src) |
| 452 |
- if err != nil {
|
|
| 453 |
- t.Fatal(err) |
|
| 454 |
- } |
|
| 449 |
+ require.NoError(t, err) |
|
| 455 | 450 |
|
| 456 | 451 |
layer, err := ExportChanges(dst, changes, nil, nil) |
| 457 |
- if err != nil {
|
|
| 458 |
- t.Fatal(err) |
|
| 459 |
- } |
|
| 452 |
+ require.NoError(t, err) |
|
| 460 | 453 |
|
| 461 | 454 |
layerCopy, err := NewTempArchive(layer, "") |
| 462 |
- if err != nil {
|
|
| 463 |
- t.Fatal(err) |
|
| 464 |
- } |
|
| 455 |
+ require.NoError(t, err) |
|
| 465 | 456 |
|
| 466 |
- if _, err := ApplyLayer(src, layerCopy); err != nil {
|
|
| 467 |
- t.Fatal(err) |
|
| 468 |
- } |
|
| 457 |
+ _, err = ApplyLayer(src, layerCopy) |
|
| 458 |
+ require.NoError(t, err) |
|
| 469 | 459 |
|
| 470 | 460 |
changes2, err := ChangesDirs(src, dst) |
| 471 |
- if err != nil {
|
|
| 472 |
- t.Fatal(err) |
|
| 473 |
- } |
|
| 461 |
+ require.NoError(t, err) |
|
| 474 | 462 |
|
| 475 | 463 |
if len(changes2) != 0 {
|
| 476 | 464 |
t.Fatalf("Unexpected differences after reapplying mutation: %v", changes2)
|
| ... | ... |
@@ -484,26 +427,18 @@ func TestChangesSizeWithHardlinks(t *testing.T) {
|
| 484 | 484 |
t.Skip("hardlinks on Windows")
|
| 485 | 485 |
} |
| 486 | 486 |
srcDir, err := ioutil.TempDir("", "docker-test-srcDir")
|
| 487 |
- if err != nil {
|
|
| 488 |
- t.Fatal(err) |
|
| 489 |
- } |
|
| 487 |
+ require.NoError(t, err) |
|
| 490 | 488 |
defer os.RemoveAll(srcDir) |
| 491 | 489 |
|
| 492 | 490 |
destDir, err := ioutil.TempDir("", "docker-test-destDir")
|
| 493 |
- if err != nil {
|
|
| 494 |
- t.Fatal(err) |
|
| 495 |
- } |
|
| 491 |
+ require.NoError(t, err) |
|
| 496 | 492 |
defer os.RemoveAll(destDir) |
| 497 | 493 |
|
| 498 | 494 |
creationSize, err := prepareUntarSourceDirectory(100, destDir, true) |
| 499 |
- if err != nil {
|
|
| 500 |
- t.Fatal(err) |
|
| 501 |
- } |
|
| 495 |
+ require.NoError(t, err) |
|
| 502 | 496 |
|
| 503 | 497 |
changes, err := ChangesDirs(destDir, srcDir) |
| 504 |
- if err != nil {
|
|
| 505 |
- t.Fatal(err) |
|
| 506 |
- } |
|
| 498 |
+ require.NoError(t, err) |
|
| 507 | 499 |
|
| 508 | 500 |
got := ChangesSize(destDir, changes) |
| 509 | 501 |
if got != int64(creationSize) {
|
| ... | ... |
@@ -532,13 +467,12 @@ func TestChangesSize(t *testing.T) {
|
| 532 | 532 |
parentPath, err := ioutil.TempDir("", "docker-changes-test")
|
| 533 | 533 |
defer os.RemoveAll(parentPath) |
| 534 | 534 |
addition := path.Join(parentPath, "addition") |
| 535 |
- if err := ioutil.WriteFile(addition, []byte{0x01, 0x01, 0x01}, 0744); err != nil {
|
|
| 536 |
- t.Fatal(err) |
|
| 537 |
- } |
|
| 535 |
+ err = ioutil.WriteFile(addition, []byte{0x01, 0x01, 0x01}, 0744)
|
|
| 536 |
+ require.NoError(t, err) |
|
| 538 | 537 |
modification := path.Join(parentPath, "modification") |
| 539 |
- if err = ioutil.WriteFile(modification, []byte{0x01, 0x01, 0x01}, 0744); err != nil {
|
|
| 540 |
- t.Fatal(err) |
|
| 541 |
- } |
|
| 538 |
+ err = ioutil.WriteFile(modification, []byte{0x01, 0x01, 0x01}, 0744)
|
|
| 539 |
+ require.NoError(t, err) |
|
| 540 |
+ |
|
| 542 | 541 |
changes := []Change{
|
| 543 | 542 |
{Path: "addition", Kind: ChangeAdd},
|
| 544 | 543 |
{Path: "modification", Kind: ChangeModify},
|
| ... | ... |
@@ -15,6 +15,8 @@ import ( |
| 15 | 15 |
"path/filepath" |
| 16 | 16 |
"strings" |
| 17 | 17 |
"testing" |
| 18 |
+ |
|
| 19 |
+ "github.com/stretchr/testify/require" |
|
| 18 | 20 |
) |
| 19 | 21 |
|
| 20 | 22 |
func removeAllPaths(paths ...string) {
|
| ... | ... |
@@ -26,13 +28,11 @@ func removeAllPaths(paths ...string) {
|
| 26 | 26 |
func getTestTempDirs(t *testing.T) (tmpDirA, tmpDirB string) {
|
| 27 | 27 |
var err error |
| 28 | 28 |
|
| 29 |
- if tmpDirA, err = ioutil.TempDir("", "archive-copy-test"); err != nil {
|
|
| 30 |
- t.Fatal(err) |
|
| 31 |
- } |
|
| 29 |
+ tmpDirA, err = ioutil.TempDir("", "archive-copy-test")
|
|
| 30 |
+ require.NoError(t, err) |
|
| 32 | 31 |
|
| 33 |
- if tmpDirB, err = ioutil.TempDir("", "archive-copy-test"); err != nil {
|
|
| 34 |
- t.Fatal(err) |
|
| 35 |
- } |
|
| 32 |
+ tmpDirB, err = ioutil.TempDir("", "archive-copy-test")
|
|
| 33 |
+ require.NoError(t, err) |
|
| 36 | 34 |
|
| 37 | 35 |
return |
| 38 | 36 |
} |
| ... | ... |
@@ -118,9 +118,8 @@ func logDirContents(t *testing.T, dirPath string) {
|
| 118 | 118 |
|
| 119 | 119 |
t.Logf("logging directory contents: %q", dirPath)
|
| 120 | 120 |
|
| 121 |
- if err := filepath.Walk(dirPath, logWalkedPaths); err != nil {
|
|
| 122 |
- t.Fatal(err) |
|
| 123 |
- } |
|
| 121 |
+ err := filepath.Walk(dirPath, logWalkedPaths) |
|
| 122 |
+ require.NoError(t, err) |
|
| 124 | 123 |
} |
| 125 | 124 |
|
| 126 | 125 |
func testCopyHelper(t *testing.T, srcPath, dstPath string) (err error) {
|
| ... | ... |
@@ -293,9 +292,8 @@ func TestCopyCaseA(t *testing.T) {
|
| 293 | 293 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 294 | 294 |
} |
| 295 | 295 |
|
| 296 |
- if err = fileContentsEqual(t, srcPath, dstPath); err != nil {
|
|
| 297 |
- t.Fatal(err) |
|
| 298 |
- } |
|
| 296 |
+ err = fileContentsEqual(t, srcPath, dstPath) |
|
| 297 |
+ require.NoError(t, err) |
|
| 299 | 298 |
os.Remove(dstPath) |
| 300 | 299 |
|
| 301 | 300 |
symlinkPath := filepath.Join(tmpDirA, "symlink3") |
| ... | ... |
@@ -306,17 +304,15 @@ func TestCopyCaseA(t *testing.T) {
|
| 306 | 306 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 307 | 307 |
} |
| 308 | 308 |
|
| 309 |
- if err = fileContentsEqual(t, linkTarget, dstPath); err != nil {
|
|
| 310 |
- t.Fatal(err) |
|
| 311 |
- } |
|
| 309 |
+ err = fileContentsEqual(t, linkTarget, dstPath) |
|
| 310 |
+ require.NoError(t, err) |
|
| 312 | 311 |
os.Remove(dstPath) |
| 313 | 312 |
if err = testCopyHelperFSym(t, symlinkPath1, dstPath); err != nil {
|
| 314 | 313 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 315 | 314 |
} |
| 316 | 315 |
|
| 317 |
- if err = fileContentsEqual(t, linkTarget, dstPath); err != nil {
|
|
| 318 |
- t.Fatal(err) |
|
| 319 |
- } |
|
| 316 |
+ err = fileContentsEqual(t, linkTarget, dstPath) |
|
| 317 |
+ require.NoError(t, err) |
|
| 320 | 318 |
} |
| 321 | 319 |
|
| 322 | 320 |
// B. SRC specifies a file and DST (with trailing path separator) doesn't |
| ... | ... |
@@ -377,9 +373,8 @@ func TestCopyCaseC(t *testing.T) {
|
| 377 | 377 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 378 | 378 |
} |
| 379 | 379 |
|
| 380 |
- if err = fileContentsEqual(t, srcPath, dstPath); err != nil {
|
|
| 381 |
- t.Fatal(err) |
|
| 382 |
- } |
|
| 380 |
+ err = fileContentsEqual(t, srcPath, dstPath) |
|
| 381 |
+ require.NoError(t, err) |
|
| 383 | 382 |
} |
| 384 | 383 |
|
| 385 | 384 |
// C. Symbol link following version: |
| ... | ... |
@@ -415,9 +410,8 @@ func TestCopyCaseCFSym(t *testing.T) {
|
| 415 | 415 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 416 | 416 |
} |
| 417 | 417 |
|
| 418 |
- if err = fileContentsEqual(t, linkTarget, dstPath); err != nil {
|
|
| 419 |
- t.Fatal(err) |
|
| 420 |
- } |
|
| 418 |
+ err = fileContentsEqual(t, linkTarget, dstPath) |
|
| 419 |
+ require.NoError(t, err) |
|
| 421 | 420 |
} |
| 422 | 421 |
|
| 423 | 422 |
// D. SRC specifies a file and DST exists as a directory. This should place |
| ... | ... |
@@ -446,9 +440,8 @@ func TestCopyCaseD(t *testing.T) {
|
| 446 | 446 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 447 | 447 |
} |
| 448 | 448 |
|
| 449 |
- if err = fileContentsEqual(t, srcPath, dstPath); err != nil {
|
|
| 450 |
- t.Fatal(err) |
|
| 451 |
- } |
|
| 449 |
+ err = fileContentsEqual(t, srcPath, dstPath) |
|
| 450 |
+ require.NoError(t, err) |
|
| 452 | 451 |
|
| 453 | 452 |
// Now try again but using a trailing path separator for dstDir. |
| 454 | 453 |
|
| ... | ... |
@@ -466,9 +459,8 @@ func TestCopyCaseD(t *testing.T) {
|
| 466 | 466 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 467 | 467 |
} |
| 468 | 468 |
|
| 469 |
- if err = fileContentsEqual(t, srcPath, dstPath); err != nil {
|
|
| 470 |
- t.Fatal(err) |
|
| 471 |
- } |
|
| 469 |
+ err = fileContentsEqual(t, srcPath, dstPath) |
|
| 470 |
+ require.NoError(t, err) |
|
| 472 | 471 |
} |
| 473 | 472 |
|
| 474 | 473 |
// D. Symbol link following version: |
| ... | ... |
@@ -499,9 +491,8 @@ func TestCopyCaseDFSym(t *testing.T) {
|
| 499 | 499 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 500 | 500 |
} |
| 501 | 501 |
|
| 502 |
- if err = fileContentsEqual(t, linkTarget, dstPath); err != nil {
|
|
| 503 |
- t.Fatal(err) |
|
| 504 |
- } |
|
| 502 |
+ err = fileContentsEqual(t, linkTarget, dstPath) |
|
| 503 |
+ require.NoError(t, err) |
|
| 505 | 504 |
|
| 506 | 505 |
// Now try again but using a trailing path separator for dstDir. |
| 507 | 506 |
|
| ... | ... |
@@ -519,9 +510,8 @@ func TestCopyCaseDFSym(t *testing.T) {
|
| 519 | 519 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 520 | 520 |
} |
| 521 | 521 |
|
| 522 |
- if err = fileContentsEqual(t, linkTarget, dstPath); err != nil {
|
|
| 523 |
- t.Fatal(err) |
|
| 524 |
- } |
|
| 522 |
+ err = fileContentsEqual(t, linkTarget, dstPath) |
|
| 523 |
+ require.NoError(t, err) |
|
| 525 | 524 |
} |
| 526 | 525 |
|
| 527 | 526 |
// E. SRC specifies a directory and DST does not exist. This should create a |
| ... | ... |
@@ -563,9 +553,8 @@ func TestCopyCaseE(t *testing.T) {
|
| 563 | 563 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 564 | 564 |
} |
| 565 | 565 |
|
| 566 |
- if err = dirContentsEqual(t, dstDir, srcDir); err != nil {
|
|
| 567 |
- t.Fatal(err) |
|
| 568 |
- } |
|
| 566 |
+ err = dirContentsEqual(t, dstDir, srcDir) |
|
| 567 |
+ require.NoError(t, err) |
|
| 569 | 568 |
} |
| 570 | 569 |
|
| 571 | 570 |
// E. Symbol link following version: |
| ... | ... |
@@ -609,9 +598,8 @@ func TestCopyCaseEFSym(t *testing.T) {
|
| 609 | 609 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 610 | 610 |
} |
| 611 | 611 |
|
| 612 |
- if err = dirContentsEqual(t, dstDir, linkTarget); err != nil {
|
|
| 613 |
- t.Fatal(err) |
|
| 614 |
- } |
|
| 612 |
+ err = dirContentsEqual(t, dstDir, linkTarget) |
|
| 613 |
+ require.NoError(t, err) |
|
| 615 | 614 |
} |
| 616 | 615 |
|
| 617 | 616 |
// F. SRC specifies a directory and DST exists as a file. This should cause an |
| ... | ... |
@@ -669,9 +657,8 @@ func TestCopyCaseG(t *testing.T) {
|
| 669 | 669 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 670 | 670 |
} |
| 671 | 671 |
|
| 672 |
- if err = dirContentsEqual(t, resultDir, srcDir); err != nil {
|
|
| 673 |
- t.Fatal(err) |
|
| 674 |
- } |
|
| 672 |
+ err = dirContentsEqual(t, resultDir, srcDir) |
|
| 673 |
+ require.NoError(t, err) |
|
| 675 | 674 |
|
| 676 | 675 |
// Now try again but using a trailing path separator for dstDir. |
| 677 | 676 |
|
| ... | ... |
@@ -689,9 +676,8 @@ func TestCopyCaseG(t *testing.T) {
|
| 689 | 689 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 690 | 690 |
} |
| 691 | 691 |
|
| 692 |
- if err = dirContentsEqual(t, resultDir, srcDir); err != nil {
|
|
| 693 |
- t.Fatal(err) |
|
| 694 |
- } |
|
| 692 |
+ err = dirContentsEqual(t, resultDir, srcDir) |
|
| 693 |
+ require.NoError(t, err) |
|
| 695 | 694 |
} |
| 696 | 695 |
|
| 697 | 696 |
// G. Symbol link version: |
| ... | ... |
@@ -717,9 +703,8 @@ func TestCopyCaseGFSym(t *testing.T) {
|
| 717 | 717 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 718 | 718 |
} |
| 719 | 719 |
|
| 720 |
- if err = dirContentsEqual(t, resultDir, linkTarget); err != nil {
|
|
| 721 |
- t.Fatal(err) |
|
| 722 |
- } |
|
| 720 |
+ err = dirContentsEqual(t, resultDir, linkTarget) |
|
| 721 |
+ require.NoError(t, err) |
|
| 723 | 722 |
|
| 724 | 723 |
// Now try again but using a trailing path separator for dstDir. |
| 725 | 724 |
|
| ... | ... |
@@ -737,9 +722,8 @@ func TestCopyCaseGFSym(t *testing.T) {
|
| 737 | 737 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 738 | 738 |
} |
| 739 | 739 |
|
| 740 |
- if err = dirContentsEqual(t, resultDir, linkTarget); err != nil {
|
|
| 741 |
- t.Fatal(err) |
|
| 742 |
- } |
|
| 740 |
+ err = dirContentsEqual(t, resultDir, linkTarget) |
|
| 741 |
+ require.NoError(t, err) |
|
| 743 | 742 |
} |
| 744 | 743 |
|
| 745 | 744 |
// H. SRC specifies a directory's contents only and DST does not exist. This |
| ... | ... |
@@ -899,9 +883,8 @@ func TestCopyCaseJ(t *testing.T) {
|
| 899 | 899 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 900 | 900 |
} |
| 901 | 901 |
|
| 902 |
- if err = dirContentsEqual(t, dstDir, srcDir); err != nil {
|
|
| 903 |
- t.Fatal(err) |
|
| 904 |
- } |
|
| 902 |
+ err = dirContentsEqual(t, dstDir, srcDir) |
|
| 903 |
+ require.NoError(t, err) |
|
| 905 | 904 |
|
| 906 | 905 |
// Now try again but using a trailing path separator for dstDir. |
| 907 | 906 |
|
| ... | ... |
@@ -919,9 +902,8 @@ func TestCopyCaseJ(t *testing.T) {
|
| 919 | 919 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 920 | 920 |
} |
| 921 | 921 |
|
| 922 |
- if err = dirContentsEqual(t, dstDir, srcDir); err != nil {
|
|
| 923 |
- t.Fatal(err) |
|
| 924 |
- } |
|
| 922 |
+ err = dirContentsEqual(t, dstDir, srcDir) |
|
| 923 |
+ require.NoError(t, err) |
|
| 925 | 924 |
} |
| 926 | 925 |
|
| 927 | 926 |
// J. Symbol link following version: |
| ... | ... |
@@ -952,9 +934,8 @@ func TestCopyCaseJFSym(t *testing.T) {
|
| 952 | 952 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 953 | 953 |
} |
| 954 | 954 |
|
| 955 |
- if err = dirContentsEqual(t, dstDir, linkTarget); err != nil {
|
|
| 956 |
- t.Fatal(err) |
|
| 957 |
- } |
|
| 955 |
+ err = dirContentsEqual(t, dstDir, linkTarget) |
|
| 956 |
+ require.NoError(t, err) |
|
| 958 | 957 |
|
| 959 | 958 |
// Now try again but using a trailing path separator for dstDir. |
| 960 | 959 |
|
| ... | ... |
@@ -972,7 +953,6 @@ func TestCopyCaseJFSym(t *testing.T) {
|
| 972 | 972 |
t.Fatalf("unexpected error %T: %s", err, err)
|
| 973 | 973 |
} |
| 974 | 974 |
|
| 975 |
- if err = dirContentsEqual(t, dstDir, linkTarget); err != nil {
|
|
| 976 |
- t.Fatal(err) |
|
| 977 |
- } |
|
| 975 |
+ err = dirContentsEqual(t, dstDir, linkTarget) |
|
| 976 |
+ require.NoError(t, err) |
|
| 978 | 977 |
} |
| ... | ... |
@@ -5,13 +5,13 @@ import ( |
| 5 | 5 |
"bytes" |
| 6 | 6 |
"io" |
| 7 | 7 |
"testing" |
| 8 |
+ |
|
| 9 |
+ "github.com/stretchr/testify/require" |
|
| 8 | 10 |
) |
| 9 | 11 |
|
| 10 | 12 |
func TestGenerateEmptyFile(t *testing.T) {
|
| 11 | 13 |
archive, err := Generate("emptyFile")
|
| 12 |
- if err != nil {
|
|
| 13 |
- t.Fatal(err) |
|
| 14 |
- } |
|
| 14 |
+ require.NoError(t, err) |
|
| 15 | 15 |
if archive == nil {
|
| 16 | 16 |
t.Fatal("The generated archive should not be nil.")
|
| 17 | 17 |
} |
| ... | ... |
@@ -28,9 +28,7 @@ func TestGenerateEmptyFile(t *testing.T) {
|
| 28 | 28 |
if err == io.EOF {
|
| 29 | 29 |
break |
| 30 | 30 |
} |
| 31 |
- if err != nil {
|
|
| 32 |
- t.Fatal(err) |
|
| 33 |
- } |
|
| 31 |
+ require.NoError(t, err) |
|
| 34 | 32 |
buf := new(bytes.Buffer) |
| 35 | 33 |
buf.ReadFrom(tr) |
| 36 | 34 |
content := buf.String() |
| ... | ... |
@@ -54,9 +52,7 @@ func TestGenerateEmptyFile(t *testing.T) {
|
| 54 | 54 |
|
| 55 | 55 |
func TestGenerateWithContent(t *testing.T) {
|
| 56 | 56 |
archive, err := Generate("file", "content")
|
| 57 |
- if err != nil {
|
|
| 58 |
- t.Fatal(err) |
|
| 59 |
- } |
|
| 57 |
+ require.NoError(t, err) |
|
| 60 | 58 |
if archive == nil {
|
| 61 | 59 |
t.Fatal("The generated archive should not be nil.")
|
| 62 | 60 |
} |
| ... | ... |
@@ -73,9 +69,7 @@ func TestGenerateWithContent(t *testing.T) {
|
| 73 | 73 |
if err == io.EOF {
|
| 74 | 74 |
break |
| 75 | 75 |
} |
| 76 |
- if err != nil {
|
|
| 77 |
- t.Fatal(err) |
|
| 78 |
- } |
|
| 76 |
+ require.NoError(t, err) |
|
| 79 | 77 |
buf := new(bytes.Buffer) |
| 80 | 78 |
buf.ReadFrom(tr) |
| 81 | 79 |
content := buf.String() |