diff options
author | Russ Cox <rsc@golang.org> | 2017-11-29 11:40:52 -0500 |
---|---|---|
committer | Russ Cox <rsc@golang.org> | 2017-12-01 00:22:21 +0000 |
commit | 9cc9f1085561400425cc9705d041d37398666156 (patch) | |
tree | 9962ef4e8be8432443452f2ff5c262fb57e276da /src/archive | |
parent | 45c57e59072526b27673b51613f2438d35c48de2 (diff) | |
download | go-9cc9f1085561400425cc9705d041d37398666156.tar.gz go-9cc9f1085561400425cc9705d041d37398666156.zip |
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: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Joe Tsai <thebrokentoaster@gmail.com>
Diffstat (limited to 'src/archive')
-rw-r--r-- | src/archive/zip/reader_test.go | 371 | ||||
-rw-r--r-- | src/archive/zip/testdata/time-22738.zip | bin | 0 -> 140 bytes | |||
-rw-r--r-- | src/archive/zip/writer_test.go | 2 |
3 files changed, 197 insertions, 176 deletions
diff --git a/src/archive/zip/reader_test.go b/src/archive/zip/reader_test.go index 5fa2c80afa..0d9040f767 100644 --- a/src/archive/zip/reader_test.go +++ b/src/archive/zip/reader_test.go @@ -27,10 +27,11 @@ type ZipTest struct { } type ZipTestFile struct { - Name string - Mode os.FileMode - NonUTF8 bool - ModTime time.Time + Name string + Mode os.FileMode + NonUTF8 bool + ModTime time.Time + Modified time.Time // Information describing expected zip file content. // First, reading the entire content should produce the error ContentErr. @@ -54,16 +55,16 @@ var tests = []ZipTest{ Comment: "This is a zipfile comment.", File: []ZipTestFile{ { - Name: "test.txt", - Content: []byte("This is a test text file.\n"), - ModTime: time.Date(2010, 9, 5, 12, 12, 1, 0, timeZone(+10*time.Hour)), - Mode: 0644, + Name: "test.txt", + Content: []byte("This is a test text file.\n"), + Modified: time.Date(2010, 9, 5, 12, 12, 1, 0, timeZone(+10*time.Hour)), + Mode: 0644, }, { - Name: "gophercolor16x16.png", - File: "gophercolor16x16.png", - ModTime: time.Date(2010, 9, 5, 15, 52, 58, 0, timeZone(+10*time.Hour)), - Mode: 0644, + Name: "gophercolor16x16.png", + File: "gophercolor16x16.png", + Modified: time.Date(2010, 9, 5, 15, 52, 58, 0, timeZone(+10*time.Hour)), + Mode: 0644, }, }, }, @@ -72,16 +73,16 @@ var tests = []ZipTest{ Comment: "This is a zipfile comment.", File: []ZipTestFile{ { - Name: "test.txt", - Content: []byte("This is a test text file.\n"), - ModTime: time.Date(2010, 9, 5, 12, 12, 1, 0, timeZone(+10*time.Hour)), - Mode: 0644, + Name: "test.txt", + Content: []byte("This is a test text file.\n"), + Modified: time.Date(2010, 9, 5, 12, 12, 1, 0, timeZone(+10*time.Hour)), + Mode: 0644, }, { - Name: "gophercolor16x16.png", - File: "gophercolor16x16.png", - ModTime: time.Date(2010, 9, 5, 15, 52, 58, 0, timeZone(+10*time.Hour)), - Mode: 0644, + Name: "gophercolor16x16.png", + File: "gophercolor16x16.png", + Modified: time.Date(2010, 9, 5, 15, 52, 58, 0, timeZone(+10*time.Hour)), + Mode: 0644, }, }, }, @@ -90,10 +91,10 @@ var tests = []ZipTest{ Source: returnRecursiveZip, File: []ZipTestFile{ { - Name: "r/r.zip", - Content: rZipBytes(), - ModTime: time.Date(2010, 3, 4, 0, 24, 16, 0, time.UTC), - Mode: 0666, + Name: "r/r.zip", + Content: rZipBytes(), + Modified: time.Date(2010, 3, 4, 0, 24, 16, 0, time.UTC), + Mode: 0666, }, }, }, @@ -101,10 +102,10 @@ var tests = []ZipTest{ Name: "symlink.zip", File: []ZipTestFile{ { - Name: "symlink", - Content: []byte("../target"), - ModTime: time.Date(2012, 2, 3, 19, 56, 48, 0, timeZone(-2*time.Hour)), - Mode: 0777 | os.ModeSymlink, + Name: "symlink", + Content: []byte("../target"), + Modified: time.Date(2012, 2, 3, 19, 56, 48, 0, timeZone(-2*time.Hour)), + Mode: 0777 | os.ModeSymlink, }, }, }, @@ -119,10 +120,10 @@ var tests = []ZipTest{ Name: "dd.zip", File: []ZipTestFile{ { - Name: "filename", - Content: []byte("This is a test textfile.\n"), - ModTime: time.Date(2011, 2, 2, 13, 6, 20, 0, time.UTC), - Mode: 0666, + Name: "filename", + Content: []byte("This is a test textfile.\n"), + Modified: time.Date(2011, 2, 2, 13, 6, 20, 0, time.UTC), + Mode: 0666, }, }, }, @@ -131,28 +132,28 @@ var tests = []ZipTest{ Name: "winxp.zip", File: []ZipTestFile{ { - Name: "hello", - Content: []byte("world \r\n"), - ModTime: time.Date(2011, 12, 8, 10, 4, 24, 0, time.UTC), - Mode: 0666, + Name: "hello", + Content: []byte("world \r\n"), + Modified: time.Date(2011, 12, 8, 10, 4, 24, 0, time.UTC), + Mode: 0666, }, { - Name: "dir/bar", - Content: []byte("foo \r\n"), - ModTime: time.Date(2011, 12, 8, 10, 4, 50, 0, time.UTC), - Mode: 0666, + Name: "dir/bar", + Content: []byte("foo \r\n"), + Modified: time.Date(2011, 12, 8, 10, 4, 50, 0, time.UTC), + Mode: 0666, }, { - Name: "dir/empty/", - Content: []byte{}, - ModTime: time.Date(2011, 12, 8, 10, 8, 6, 0, time.UTC), - Mode: os.ModeDir | 0777, + Name: "dir/empty/", + Content: []byte{}, + Modified: time.Date(2011, 12, 8, 10, 8, 6, 0, time.UTC), + Mode: os.ModeDir | 0777, }, { - Name: "readonly", - Content: []byte("important \r\n"), - ModTime: time.Date(2011, 12, 8, 10, 6, 8, 0, time.UTC), - Mode: 0444, + Name: "readonly", + Content: []byte("important \r\n"), + Modified: time.Date(2011, 12, 8, 10, 6, 8, 0, time.UTC), + Mode: 0444, }, }, }, @@ -161,28 +162,28 @@ var tests = []ZipTest{ Name: "unix.zip", File: []ZipTestFile{ { - Name: "hello", - Content: []byte("world \r\n"), - ModTime: time.Date(2011, 12, 8, 10, 4, 24, 0, timeZone(0)), - Mode: 0666, + Name: "hello", + Content: []byte("world \r\n"), + Modified: time.Date(2011, 12, 8, 10, 4, 24, 0, timeZone(0)), + Mode: 0666, }, { - Name: "dir/bar", - Content: []byte("foo \r\n"), - ModTime: time.Date(2011, 12, 8, 10, 4, 50, 0, timeZone(0)), - Mode: 0666, + Name: "dir/bar", + Content: []byte("foo \r\n"), + Modified: time.Date(2011, 12, 8, 10, 4, 50, 0, timeZone(0)), + Mode: 0666, }, { - Name: "dir/empty/", - Content: []byte{}, - ModTime: time.Date(2011, 12, 8, 10, 8, 6, 0, timeZone(0)), - Mode: os.ModeDir | 0777, + Name: "dir/empty/", + Content: []byte{}, + Modified: time.Date(2011, 12, 8, 10, 8, 6, 0, timeZone(0)), + Mode: os.ModeDir | 0777, }, { - Name: "readonly", - Content: []byte("important \r\n"), - ModTime: time.Date(2011, 12, 8, 10, 6, 8, 0, timeZone(0)), - Mode: 0444, + Name: "readonly", + Content: []byte("important \r\n"), + Modified: time.Date(2011, 12, 8, 10, 6, 8, 0, timeZone(0)), + Mode: 0444, }, }, }, @@ -192,16 +193,16 @@ var tests = []ZipTest{ Name: "go-no-datadesc-sig.zip", File: []ZipTestFile{ { - Name: "foo.txt", - Content: []byte("foo\n"), - ModTime: time.Date(2012, 3, 8, 16, 59, 10, 0, timeZone(-8*time.Hour)), - Mode: 0644, + Name: "foo.txt", + Content: []byte("foo\n"), + Modified: time.Date(2012, 3, 8, 16, 59, 10, 0, timeZone(-8*time.Hour)), + Mode: 0644, }, { - Name: "bar.txt", - Content: []byte("bar\n"), - ModTime: time.Date(2012, 3, 8, 16, 59, 12, 0, timeZone(-8*time.Hour)), - Mode: 0644, + Name: "bar.txt", + Content: []byte("bar\n"), + Modified: time.Date(2012, 3, 8, 16, 59, 12, 0, timeZone(-8*time.Hour)), + Mode: 0644, }, }, }, @@ -211,16 +212,16 @@ var tests = []ZipTest{ Name: "go-with-datadesc-sig.zip", File: []ZipTestFile{ { - Name: "foo.txt", - Content: []byte("foo\n"), - ModTime: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC), - Mode: 0666, + Name: "foo.txt", + Content: []byte("foo\n"), + Modified: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC), + Mode: 0666, }, { - Name: "bar.txt", - Content: []byte("bar\n"), - ModTime: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC), - Mode: 0666, + Name: "bar.txt", + Content: []byte("bar\n"), + Modified: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC), + Mode: 0666, }, }, }, @@ -231,15 +232,15 @@ var tests = []ZipTest{ { Name: "foo.txt", 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, ContentErr: ErrChecksum, }, { - Name: "bar.txt", - Content: []byte("bar\n"), - ModTime: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC), - Mode: 0666, + Name: "bar.txt", + Content: []byte("bar\n"), + Modified: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC), + Mode: 0666, }, }, }, @@ -249,16 +250,16 @@ var tests = []ZipTest{ Name: "crc32-not-streamed.zip", File: []ZipTestFile{ { - Name: "foo.txt", - Content: []byte("foo\n"), - ModTime: time.Date(2012, 3, 8, 16, 59, 10, 0, timeZone(-8*time.Hour)), - Mode: 0644, + Name: "foo.txt", + Content: []byte("foo\n"), + Modified: time.Date(2012, 3, 8, 16, 59, 10, 0, timeZone(-8*time.Hour)), + Mode: 0644, }, { - Name: "bar.txt", - Content: []byte("bar\n"), - ModTime: time.Date(2012, 3, 8, 16, 59, 12, 0, timeZone(-8*time.Hour)), - Mode: 0644, + Name: "bar.txt", + Content: []byte("bar\n"), + Modified: time.Date(2012, 3, 8, 16, 59, 12, 0, timeZone(-8*time.Hour)), + Mode: 0644, }, }, }, @@ -271,15 +272,15 @@ var tests = []ZipTest{ { Name: "foo.txt", 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, ContentErr: ErrChecksum, }, { - Name: "bar.txt", - Content: []byte("bar\n"), - ModTime: time.Date(2012, 3, 8, 16, 59, 12, 0, timeZone(-8*time.Hour)), - Mode: 0644, + Name: "bar.txt", + Content: []byte("bar\n"), + Modified: time.Date(2012, 3, 8, 16, 59, 12, 0, timeZone(-8*time.Hour)), + Mode: 0644, }, }, }, @@ -287,10 +288,10 @@ var tests = []ZipTest{ Name: "zip64.zip", File: []ZipTestFile{ { - Name: "README", - Content: []byte("This small file is in ZIP64 format.\n"), - ModTime: time.Date(2012, 8, 10, 14, 33, 32, 0, time.UTC), - Mode: 0644, + Name: "README", + Content: []byte("This small file is in ZIP64 format.\n"), + Modified: time.Date(2012, 8, 10, 14, 33, 32, 0, time.UTC), + Mode: 0644, }, }, }, @@ -299,10 +300,10 @@ var tests = []ZipTest{ Name: "zip64-2.zip", File: []ZipTestFile{ { - Name: "README", - Content: []byte("This small file is in ZIP64 format.\n"), - ModTime: time.Date(2012, 8, 10, 14, 33, 32, 0, timeZone(-4*time.Hour)), - Mode: 0644, + Name: "README", + Content: []byte("This small file is in ZIP64 format.\n"), + Modified: time.Date(2012, 8, 10, 14, 33, 32, 0, timeZone(-4*time.Hour)), + Mode: 0644, }, }, }, @@ -312,11 +313,11 @@ var tests = []ZipTest{ Source: returnBigZipBytes, File: []ZipTestFile{ { - Name: "big.file", - Content: nil, - Size: 1<<32 - 1, - ModTime: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC), - Mode: 0666, + Name: "big.file", + Content: nil, + Size: 1<<32 - 1, + Modified: time.Date(1979, 11, 30, 0, 0, 0, 0, time.UTC), + Mode: 0666, }, }, }, @@ -324,10 +325,10 @@ var tests = []ZipTest{ Name: "utf8-7zip.zip", File: []ZipTestFile{ { - Name: "世界", - Content: []byte{}, - Mode: 0666, - ModTime: time.Date(2017, 11, 6, 13, 9, 27, 867862500, timeZone(-8*time.Hour)), + Name: "世界", + Content: []byte{}, + Mode: 0666, + Modified: time.Date(2017, 11, 6, 13, 9, 27, 867862500, timeZone(-8*time.Hour)), }, }, }, @@ -342,8 +343,8 @@ var tests = []ZipTest{ // We don't do UTF-8 detection for multi-byte runes due to // false-positives with other encodings (e.g., Shift-JIS). // Format says encoding is not UTF-8, so we trust it. - NonUTF8: true, - ModTime: time.Date(2017, 11, 6, 13, 9, 27, 0, timeZone(-8*time.Hour)), + NonUTF8: true, + Modified: time.Date(2017, 11, 6, 13, 9, 27, 0, timeZone(-8*time.Hour)), }, }, }, @@ -355,8 +356,8 @@ var tests = []ZipTest{ Content: []byte{}, Mode: 0644, // Name is valid UTF-8, but format does not have UTF-8 set. - NonUTF8: true, - ModTime: time.Date(2017, 11, 6, 13, 9, 27, 0, timeZone(-8*time.Hour)), + NonUTF8: true, + Modified: time.Date(2017, 11, 6, 13, 9, 27, 0, timeZone(-8*time.Hour)), }, }, }, @@ -364,10 +365,10 @@ var tests = []ZipTest{ Name: "utf8-winrar.zip", File: []ZipTestFile{ { - Name: "世界", - Content: []byte{}, - Mode: 0666, - ModTime: time.Date(2017, 11, 6, 13, 9, 27, 867862500, timeZone(-8*time.Hour)), + Name: "世界", + Content: []byte{}, + Mode: 0666, + Modified: time.Date(2017, 11, 6, 13, 9, 27, 867862500, timeZone(-8*time.Hour)), }, }, }, @@ -375,10 +376,10 @@ var tests = []ZipTest{ Name: "utf8-winzip.zip", File: []ZipTestFile{ { - Name: "世界", - Content: []byte{}, - Mode: 0666, - ModTime: time.Date(2017, 11, 6, 13, 9, 27, 867000000, timeZone(-8*time.Hour)), + Name: "世界", + Content: []byte{}, + Mode: 0666, + Modified: time.Date(2017, 11, 6, 13, 9, 27, 867000000, timeZone(-8*time.Hour)), }, }, }, @@ -386,11 +387,11 @@ var tests = []ZipTest{ Name: "time-7zip.zip", File: []ZipTestFile{ { - Name: "test.txt", - Content: []byte{}, - Size: 1<<32 - 1, - ModTime: time.Date(2017, 10, 31, 21, 11, 57, 244817900, timeZone(-7*time.Hour)), - Mode: 0666, + Name: "test.txt", + Content: []byte{}, + Size: 1<<32 - 1, + Modified: time.Date(2017, 10, 31, 21, 11, 57, 244817900, timeZone(-7*time.Hour)), + Mode: 0666, }, }, }, @@ -398,11 +399,11 @@ var tests = []ZipTest{ Name: "time-infozip.zip", File: []ZipTestFile{ { - Name: "test.txt", - Content: []byte{}, - Size: 1<<32 - 1, - ModTime: time.Date(2017, 10, 31, 21, 11, 57, 0, timeZone(-7*time.Hour)), - Mode: 0644, + Name: "test.txt", + Content: []byte{}, + Size: 1<<32 - 1, + Modified: time.Date(2017, 10, 31, 21, 11, 57, 0, timeZone(-7*time.Hour)), + Mode: 0644, }, }, }, @@ -410,11 +411,11 @@ var tests = []ZipTest{ Name: "time-osx.zip", File: []ZipTestFile{ { - Name: "test.txt", - Content: []byte{}, - Size: 1<<32 - 1, - ModTime: time.Date(2017, 10, 31, 21, 17, 27, 0, timeZone(-7*time.Hour)), - Mode: 0644, + Name: "test.txt", + Content: []byte{}, + Size: 1<<32 - 1, + Modified: time.Date(2017, 10, 31, 21, 17, 27, 0, timeZone(-7*time.Hour)), + Mode: 0644, }, }, }, @@ -422,11 +423,11 @@ var tests = []ZipTest{ Name: "time-win7.zip", File: []ZipTestFile{ { - Name: "test.txt", - Content: []byte{}, - Size: 1<<32 - 1, - ModTime: time.Date(2017, 10, 31, 21, 11, 58, 0, time.UTC), - Mode: 0666, + Name: "test.txt", + Content: []byte{}, + Size: 1<<32 - 1, + Modified: time.Date(2017, 10, 31, 21, 11, 58, 0, time.UTC), + Mode: 0666, }, }, }, @@ -434,11 +435,11 @@ var tests = []ZipTest{ Name: "time-winrar.zip", File: []ZipTestFile{ { - Name: "test.txt", - Content: []byte{}, - Size: 1<<32 - 1, - ModTime: time.Date(2017, 10, 31, 21, 11, 57, 244817900, timeZone(-7*time.Hour)), - Mode: 0666, + Name: "test.txt", + Content: []byte{}, + Size: 1<<32 - 1, + Modified: time.Date(2017, 10, 31, 21, 11, 57, 244817900, timeZone(-7*time.Hour)), + Mode: 0666, }, }, }, @@ -446,11 +447,11 @@ var tests = []ZipTest{ Name: "time-winzip.zip", File: []ZipTestFile{ { - Name: "test.txt", - Content: []byte{}, - Size: 1<<32 - 1, - ModTime: time.Date(2017, 10, 31, 21, 11, 57, 244000000, timeZone(-7*time.Hour)), - Mode: 0666, + Name: "test.txt", + Content: []byte{}, + Size: 1<<32 - 1, + Modified: time.Date(2017, 10, 31, 21, 11, 57, 244000000, timeZone(-7*time.Hour)), + Mode: 0666, }, }, }, @@ -458,11 +459,23 @@ var tests = []ZipTest{ Name: "time-go.zip", File: []ZipTestFile{ { - Name: "test.txt", - Content: []byte{}, - Size: 1<<32 - 1, - ModTime: time.Date(2017, 10, 31, 21, 11, 57, 0, timeZone(-7*time.Hour)), - Mode: 0666, + Name: "test.txt", + Content: []byte{}, + Size: 1<<32 - 1, + Modified: time.Date(2017, 10, 31, 21, 11, 57, 0, timeZone(-7*time.Hour)), + 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), }, }, }, @@ -470,7 +483,9 @@ var tests = []ZipTest{ func TestReader(t *testing.T) { for _, zt := range tests { - readTestZip(t, zt) + t.Run(zt.Name, func(t *testing.T) { + readTestZip(t, zt) + }) } } @@ -489,7 +504,7 @@ func readTestZip(t *testing.T, zt ZipTest) { } } 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 } @@ -505,16 +520,19 @@ func readTestZip(t *testing.T, zt ZipTest) { } 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) { - 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 for i, ft := range zt.File { readTestFile(t, zt, ft, z.File[i]) } + if t.Failed() { + return + } // test simultaneous reads n := 0 @@ -541,13 +559,16 @@ func equalTimeAndZone(t1, t2 time.Time) bool { func readTestFile(t *testing.T, zt ZipTest, ft ZipTestFile, f *File) { 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) { - t.Errorf("%s: %s: mtime=%s, want %s", zt.Name, f.Name, f.Modified, ft.ModTime) + if !ft.ModTime.IsZero() && !equalTimeAndZone(f.ModTime(), 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) if size == uint32max { @@ -558,7 +579,7 @@ func readTestFile(t *testing.T, zt ZipTest, ft ZipTestFile, f *File) { r, err := f.Open() if err != nil { - t.Errorf("%s: %v", zt.Name, err) + t.Errorf("%v", err) return } @@ -576,7 +597,7 @@ func readTestFile(t *testing.T, zt ZipTest, ft ZipTestFile, f *File) { var b bytes.Buffer _, err = io.Copy(&b, r) 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 { return @@ -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() 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 { - 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) } } diff --git a/src/archive/zip/testdata/time-22738.zip b/src/archive/zip/testdata/time-22738.zip Binary files differnew file mode 100644 index 0000000000..eb85b57103 --- /dev/null +++ b/src/archive/zip/testdata/time-22738.zip diff --git a/src/archive/zip/writer_test.go b/src/archive/zip/writer_test.go index 28824d88ee..38f32296fa 100644 --- a/src/archive/zip/writer_test.go +++ b/src/archive/zip/writer_test.go @@ -321,7 +321,7 @@ func testReadFile(t *testing.T, f *File, wt *WriteTest) { if 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() if err != nil { t.Fatal("opening:", err) |