Skip to content

Commit

Permalink
use testify to check error for test unit test of archive package
Browse files Browse the repository at this point in the history
Signed-off-by: yangshukui <[email protected]>
  • Loading branch information
yangshukui committed Aug 9, 2017
1 parent 82eb900 commit 1f1e8e9
Show file tree
Hide file tree
Showing 6 changed files with 239 additions and 407 deletions.
100 changes: 36 additions & 64 deletions pkg/archive/archive_linux_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"testing"

"github.com/docker/docker/pkg/system"
"github.com/stretchr/testify/require"
"golang.org/x/sys/unix"
)

Expand All @@ -22,46 +23,37 @@ import (
// └── f1 # whiteout, 0644
func setupOverlayTestDir(t *testing.T, src string) {
// Create opaque directory containing single file and permission 0700
if err := os.Mkdir(filepath.Join(src, "d1"), 0700); err != nil {
t.Fatal(err)
}
err := os.Mkdir(filepath.Join(src, "d1"), 0700)
require.NoError(t, err)

if err := system.Lsetxattr(filepath.Join(src, "d1"), "trusted.overlay.opaque", []byte("y"), 0); err != nil {
t.Fatal(err)
}
err = system.Lsetxattr(filepath.Join(src, "d1"), "trusted.overlay.opaque", []byte("y"), 0)
require.NoError(t, err)

if err := ioutil.WriteFile(filepath.Join(src, "d1", "f1"), []byte{}, 0600); err != nil {
t.Fatal(err)
}
err = ioutil.WriteFile(filepath.Join(src, "d1", "f1"), []byte{}, 0600)
require.NoError(t, err)

// Create another opaque directory containing single file but with permission 0750
if err := os.Mkdir(filepath.Join(src, "d2"), 0750); err != nil {
t.Fatal(err)
}
err = os.Mkdir(filepath.Join(src, "d2"), 0750)
require.NoError(t, err)

if err := system.Lsetxattr(filepath.Join(src, "d2"), "trusted.overlay.opaque", []byte("y"), 0); err != nil {
t.Fatal(err)
}
err = system.Lsetxattr(filepath.Join(src, "d2"), "trusted.overlay.opaque", []byte("y"), 0)
require.NoError(t, err)

if err := ioutil.WriteFile(filepath.Join(src, "d2", "f1"), []byte{}, 0660); err != nil {
t.Fatal(err)
}
err = ioutil.WriteFile(filepath.Join(src, "d2", "f1"), []byte{}, 0660)
require.NoError(t, err)

// Create regular directory with deleted file
if err := os.Mkdir(filepath.Join(src, "d3"), 0700); err != nil {
t.Fatal(err)
}
err = os.Mkdir(filepath.Join(src, "d3"), 0700)
require.NoError(t, err)

if err := system.Mknod(filepath.Join(src, "d3", "f1"), unix.S_IFCHR, 0); err != nil {
t.Fatal(err)
}
err = system.Mknod(filepath.Join(src, "d3", "f1"), unix.S_IFCHR, 0)
require.NoError(t, err)
}

func checkOpaqueness(t *testing.T, path string, opaque string) {
xattrOpaque, err := system.Lgetxattr(path, "trusted.overlay.opaque")
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)

if string(xattrOpaque) != opaque {
t.Fatalf("Unexpected opaque value: %q, expected %q", string(xattrOpaque), opaque)
}
Expand All @@ -70,9 +62,8 @@ func checkOpaqueness(t *testing.T, path string, opaque string) {

func checkOverlayWhiteout(t *testing.T, path string) {
stat, err := os.Stat(path)
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)

statT, ok := stat.Sys().(*syscall.Stat_t)
if !ok {
t.Fatalf("Unexpected type: %t, expected *syscall.Stat_t", stat.Sys())
Expand All @@ -84,48 +75,38 @@ func checkOverlayWhiteout(t *testing.T, path string) {

func checkFileMode(t *testing.T, path string, perm os.FileMode) {
stat, err := os.Stat(path)
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)

if stat.Mode() != perm {
t.Fatalf("Unexpected file mode for %s: %o, expected %o", path, stat.Mode(), perm)
}
}

func TestOverlayTarUntar(t *testing.T) {
oldmask, err := system.Umask(0)
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
defer system.Umask(oldmask)

src, err := ioutil.TempDir("", "docker-test-overlay-tar-src")
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
defer os.RemoveAll(src)

setupOverlayTestDir(t, src)

dst, err := ioutil.TempDir("", "docker-test-overlay-tar-dst")
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
defer os.RemoveAll(dst)

options := &TarOptions{
Compression: Uncompressed,
WhiteoutFormat: OverlayWhiteoutFormat,
}
archive, err := TarWithOptions(src, options)
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
defer archive.Close()

if err := Untar(archive, dst, options); err != nil {
t.Fatal(err)
}
err = Untar(archive, dst, options)
require.NoError(t, err)

checkFileMode(t, filepath.Join(dst, "d1"), 0700|os.ModeDir)
checkFileMode(t, filepath.Join(dst, "d2"), 0750|os.ModeDir)
Expand All @@ -142,40 +123,31 @@ func TestOverlayTarUntar(t *testing.T) {

func TestOverlayTarAUFSUntar(t *testing.T) {
oldmask, err := system.Umask(0)
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
defer system.Umask(oldmask)

src, err := ioutil.TempDir("", "docker-test-overlay-tar-src")
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
defer os.RemoveAll(src)

setupOverlayTestDir(t, src)

dst, err := ioutil.TempDir("", "docker-test-overlay-tar-dst")
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
defer os.RemoveAll(dst)

archive, err := TarWithOptions(src, &TarOptions{
Compression: Uncompressed,
WhiteoutFormat: OverlayWhiteoutFormat,
})
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
defer archive.Close()

if err := Untar(archive, dst, &TarOptions{
err = Untar(archive, dst, &TarOptions{
Compression: Uncompressed,
WhiteoutFormat: AUFSWhiteoutFormat,
}); err != nil {
t.Fatal(err)
}
})
require.NoError(t, err)

checkFileMode(t, filepath.Join(dst, "d1"), 0700|os.ModeDir)
checkFileMode(t, filepath.Join(dst, "d1", WhiteoutOpaqueDir), 0700)
Expand Down
16 changes: 4 additions & 12 deletions pkg/archive/archive_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -263,9 +263,7 @@ func TestCmdStreamGood(t *testing.T) {

func TestUntarPathWithInvalidDest(t *testing.T) {
tempFolder, err := ioutil.TempDir("", "docker-archive-test")
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
defer os.RemoveAll(tempFolder)
invalidDestFolder := filepath.Join(tempFolder, "invalidDest")
// Create a src file
Expand All @@ -284,9 +282,7 @@ func TestUntarPathWithInvalidDest(t *testing.T) {

cmd := exec.Command("sh", "-c", "tar cf "+tarFileU+" "+srcFileU)
_, err = cmd.CombinedOutput()
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)

err = defaultUntarPath(tarFile, invalidDestFolder)
if err == nil {
Expand All @@ -308,9 +304,7 @@ func TestUntarPathWithInvalidSrc(t *testing.T) {

func TestUntarPath(t *testing.T) {
tmpFolder, err := ioutil.TempDir("", "docker-archive-test")
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)
defer os.RemoveAll(tmpFolder)
srcFile := filepath.Join(tmpFolder, "src")
tarFile := filepath.Join(tmpFolder, "src.tar")
Expand All @@ -331,9 +325,7 @@ func TestUntarPath(t *testing.T) {
}
cmd := exec.Command("sh", "-c", "tar cf "+tarFileU+" "+srcFileU)
_, err = cmd.CombinedOutput()
if err != nil {
t.Fatal(err)
}
require.NoError(t, err)

err = defaultUntarPath(tarFile, destFolder)
if err != nil {
Expand Down
Loading

0 comments on commit 1f1e8e9

Please sign in to comment.