summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_zipfile.py
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2008-07-03 14:13:42 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2008-07-03 14:13:42 (GMT)
commitb09b844a5c7bb41cf67af8aafe0682c3bfdc12da (patch)
tree09cb453d31b46761a3da71b09ec4927fdaf61373 /Lib/test/test_zipfile.py
parent451a356f11d3ed498a359f94d85a7df5d6a2a843 (diff)
downloadcpython-b09b844a5c7bb41cf67af8aafe0682c3bfdc12da.zip
cpython-b09b844a5c7bb41cf67af8aafe0682c3bfdc12da.tar.gz
cpython-b09b844a5c7bb41cf67af8aafe0682c3bfdc12da.tar.bz2
Merged revisions 64688 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r64688 | martin.v.loewis | 2008-07-03 14:51:14 +0200 (Do, 03 Jul 2008) | 9 lines Patch #1622: Correct interpretation of various ZIP header fields. Also fixes - Issue #1526: Allow more than 64k files to be added to Zip64 file. - Issue #1746: Correct handling of zipfile archive comments (previously archives with comments over 4k were flagged as invalid). Allow writing Zip files with archives by setting the 'comment' attribute of a ZipFile. ........
Diffstat (limited to 'Lib/test/test_zipfile.py')
-rw-r--r--Lib/test/test_zipfile.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py
index 4682b7d..a647fc6 100644
--- a/Lib/test/test_zipfile.py
+++ b/Lib/test/test_zipfile.py
@@ -699,6 +699,55 @@ class OtherTests(unittest.TestCase):
zipf.writestr("foo.txt\x00qqq", b"O, for a Muse of Fire!")
self.assertEqual(zipf.namelist(), ['foo.txt'])
+ def test_StructSizes(self):
+ # check that ZIP internal structure sizes are calculated correctly
+ self.assertEqual(zipfile.sizeEndCentDir, 22)
+ self.assertEqual(zipfile.sizeCentralDir, 46)
+ self.assertEqual(zipfile.sizeEndCentDir64, 56)
+ self.assertEqual(zipfile.sizeEndCentDir64Locator, 20)
+
+ def testComments(self):
+ # This test checks that comments on the archive are handled properly
+
+ # check default comment is empty
+ zipf = zipfile.ZipFile(TESTFN, mode="w")
+ self.assertEqual(zipf.comment, b'')
+ zipf.writestr("foo.txt", "O, for a Muse of Fire!")
+ zipf.close()
+ zipfr = zipfile.ZipFile(TESTFN, mode="r")
+ self.assertEqual(zipfr.comment, b'')
+ zipfr.close()
+
+ # check a simple short comment
+ comment = b'Bravely taking to his feet, he beat a very brave retreat.'
+ zipf = zipfile.ZipFile(TESTFN, mode="w")
+ zipf.comment = comment
+ zipf.writestr("foo.txt", "O, for a Muse of Fire!")
+ zipf.close()
+ zipfr = zipfile.ZipFile(TESTFN, mode="r")
+ self.assertEqual(zipfr.comment, comment)
+ zipfr.close()
+
+ # check a comment of max length
+ comment2 = ''.join(['%d' % (i**3 % 10) for i in range((1 << 16)-1)])
+ comment2 = comment2.encode("ascii")
+ zipf = zipfile.ZipFile(TESTFN, mode="w")
+ zipf.comment = comment2
+ zipf.writestr("foo.txt", "O, for a Muse of Fire!")
+ zipf.close()
+ zipfr = zipfile.ZipFile(TESTFN, mode="r")
+ self.assertEqual(zipfr.comment, comment2)
+ zipfr.close()
+
+ # check a comment that is too long is truncated
+ zipf = zipfile.ZipFile(TESTFN, mode="w")
+ zipf.comment = comment2 + b'oops'
+ zipf.writestr("foo.txt", "O, for a Muse of Fire!")
+ zipf.close()
+ zipfr = zipfile.ZipFile(TESTFN, mode="r")
+ self.assertEqual(zipfr.comment, comment2)
+ zipfr.close()
+
def tearDown(self):
support.unlink(TESTFN)
support.unlink(TESTFN2)