diff options
author | R David Murray <rdmurray@bitdance.com> | 2012-04-12 22:44:42 (GMT) |
---|---|---|
committer | R David Murray <rdmurray@bitdance.com> | 2012-04-12 22:44:42 (GMT) |
commit | 51804e9725dd7e727201ba0dffa42db5592c8023 (patch) | |
tree | 04631039381f53467bbb40b61a61de9f477b6c01 /Lib/test | |
parent | d46d69c2796172926296bbc5584551355af4a63a (diff) | |
download | cpython-51804e9725dd7e727201ba0dffa42db5592c8023.zip cpython-51804e9725dd7e727201ba0dffa42db5592c8023.tar.gz cpython-51804e9725dd7e727201ba0dffa42db5592c8023.tar.bz2 |
#14399: zipfile now correctly handles comments added to empty zipfiles.
Patch by Serhiy Storchaka.
This also moves the TypeError that results from trying to use a unicode
comment from the 'close' step to the point at which the comment is added to
the zipfile.
Diffstat (limited to 'Lib/test')
-rw-r--r-- | Lib/test/test_zipfile.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py index bb0d79a..c0675c6 100644 --- a/Lib/test/test_zipfile.py +++ b/Lib/test/test_zipfile.py @@ -972,6 +972,28 @@ class OtherTests(unittest.TestCase): with zipfile.ZipFile(TESTFN, mode="r") as zipfr: self.assertEqual(zipfr.comment, comment2) + def test_unicode_comment(self): + with zipfile.ZipFile(TESTFN, "w", zipfile.ZIP_STORED) as zipf: + zipf.writestr("foo.txt", "O, for a Muse of Fire!") + with self.assertRaises(TypeError): + zipf.comment = "this is an error" + + def test_change_comment_in_empty_archive(self): + with zipfile.ZipFile(TESTFN, "a", zipfile.ZIP_STORED) as zipf: + self.assertFalse(zipf.filelist) + zipf.comment = b"this is a comment" + with zipfile.ZipFile(TESTFN, "r") as zipf: + self.assertEqual(zipf.comment, b"this is a comment") + + def test_change_comment_in_nonempty_archive(self): + with zipfile.ZipFile(TESTFN, "w", zipfile.ZIP_STORED) as zipf: + zipf.writestr("foo.txt", "O, for a Muse of Fire!") + with zipfile.ZipFile(TESTFN, "a", zipfile.ZIP_STORED) as zipf: + self.assertTrue(zipf.filelist) + zipf.comment = b"this is a comment" + with zipfile.ZipFile(TESTFN, "r") as zipf: + self.assertEqual(zipf.comment, b"this is a comment") + def check_testzip_with_bad_crc(self, compression): """Tests that files with bad CRCs return their name from testzip.""" zipdata = self.zips_with_bad_crc[compression] |