summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorMickaƫl Schoentgen <contact@tiger-222.fr>2019-09-09 13:08:54 (GMT)
committerDino Viehland <dinoviehland@gmail.com>2019-09-09 13:08:54 (GMT)
commit992347d7376765fe3f4fc958fb1be193ba21f6c3 (patch)
treea4f56bf20ede8f3e607ad1192980231e21fdaba5 /Lib/test
parent1a8de82d3a30ecc7ed18a5ad51a0e17417ebfb89 (diff)
downloadcpython-992347d7376765fe3f4fc958fb1be193ba21f6c3.zip
cpython-992347d7376765fe3f4fc958fb1be193ba21f6c3.tar.gz
cpython-992347d7376765fe3f4fc958fb1be193ba21f6c3.tar.bz2
bpo-26185: Fix repr() on empty ZipInfo object (#13441)
* bpo-26185: Fix repr() on empty ZipInfo object It was failing on AttributeError due to inexistant but required attributes file_size and compress_size. They are now initialized to 0 in ZipInfo.__init__(). * Remove useless hasattr() in ZipInfo._open_to_write() * Completely remove file_size setting in _open_to_write().
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_zipfile.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py
index 8e437e5..f9ee740 100644
--- a/Lib/test/test_zipfile.py
+++ b/Lib/test/test_zipfile.py
@@ -1655,6 +1655,33 @@ class OtherTests(unittest.TestCase):
self.assertRaises(ValueError,
zipfile.ZipInfo, 'seventies', (1979, 1, 1, 0, 0, 0))
+ def test_create_empty_zipinfo_repr(self):
+ """Before bpo-26185, repr() on empty ZipInfo object was failing."""
+ zi = zipfile.ZipInfo(filename="empty")
+ self.assertEqual(repr(zi), "<ZipInfo filename='empty' file_size=0>")
+
+ def test_create_empty_zipinfo_default_attributes(self):
+ """Ensure all required attributes are set."""
+ zi = zipfile.ZipInfo()
+ self.assertEqual(zi.orig_filename, "NoName")
+ self.assertEqual(zi.filename, "NoName")
+ self.assertEqual(zi.date_time, (1980, 1, 1, 0, 0, 0))
+ self.assertEqual(zi.compress_type, zipfile.ZIP_STORED)
+ self.assertEqual(zi.comment, b"")
+ self.assertEqual(zi.extra, b"")
+ self.assertIn(zi.create_system, (0, 3))
+ self.assertEqual(zi.create_version, zipfile.DEFAULT_VERSION)
+ self.assertEqual(zi.extract_version, zipfile.DEFAULT_VERSION)
+ self.assertEqual(zi.reserved, 0)
+ self.assertEqual(zi.flag_bits, 0)
+ self.assertEqual(zi.volume, 0)
+ self.assertEqual(zi.internal_attr, 0)
+ self.assertEqual(zi.external_attr, 0)
+
+ # Before bpo-26185, both were missing
+ self.assertEqual(zi.file_size, 0)
+ self.assertEqual(zi.compress_size, 0)
+
def test_zipfile_with_short_extra_field(self):
"""If an extra field in the header is less than 4 bytes, skip it."""
zipdata = (