Commit 9cc9f108 authored by Russ Cox's avatar Russ Cox

archive/zip: add test for Modified vs ModTime behavior

Lock in fix for #22738, submitted in CL 78031.

Fixes #22738.

Change-Id: I6896feb158569e3f12fa7055387cbd7caad29ef4
Reviewed-on: https://go-review.googlesource.com/80635
Run-TryBot: Russ Cox <rsc@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: default avatarJoe Tsai <thebrokentoaster@gmail.com>
parent 45c57e59
...@@ -31,6 +31,7 @@ type ZipTestFile struct { ...@@ -31,6 +31,7 @@ type ZipTestFile struct {
Mode os.FileMode Mode os.FileMode
NonUTF8 bool NonUTF8 bool
ModTime time.Time ModTime time.Time
Modified time.Time
// Information describing expected zip file content. // Information describing expected zip file content.
// First, reading the entire content should produce the error ContentErr. // First, reading the entire content should produce the error ContentErr.
...@@ -56,13 +57,13 @@ var tests = []ZipTest{ ...@@ -56,13 +57,13 @@ var tests = []ZipTest{
{ {
Name: "test.txt", Name: "test.txt",
Content: []byte("This is a test text file.\n"), Content: []byte("This is a test text file.\n"),
ModTime: time.Date(2010, 9, 5, 12, 12, 1, 0, timeZone(+10*time.Hour)), Modified: time.Date(2010, 9, 5, 12, 12, 1, 0, timeZone(+10*time.Hour)),
Mode: 0644, Mode: 0644,
}, },
{ {
Name: "gophercolor16x16.png", Name: "gophercolor16x16.png",
File: "gophercolor16x16.png", File: "gophercolor16x16.png",
ModTime: time.Date(2010, 9, 5, 15, 52, 58, 0, timeZone(+10*time.Hour)), Modified: time.Date(2010, 9, 5, 15, 52, 58, 0, timeZone(+10*time.Hour)),
Mode: 0644, Mode: 0644,
}, },
}, },
...@@ -74,13 +75,13 @@ var tests = []ZipTest{ ...@@ -74,13 +75,13 @@ var tests = []ZipTest{
{ {
Name: "test.txt", Name: "test.txt",
Content: []byte("This is a test text file.\n"), Content: []byte("This is a test text file.\n"),
ModTime: time.Date(2010, 9, 5, 12, 12, 1, 0, timeZone(+10*time.Hour)), Modified: time.Date(2010, 9, 5, 12, 12, 1, 0, timeZone(+10*time.Hour)),
Mode: 0644, Mode: 0644,
}, },
{ {
Name: "gophercolor16x16.png", Name: "gophercolor16x16.png",
File: "gophercolor16x16.png", File: "gophercolor16x16.png",
ModTime: time.Date(2010, 9, 5, 15, 52, 58, 0, timeZone(+10*time.Hour)), Modified: time.Date(2010, 9, 5, 15, 52, 58, 0, timeZone(+10*time.Hour)),
Mode: 0644, Mode: 0644,
}, },
}, },
...@@ -92,7 +93,7 @@ var tests = []ZipTest{ ...@@ -92,7 +93,7 @@ var tests = []ZipTest{
{ {
Name: "r/r.zip", Name: "r/r.zip",
Content: rZipBytes(), Content: rZipBytes(),
ModTime: time.Date(2010, 3, 4, 0, 24, 16, 0, time.UTC), Modified: time.Date(2010, 3, 4, 0, 24, 16, 0, time.UTC),
Mode: 0666, Mode: 0666,
}, },
}, },
...@@ -103,7 +104,7 @@ var tests = []ZipTest{ ...@@ -103,7 +104,7 @@ var tests = []ZipTest{
{ {
Name: "symlink", Name: "symlink",
Content: []byte("../target"), Content: []byte("../target"),
ModTime: time.Date(2012, 2, 3, 19, 56, 48, 0, timeZone(-2*time.Hour)), Modified: time.Date(2012, 2, 3, 19, 56, 48, 0, timeZone(-2*time.Hour)),
Mode: 0777 | os.ModeSymlink, Mode: 0777 | os.ModeSymlink,
}, },
}, },
...@@ -121,7 +122,7 @@ var tests = []ZipTest{ ...@@ -121,7 +122,7 @@ var tests = []ZipTest{
{ {
Name: "filename", Name: "filename",
Content: []byte("This is a test textfile.\n"), Content: []byte("This is a test textfile.\n"),
ModTime: time.Date(2011, 2, 2, 13, 6, 20, 0, time.UTC), Modified: time.Date(2011, 2, 2, 13, 6, 20, 0, time.UTC),
Mode: 0666, Mode: 0666,
}, },
}, },
...@@ -133,25 +134,25 @@ var tests = []ZipTest{ ...@@ -133,25 +134,25 @@ var tests = []ZipTest{
{ {
Name: "hello", Name: "hello",
Content: []byte("world \r\n"), Content: []byte("world \r\n"),
ModTime: time.Date(2011, 12, 8, 10, 4, 24, 0, time.UTC), Modified: time.Date(2011, 12, 8, 10, 4, 24, 0, time.UTC),
Mode: 0666, Mode: 0666,
}, },
{ {
Name: "dir/bar", Name: "dir/bar",
Content: []byte("foo \r\n"), Content: []byte("foo \r\n"),
ModTime: time.Date(2011, 12, 8, 10, 4, 50, 0, time.UTC), Modified: time.Date(2011, 12, 8, 10, 4, 50, 0, time.UTC),
Mode: 0666, Mode: 0666,
}, },
{ {
Name: "dir/empty/", Name: "dir/empty/",
Content: []byte{}, Content: []byte{},
ModTime: time.Date(2011, 12, 8, 10, 8, 6, 0, time.UTC), Modified: time.Date(2011, 12, 8, 10, 8, 6, 0, time.UTC),
Mode: os.ModeDir | 0777, Mode: os.ModeDir | 0777,
}, },
{ {
Name: "readonly", Name: "readonly",
Content: []byte("important \r\n"), Content: []byte("important \r\n"),
ModTime: time.Date(2011, 12, 8, 10, 6, 8, 0, time.UTC), Modified: time.Date(2011, 12, 8, 10, 6, 8, 0, time.UTC),
Mode: 0444, Mode: 0444,
}, },
}, },
...@@ -163,25 +164,25 @@ var tests = []ZipTest{ ...@@ -163,25 +164,25 @@ var tests = []ZipTest{
{ {
Name: "hello", Name: "hello",
Content: []byte("world \r\n"), Content: []byte("world \r\n"),
ModTime: time.Date(2011, 12, 8, 10, 4, 24, 0, timeZone(0)), Modified: time.Date(2011, 12, 8, 10, 4, 24, 0, timeZone(0)),
Mode: 0666, Mode: 0666,
}, },
{ {
Name: "dir/bar", Name: "dir/bar",
Content: []byte("foo \r\n"), Content: []byte("foo \r\n"),
ModTime: time.Date(2011, 12, 8, 10, 4, 50, 0, timeZone(0)), Modified: time.Date(2011, 12, 8, 10, 4, 50, 0, timeZone(0)),
Mode: 0666, Mode: 0666,
}, },
{ {
Name: "dir/empty/", Name: "dir/empty/",
Content: []byte{}, Content: []byte{},
ModTime: time.Date(2011, 12, 8, 10, 8, 6, 0, timeZone(0)), Modified: time.Date(2011, 12, 8, 10, 8, 6, 0, timeZone(0)),
Mode: os.ModeDir | 0777, Mode: os.ModeDir | 0777,
}, },
{ {
Name: "readonly", Name: "readonly",
Content: []byte("important \r\n"), Content: []byte("important \r\n"),
ModTime: time.Date(2011, 12, 8, 10, 6, 8, 0, timeZone(0)), Modified: time.Date(2011, 12, 8, 10, 6, 8, 0, timeZone(0)),
Mode: 0444, Mode: 0444,
}, },
}, },
...@@ -194,13 +195,13 @@ var tests = []ZipTest{ ...@@ -194,13 +195,13 @@ var tests = []ZipTest{
{ {
Name: "foo.txt", Name: "foo.txt",
Content: []byte("foo\n"), Content: []byte("foo\n"),
ModTime: time.Date(2012, 3, 8, 16, 59, 10, 0, timeZone(-8*time.Hour)), Modified: time.Date(2012, 3, 8, 16, 59, 10, 0, timeZone(-8*time.Hour)),
Mode: 0644, Mode: 0644,
}, },
{ {
Name: "bar.txt", Name: "bar.txt",
Content: []byte("bar\n"), Content: []byte("bar\n"),
ModTime: time.Date(2012, 3, 8, 16, 59, 12, 0, timeZone(-8*time.Hour)), Modified: time.Date(2012, 3, 8, 16, 59, 12, 0, timeZone(-8*time.Hour)),
Mode: 0644, Mode: 0644,
}, },
}, },
...@@ -213,13 +214,13 @@ var tests = []ZipTest{ ...@@ -213,13 +214,13 @@ var tests = []ZipTest{
{ {
Name: "foo.txt", Name: "foo.txt",
Content: []byte("foo\n"), Content: []byte("foo\n"),
ModTime: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC), Modified: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC),
Mode: 0666, Mode: 0666,
}, },
{ {
Name: "bar.txt", Name: "bar.txt",
Content: []byte("bar\n"), Content: []byte("bar\n"),
ModTime: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC), Modified: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC),
Mode: 0666, Mode: 0666,
}, },
}, },
...@@ -231,14 +232,14 @@ var tests = []ZipTest{ ...@@ -231,14 +232,14 @@ var tests = []ZipTest{
{ {
Name: "foo.txt", Name: "foo.txt",
Content: []byte("foo\n"), Content: []byte("foo\n"),
ModTime: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC), Modified: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC),
Mode: 0666, Mode: 0666,
ContentErr: ErrChecksum, ContentErr: ErrChecksum,
}, },
{ {
Name: "bar.txt", Name: "bar.txt",
Content: []byte("bar\n"), Content: []byte("bar\n"),
ModTime: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC), Modified: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC),
Mode: 0666, Mode: 0666,
}, },
}, },
...@@ -251,13 +252,13 @@ var tests = []ZipTest{ ...@@ -251,13 +252,13 @@ var tests = []ZipTest{
{ {
Name: "foo.txt", Name: "foo.txt",
Content: []byte("foo\n"), Content: []byte("foo\n"),
ModTime: time.Date(2012, 3, 8, 16, 59, 10, 0, timeZone(-8*time.Hour)), Modified: time.Date(2012, 3, 8, 16, 59, 10, 0, timeZone(-8*time.Hour)),
Mode: 0644, Mode: 0644,
}, },
{ {
Name: "bar.txt", Name: "bar.txt",
Content: []byte("bar\n"), Content: []byte("bar\n"),
ModTime: time.Date(2012, 3, 8, 16, 59, 12, 0, timeZone(-8*time.Hour)), Modified: time.Date(2012, 3, 8, 16, 59, 12, 0, timeZone(-8*time.Hour)),
Mode: 0644, Mode: 0644,
}, },
}, },
...@@ -271,14 +272,14 @@ var tests = []ZipTest{ ...@@ -271,14 +272,14 @@ var tests = []ZipTest{
{ {
Name: "foo.txt", Name: "foo.txt",
Content: []byte("foo\n"), Content: []byte("foo\n"),
ModTime: time.Date(2012, 3, 8, 16, 59, 10, 0, timeZone(-8*time.Hour)), Modified: time.Date(2012, 3, 8, 16, 59, 10, 0, timeZone(-8*time.Hour)),
Mode: 0644, Mode: 0644,
ContentErr: ErrChecksum, ContentErr: ErrChecksum,
}, },
{ {
Name: "bar.txt", Name: "bar.txt",
Content: []byte("bar\n"), Content: []byte("bar\n"),
ModTime: time.Date(2012, 3, 8, 16, 59, 12, 0, timeZone(-8*time.Hour)), Modified: time.Date(2012, 3, 8, 16, 59, 12, 0, timeZone(-8*time.Hour)),
Mode: 0644, Mode: 0644,
}, },
}, },
...@@ -289,7 +290,7 @@ var tests = []ZipTest{ ...@@ -289,7 +290,7 @@ var tests = []ZipTest{
{ {
Name: "README", Name: "README",
Content: []byte("This small file is in ZIP64 format.\n"), Content: []byte("This small file is in ZIP64 format.\n"),
ModTime: time.Date(2012, 8, 10, 14, 33, 32, 0, time.UTC), Modified: time.Date(2012, 8, 10, 14, 33, 32, 0, time.UTC),
Mode: 0644, Mode: 0644,
}, },
}, },
...@@ -301,7 +302,7 @@ var tests = []ZipTest{ ...@@ -301,7 +302,7 @@ var tests = []ZipTest{
{ {
Name: "README", Name: "README",
Content: []byte("This small file is in ZIP64 format.\n"), Content: []byte("This small file is in ZIP64 format.\n"),
ModTime: time.Date(2012, 8, 10, 14, 33, 32, 0, timeZone(-4*time.Hour)), Modified: time.Date(2012, 8, 10, 14, 33, 32, 0, timeZone(-4*time.Hour)),
Mode: 0644, Mode: 0644,
}, },
}, },
...@@ -315,7 +316,7 @@ var tests = []ZipTest{ ...@@ -315,7 +316,7 @@ var tests = []ZipTest{
Name: "big.file", Name: "big.file",
Content: nil, Content: nil,
Size: 1<<32 - 1, Size: 1<<32 - 1,
ModTime: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC), Modified: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC),
Mode: 0666, Mode: 0666,
}, },
}, },
...@@ -327,7 +328,7 @@ var tests = []ZipTest{ ...@@ -327,7 +328,7 @@ var tests = []ZipTest{
Name: "世界", Name: "世界",
Content: []byte{}, Content: []byte{},
Mode: 0666, Mode: 0666,
ModTime: time.Date(2017, 11, 6, 13, 9, 27, 867862500, timeZone(-8*time.Hour)), Modified: time.Date(2017, 11, 6, 13, 9, 27, 867862500, timeZone(-8*time.Hour)),
}, },
}, },
}, },
...@@ -343,7 +344,7 @@ var tests = []ZipTest{ ...@@ -343,7 +344,7 @@ var tests = []ZipTest{
// false-positives with other encodings (e.g., Shift-JIS). // false-positives with other encodings (e.g., Shift-JIS).
// Format says encoding is not UTF-8, so we trust it. // Format says encoding is not UTF-8, so we trust it.
NonUTF8: true, NonUTF8: true,
ModTime: time.Date(2017, 11, 6, 13, 9, 27, 0, timeZone(-8*time.Hour)), Modified: time.Date(2017, 11, 6, 13, 9, 27, 0, timeZone(-8*time.Hour)),
}, },
}, },
}, },
...@@ -356,7 +357,7 @@ var tests = []ZipTest{ ...@@ -356,7 +357,7 @@ var tests = []ZipTest{
Mode: 0644, Mode: 0644,
// Name is valid UTF-8, but format does not have UTF-8 set. // Name is valid UTF-8, but format does not have UTF-8 set.
NonUTF8: true, NonUTF8: true,
ModTime: time.Date(2017, 11, 6, 13, 9, 27, 0, timeZone(-8*time.Hour)), Modified: time.Date(2017, 11, 6, 13, 9, 27, 0, timeZone(-8*time.Hour)),
}, },
}, },
}, },
...@@ -367,7 +368,7 @@ var tests = []ZipTest{ ...@@ -367,7 +368,7 @@ var tests = []ZipTest{
Name: "世界", Name: "世界",
Content: []byte{}, Content: []byte{},
Mode: 0666, Mode: 0666,
ModTime: time.Date(2017, 11, 6, 13, 9, 27, 867862500, timeZone(-8*time.Hour)), Modified: time.Date(2017, 11, 6, 13, 9, 27, 867862500, timeZone(-8*time.Hour)),
}, },
}, },
}, },
...@@ -378,7 +379,7 @@ var tests = []ZipTest{ ...@@ -378,7 +379,7 @@ var tests = []ZipTest{
Name: "世界", Name: "世界",
Content: []byte{}, Content: []byte{},
Mode: 0666, Mode: 0666,
ModTime: time.Date(2017, 11, 6, 13, 9, 27, 867000000, timeZone(-8*time.Hour)), Modified: time.Date(2017, 11, 6, 13, 9, 27, 867000000, timeZone(-8*time.Hour)),
}, },
}, },
}, },
...@@ -389,7 +390,7 @@ var tests = []ZipTest{ ...@@ -389,7 +390,7 @@ var tests = []ZipTest{
Name: "test.txt", Name: "test.txt",
Content: []byte{}, Content: []byte{},
Size: 1<<32 - 1, Size: 1<<32 - 1,
ModTime: time.Date(2017, 10, 31, 21, 11, 57, 244817900, timeZone(-7*time.Hour)), Modified: time.Date(2017, 10, 31, 21, 11, 57, 244817900, timeZone(-7*time.Hour)),
Mode: 0666, Mode: 0666,
}, },
}, },
...@@ -401,7 +402,7 @@ var tests = []ZipTest{ ...@@ -401,7 +402,7 @@ var tests = []ZipTest{
Name: "test.txt", Name: "test.txt",
Content: []byte{}, Content: []byte{},
Size: 1<<32 - 1, Size: 1<<32 - 1,
ModTime: time.Date(2017, 10, 31, 21, 11, 57, 0, timeZone(-7*time.Hour)), Modified: time.Date(2017, 10, 31, 21, 11, 57, 0, timeZone(-7*time.Hour)),
Mode: 0644, Mode: 0644,
}, },
}, },
...@@ -413,7 +414,7 @@ var tests = []ZipTest{ ...@@ -413,7 +414,7 @@ var tests = []ZipTest{
Name: "test.txt", Name: "test.txt",
Content: []byte{}, Content: []byte{},
Size: 1<<32 - 1, Size: 1<<32 - 1,
ModTime: time.Date(2017, 10, 31, 21, 17, 27, 0, timeZone(-7*time.Hour)), Modified: time.Date(2017, 10, 31, 21, 17, 27, 0, timeZone(-7*time.Hour)),
Mode: 0644, Mode: 0644,
}, },
}, },
...@@ -425,7 +426,7 @@ var tests = []ZipTest{ ...@@ -425,7 +426,7 @@ var tests = []ZipTest{
Name: "test.txt", Name: "test.txt",
Content: []byte{}, Content: []byte{},
Size: 1<<32 - 1, Size: 1<<32 - 1,
ModTime: time.Date(2017, 10, 31, 21, 11, 58, 0, time.UTC), Modified: time.Date(2017, 10, 31, 21, 11, 58, 0, time.UTC),
Mode: 0666, Mode: 0666,
}, },
}, },
...@@ -437,7 +438,7 @@ var tests = []ZipTest{ ...@@ -437,7 +438,7 @@ var tests = []ZipTest{
Name: "test.txt", Name: "test.txt",
Content: []byte{}, Content: []byte{},
Size: 1<<32 - 1, Size: 1<<32 - 1,
ModTime: time.Date(2017, 10, 31, 21, 11, 57, 244817900, timeZone(-7*time.Hour)), Modified: time.Date(2017, 10, 31, 21, 11, 57, 244817900, timeZone(-7*time.Hour)),
Mode: 0666, Mode: 0666,
}, },
}, },
...@@ -449,7 +450,7 @@ var tests = []ZipTest{ ...@@ -449,7 +450,7 @@ var tests = []ZipTest{
Name: "test.txt", Name: "test.txt",
Content: []byte{}, Content: []byte{},
Size: 1<<32 - 1, Size: 1<<32 - 1,
ModTime: time.Date(2017, 10, 31, 21, 11, 57, 244000000, timeZone(-7*time.Hour)), Modified: time.Date(2017, 10, 31, 21, 11, 57, 244000000, timeZone(-7*time.Hour)),
Mode: 0666, Mode: 0666,
}, },
}, },
...@@ -461,16 +462,30 @@ var tests = []ZipTest{ ...@@ -461,16 +462,30 @@ var tests = []ZipTest{
Name: "test.txt", Name: "test.txt",
Content: []byte{}, Content: []byte{},
Size: 1<<32 - 1, Size: 1<<32 - 1,
ModTime: time.Date(2017, 10, 31, 21, 11, 57, 0, timeZone(-7*time.Hour)), Modified: time.Date(2017, 10, 31, 21, 11, 57, 0, timeZone(-7*time.Hour)),
Mode: 0666, Mode: 0666,
}, },
}, },
}, },
{
Name: "time-22738.zip",
File: []ZipTestFile{
{
Name: "file",
Content: []byte{},
Mode: 0666,
Modified: time.Date(1999, 12, 31, 19, 0, 0, 0, timeZone(-5*time.Hour)),
ModTime: time.Date(1999, 12, 31, 19, 0, 0, 0, time.UTC),
},
},
},
} }
func TestReader(t *testing.T) { func TestReader(t *testing.T) {
for _, zt := range tests { for _, zt := range tests {
t.Run(zt.Name, func(t *testing.T) {
readTestZip(t, zt) readTestZip(t, zt)
})
} }
} }
...@@ -489,7 +504,7 @@ func readTestZip(t *testing.T, zt ZipTest) { ...@@ -489,7 +504,7 @@ func readTestZip(t *testing.T, zt ZipTest) {
} }
} }
if err != zt.Error { if err != zt.Error {
t.Errorf("%s: error=%v, want %v", zt.Name, err, zt.Error) t.Errorf("error=%v, want %v", err, zt.Error)
return return
} }
...@@ -505,16 +520,19 @@ func readTestZip(t *testing.T, zt ZipTest) { ...@@ -505,16 +520,19 @@ func readTestZip(t *testing.T, zt ZipTest) {
} }
if z.Comment != zt.Comment { if z.Comment != zt.Comment {
t.Errorf("%s: comment=%q, want %q", zt.Name, z.Comment, zt.Comment) t.Errorf("comment=%q, want %q", z.Comment, zt.Comment)
} }
if len(z.File) != len(zt.File) { if len(z.File) != len(zt.File) {
t.Fatalf("%s: file count=%d, want %d", zt.Name, len(z.File), len(zt.File)) t.Fatalf("file count=%d, want %d", len(z.File), len(zt.File))
} }
// test read of each file // test read of each file
for i, ft := range zt.File { for i, ft := range zt.File {
readTestFile(t, zt, ft, z.File[i]) readTestFile(t, zt, ft, z.File[i])
} }
if t.Failed() {
return
}
// test simultaneous reads // test simultaneous reads
n := 0 n := 0
...@@ -541,13 +559,16 @@ func equalTimeAndZone(t1, t2 time.Time) bool { ...@@ -541,13 +559,16 @@ func equalTimeAndZone(t1, t2 time.Time) bool {
func readTestFile(t *testing.T, zt ZipTest, ft ZipTestFile, f *File) { func readTestFile(t *testing.T, zt ZipTest, ft ZipTestFile, f *File) {
if f.Name != ft.Name { if f.Name != ft.Name {
t.Errorf("%s: name=%q, want %q", zt.Name, f.Name, ft.Name) t.Errorf("name=%q, want %q", f.Name, ft.Name)
}
if !ft.Modified.IsZero() && !equalTimeAndZone(f.Modified, ft.Modified) {
t.Errorf("%s: Modified=%s, want %s", f.Name, f.Modified, ft.Modified)
} }
if !equalTimeAndZone(f.Modified, ft.ModTime) { if !ft.ModTime.IsZero() && !equalTimeAndZone(f.ModTime(), ft.ModTime) {
t.Errorf("%s: %s: mtime=%s, want %s", zt.Name, f.Name, f.Modified, ft.ModTime) t.Errorf("%s: ModTime=%s, want %s", f.Name, f.ModTime(), ft.ModTime)
} }
testFileMode(t, zt.Name, f, ft.Mode) testFileMode(t, f, ft.Mode)
size := uint64(f.UncompressedSize) size := uint64(f.UncompressedSize)
if size == uint32max { if size == uint32max {
...@@ -558,7 +579,7 @@ func readTestFile(t *testing.T, zt ZipTest, ft ZipTestFile, f *File) { ...@@ -558,7 +579,7 @@ func readTestFile(t *testing.T, zt ZipTest, ft ZipTestFile, f *File) {
r, err := f.Open() r, err := f.Open()
if err != nil { if err != nil {
t.Errorf("%s: %v", zt.Name, err) t.Errorf("%v", err)
return return
} }
...@@ -576,7 +597,7 @@ func readTestFile(t *testing.T, zt ZipTest, ft ZipTestFile, f *File) { ...@@ -576,7 +597,7 @@ func readTestFile(t *testing.T, zt ZipTest, ft ZipTestFile, f *File) {
var b bytes.Buffer var b bytes.Buffer
_, err = io.Copy(&b, r) _, err = io.Copy(&b, r)
if err != ft.ContentErr { if err != ft.ContentErr {
t.Errorf("%s: copying contents: %v (want %v)", zt.Name, err, ft.ContentErr) t.Errorf("copying contents: %v (want %v)", err, ft.ContentErr)
} }
if err != nil { if err != nil {
return return
...@@ -608,12 +629,12 @@ func readTestFile(t *testing.T, zt ZipTest, ft ZipTestFile, f *File) { ...@@ -608,12 +629,12 @@ func readTestFile(t *testing.T, zt ZipTest, ft ZipTestFile, f *File) {
} }
} }
func testFileMode(t *testing.T, zipName string, f *File, want os.FileMode) { func testFileMode(t *testing.T, f *File, want os.FileMode) {
mode := f.Mode() mode := f.Mode()
if want == 0 { if want == 0 {
t.Errorf("%s: %s mode: got %v, want none", zipName, f.Name, mode) t.Errorf("%s mode: got %v, want none", f.Name, mode)
} else if mode != want { } else if mode != want {
t.Errorf("%s: %s mode: want %v, got %v", zipName, f.Name, want, mode) t.Errorf("%s mode: want %v, got %v", f.Name, want, mode)
} }
} }
......
...@@ -321,7 +321,7 @@ func testReadFile(t *testing.T, f *File, wt *WriteTest) { ...@@ -321,7 +321,7 @@ func testReadFile(t *testing.T, f *File, wt *WriteTest) {
if f.Name != wt.Name { if f.Name != wt.Name {
t.Fatalf("File name: got %q, want %q", f.Name, wt.Name) t.Fatalf("File name: got %q, want %q", f.Name, wt.Name)
} }
testFileMode(t, wt.Name, f, wt.Mode) testFileMode(t, f, wt.Mode)
rc, err := f.Open() rc, err := f.Open()
if err != nil { if err != nil {
t.Fatal("opening:", err) t.Fatal("opening:", err)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment