Преглед на файлове

Merge pull request #20284 from Microsoft/jjh/testunit-pkgarchivestep1

Windows CI: test-unit pkg\archive step 1
Sebastiaan van Stijn преди 9 години
родител
ревизия
4fea2be134
променени са 2 файла, в които са добавени 88 реда и са изтрити 83 реда
  1. 0 83
      pkg/archive/archive_test.go
  2. 88 0
      pkg/archive/archive_unix_test.go

+ 0 - 83
pkg/archive/archive_test.go

@@ -850,89 +850,6 @@ func TestTarWithBlockCharFifo(t *testing.T) {
 	}
 	}
 }
 }
 
 
-func TestTarWithHardLink(t *testing.T) {
-	origin, err := ioutil.TempDir("", "docker-test-tar-hardlink")
-	if err != nil {
-		t.Fatal(err)
-	}
-	defer os.RemoveAll(origin)
-	if err := ioutil.WriteFile(path.Join(origin, "1"), []byte("hello world"), 0700); err != nil {
-		t.Fatal(err)
-	}
-	if err := os.Link(path.Join(origin, "1"), path.Join(origin, "2")); err != nil {
-		t.Fatal(err)
-	}
-
-	var i1, i2 uint64
-	if i1, err = getNlink(path.Join(origin, "1")); err != nil {
-		t.Fatal(err)
-	}
-	// sanity check that we can hardlink
-	if i1 != 2 {
-		t.Skipf("skipping since hardlinks don't work here; expected 2 links, got %d", i1)
-	}
-
-	dest, err := ioutil.TempDir("", "docker-test-tar-hardlink-dest")
-	if err != nil {
-		t.Fatal(err)
-	}
-	defer os.RemoveAll(dest)
-
-	// we'll do this in two steps to separate failure
-	fh, err := Tar(origin, Uncompressed)
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	// ensure we can read the whole thing with no error, before writing back out
-	buf, err := ioutil.ReadAll(fh)
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	bRdr := bytes.NewReader(buf)
-	err = Untar(bRdr, dest, &TarOptions{Compression: Uncompressed})
-	if err != nil {
-		t.Fatal(err)
-	}
-
-	if i1, err = getInode(path.Join(dest, "1")); err != nil {
-		t.Fatal(err)
-	}
-	if i2, err = getInode(path.Join(dest, "2")); err != nil {
-		t.Fatal(err)
-	}
-
-	if i1 != i2 {
-		t.Errorf("expected matching inodes, but got %d and %d", i1, i2)
-	}
-}
-
-func getNlink(path string) (uint64, error) {
-	stat, err := os.Stat(path)
-	if err != nil {
-		return 0, err
-	}
-	statT, ok := stat.Sys().(*syscall.Stat_t)
-	if !ok {
-		return 0, fmt.Errorf("expected type *syscall.Stat_t, got %t", stat.Sys())
-	}
-	// We need this conversion on ARM64
-	return uint64(statT.Nlink), nil
-}
-
-func getInode(path string) (uint64, error) {
-	stat, err := os.Stat(path)
-	if err != nil {
-		return 0, err
-	}
-	statT, ok := stat.Sys().(*syscall.Stat_t)
-	if !ok {
-		return 0, fmt.Errorf("expected type *syscall.Stat_t, got %t", stat.Sys())
-	}
-	return statT.Ino, nil
-}
-
 func prepareUntarSourceDirectory(numberOfFiles int, targetPath string, makeLinks bool) (int, error) {
 func prepareUntarSourceDirectory(numberOfFiles int, targetPath string, makeLinks bool) (int, error) {
 	fileData := []byte("fooo")
 	fileData := []byte("fooo")
 	for n := 0; n < numberOfFiles; n++ {
 	for n := 0; n < numberOfFiles; n++ {

+ 88 - 0
pkg/archive/archive_unix_test.go

@@ -3,7 +3,12 @@
 package archive
 package archive
 
 
 import (
 import (
+	"bytes"
+	"fmt"
+	"io/ioutil"
 	"os"
 	"os"
+	"path"
+	"syscall"
 	"testing"
 	"testing"
 )
 )
 
 
@@ -58,3 +63,86 @@ func TestChmodTarEntry(t *testing.T) {
 		}
 		}
 	}
 	}
 }
 }
+
+func TestTarWithHardLink(t *testing.T) {
+	origin, err := ioutil.TempDir("", "docker-test-tar-hardlink")
+	if err != nil {
+		t.Fatal(err)
+	}
+	defer os.RemoveAll(origin)
+	if err := ioutil.WriteFile(path.Join(origin, "1"), []byte("hello world"), 0700); err != nil {
+		t.Fatal(err)
+	}
+	if err := os.Link(path.Join(origin, "1"), path.Join(origin, "2")); err != nil {
+		t.Fatal(err)
+	}
+
+	var i1, i2 uint64
+	if i1, err = getNlink(path.Join(origin, "1")); err != nil {
+		t.Fatal(err)
+	}
+	// sanity check that we can hardlink
+	if i1 != 2 {
+		t.Skipf("skipping since hardlinks don't work here; expected 2 links, got %d", i1)
+	}
+
+	dest, err := ioutil.TempDir("", "docker-test-tar-hardlink-dest")
+	if err != nil {
+		t.Fatal(err)
+	}
+	defer os.RemoveAll(dest)
+
+	// we'll do this in two steps to separate failure
+	fh, err := Tar(origin, Uncompressed)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	// ensure we can read the whole thing with no error, before writing back out
+	buf, err := ioutil.ReadAll(fh)
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	bRdr := bytes.NewReader(buf)
+	err = Untar(bRdr, dest, &TarOptions{Compression: Uncompressed})
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	if i1, err = getInode(path.Join(dest, "1")); err != nil {
+		t.Fatal(err)
+	}
+	if i2, err = getInode(path.Join(dest, "2")); err != nil {
+		t.Fatal(err)
+	}
+
+	if i1 != i2 {
+		t.Errorf("expected matching inodes, but got %d and %d", i1, i2)
+	}
+}
+
+func getNlink(path string) (uint64, error) {
+	stat, err := os.Stat(path)
+	if err != nil {
+		return 0, err
+	}
+	statT, ok := stat.Sys().(*syscall.Stat_t)
+	if !ok {
+		return 0, fmt.Errorf("expected type *syscall.Stat_t, got %t", stat.Sys())
+	}
+	// We need this conversion on ARM64
+	return uint64(statT.Nlink), nil
+}
+
+func getInode(path string) (uint64, error) {
+	stat, err := os.Stat(path)
+	if err != nil {
+		return 0, err
+	}
+	statT, ok := stat.Sys().(*syscall.Stat_t)
+	if !ok {
+		return 0, fmt.Errorf("expected type *syscall.Stat_t, got %t", stat.Sys())
+	}
+	return statT.Ino, nil
+}