github.com/rentongzhang/docker@v1.8.2-rc1/pkg/archive/wrap_test.go (about) 1 package archive 2 3 import ( 4 "archive/tar" 5 "bytes" 6 "io" 7 "testing" 8 ) 9 10 func TestGenerateEmptyFile(t *testing.T) { 11 archive, err := Generate("emptyFile") 12 if err != nil { 13 t.Fatal(err) 14 } 15 if archive == nil { 16 t.Fatal("The generated archive should not be nil.") 17 } 18 19 expectedFiles := [][]string{ 20 {"emptyFile", ""}, 21 } 22 23 tr := tar.NewReader(archive) 24 actualFiles := make([][]string, 0, 10) 25 i := 0 26 for { 27 hdr, err := tr.Next() 28 if err == io.EOF { 29 break 30 } 31 if err != nil { 32 t.Fatal(err) 33 } 34 buf := new(bytes.Buffer) 35 buf.ReadFrom(tr) 36 content := buf.String() 37 actualFiles = append(actualFiles, []string{hdr.Name, content}) 38 i++ 39 } 40 if len(actualFiles) != len(expectedFiles) { 41 t.Fatalf("Number of expected file %d, got %d.", len(expectedFiles), len(actualFiles)) 42 } 43 for i := 0; i < len(expectedFiles); i++ { 44 actual := actualFiles[i] 45 expected := expectedFiles[i] 46 if actual[0] != expected[0] { 47 t.Fatalf("Expected name '%s', Actual name '%s'", expected[0], actual[0]) 48 } 49 if actual[1] != expected[1] { 50 t.Fatalf("Expected content '%s', Actual content '%s'", expected[1], actual[1]) 51 } 52 } 53 } 54 55 func TestGenerateWithContent(t *testing.T) { 56 archive, err := Generate("file", "content") 57 if err != nil { 58 t.Fatal(err) 59 } 60 if archive == nil { 61 t.Fatal("The generated archive should not be nil.") 62 } 63 64 expectedFiles := [][]string{ 65 {"file", "content"}, 66 } 67 68 tr := tar.NewReader(archive) 69 actualFiles := make([][]string, 0, 10) 70 i := 0 71 for { 72 hdr, err := tr.Next() 73 if err == io.EOF { 74 break 75 } 76 if err != nil { 77 t.Fatal(err) 78 } 79 buf := new(bytes.Buffer) 80 buf.ReadFrom(tr) 81 content := buf.String() 82 actualFiles = append(actualFiles, []string{hdr.Name, content}) 83 i++ 84 } 85 if len(actualFiles) != len(expectedFiles) { 86 t.Fatalf("Number of expected file %d, got %d.", len(expectedFiles), len(actualFiles)) 87 } 88 for i := 0; i < len(expectedFiles); i++ { 89 actual := actualFiles[i] 90 expected := expectedFiles[i] 91 if actual[0] != expected[0] { 92 t.Fatalf("Expected name '%s', Actual name '%s'", expected[0], actual[0]) 93 } 94 if actual[1] != expected[1] { 95 t.Fatalf("Expected content '%s', Actual content '%s'", expected[1], actual[1]) 96 } 97 } 98 }