зеркало из https://github.com/microsoft/docker.git
99 строки
2.1 KiB
Go
99 строки
2.1 KiB
Go
package archive
|
|
|
|
import (
|
|
"archive/tar"
|
|
"bytes"
|
|
"io"
|
|
"testing"
|
|
)
|
|
|
|
func TestGenerateEmptyFile(t *testing.T) {
|
|
archive, err := Generate("emptyFile")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if archive == nil {
|
|
t.Fatal("The generated archive should not be nil.")
|
|
}
|
|
|
|
expectedFiles := [][]string{
|
|
{"emptyFile", ""},
|
|
}
|
|
|
|
tr := tar.NewReader(archive)
|
|
actualFiles := make([][]string, 0, 10)
|
|
i := 0
|
|
for {
|
|
hdr, err := tr.Next()
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
buf := new(bytes.Buffer)
|
|
buf.ReadFrom(tr)
|
|
content := buf.String()
|
|
actualFiles = append(actualFiles, []string{hdr.Name, content})
|
|
i++
|
|
}
|
|
if len(actualFiles) != len(expectedFiles) {
|
|
t.Fatalf("Number of expected file %d, got %d.", len(expectedFiles), len(actualFiles))
|
|
}
|
|
for i := 0; i < len(expectedFiles); i++ {
|
|
actual := actualFiles[i]
|
|
expected := expectedFiles[i]
|
|
if actual[0] != expected[0] {
|
|
t.Fatalf("Expected name '%s', Actual name '%s'", expected[0], actual[0])
|
|
}
|
|
if actual[1] != expected[1] {
|
|
t.Fatalf("Expected content '%s', Actual content '%s'", expected[1], actual[1])
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestGenerateWithContent(t *testing.T) {
|
|
archive, err := Generate("file", "content")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if archive == nil {
|
|
t.Fatal("The generated archive should not be nil.")
|
|
}
|
|
|
|
expectedFiles := [][]string{
|
|
{"file", "content"},
|
|
}
|
|
|
|
tr := tar.NewReader(archive)
|
|
actualFiles := make([][]string, 0, 10)
|
|
i := 0
|
|
for {
|
|
hdr, err := tr.Next()
|
|
if err == io.EOF {
|
|
break
|
|
}
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
buf := new(bytes.Buffer)
|
|
buf.ReadFrom(tr)
|
|
content := buf.String()
|
|
actualFiles = append(actualFiles, []string{hdr.Name, content})
|
|
i++
|
|
}
|
|
if len(actualFiles) != len(expectedFiles) {
|
|
t.Fatalf("Number of expected file %d, got %d.", len(expectedFiles), len(actualFiles))
|
|
}
|
|
for i := 0; i < len(expectedFiles); i++ {
|
|
actual := actualFiles[i]
|
|
expected := expectedFiles[i]
|
|
if actual[0] != expected[0] {
|
|
t.Fatalf("Expected name '%s', Actual name '%s'", expected[0], actual[0])
|
|
}
|
|
if actual[1] != expected[1] {
|
|
t.Fatalf("Expected content '%s', Actual content '%s'", expected[1], actual[1])
|
|
}
|
|
}
|
|
}
|