mirror of https://github.com/python/cpython
Issue #20262: Warnings are raised now when duplicate names are added in the
ZIP file or too long ZIP file comment is truncated.
This commit is contained in:
parent
7e52705ee3
commit
9b7a1a1af6
|
@ -844,7 +844,9 @@ class OtherTests(unittest.TestCase):
|
|||
# Create the ZIP archive
|
||||
with zipfile.ZipFile(TESTFN2, "w", zipfile.ZIP_STORED) as zipfp:
|
||||
zipfp.writestr("name", "foo")
|
||||
with self.assertWarns(UserWarning):
|
||||
zipfp.writestr("name", "bar")
|
||||
self.assertEqual(zipfp.namelist(), ["name"] * 2)
|
||||
|
||||
with zipfile.ZipFile(TESTFN2, "r") as zipfp:
|
||||
infos = zipfp.infolist()
|
||||
|
@ -1150,6 +1152,7 @@ class OtherTests(unittest.TestCase):
|
|||
|
||||
# check a comment that is too long is truncated
|
||||
with zipfile.ZipFile(TESTFN, mode="w") as zipf:
|
||||
with self.assertWarns(UserWarning):
|
||||
zipf.comment = comment2 + b'oops'
|
||||
zipf.writestr("foo.txt", "O, for a Muse of Fire!")
|
||||
with zipfile.ZipFile(TESTFN, mode="r") as zipfr:
|
||||
|
|
|
@ -1102,10 +1102,10 @@ class ZipFile:
|
|||
if not isinstance(comment, bytes):
|
||||
raise TypeError("comment: expected bytes, got %s" % type(comment))
|
||||
# check for valid comment length
|
||||
if len(comment) >= ZIP_MAX_COMMENT:
|
||||
if self.debug:
|
||||
print('Archive comment is too long; truncating to %d bytes'
|
||||
% ZIP_MAX_COMMENT)
|
||||
if len(comment) > ZIP_MAX_COMMENT:
|
||||
import warnings
|
||||
warnings.warn('Archive comment is too long; truncating to %d bytes'
|
||||
% ZIP_MAX_COMMENT, stacklevel=2)
|
||||
comment = comment[:ZIP_MAX_COMMENT]
|
||||
self._comment = comment
|
||||
self._didModify = True
|
||||
|
@ -1290,8 +1290,8 @@ class ZipFile:
|
|||
def _writecheck(self, zinfo):
|
||||
"""Check for errors before writing a file to the archive."""
|
||||
if zinfo.filename in self.NameToInfo:
|
||||
if self.debug: # Warning for duplicate names
|
||||
print("Duplicate name:", zinfo.filename)
|
||||
import warnings
|
||||
warnings.warn('Duplicate name: %r' % zinfo.filename, stacklevel=3)
|
||||
if self.mode not in ("w", "a"):
|
||||
raise RuntimeError('write() requires mode "w" or "a"')
|
||||
if not self.fp:
|
||||
|
|
|
@ -43,6 +43,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #20262: Warnings are raised now when duplicate names are added in the
|
||||
ZIP file or too long ZIP file comment is truncated.
|
||||
|
||||
- Issue #18574: Added missing newline in 100-Continue reply from
|
||||
http.server.BaseHTTPRequestHandler. Patch by Nikolaus Rath.
|
||||
|
||||
|
|
Loading…
Reference in New Issue