diff options
author | Raymond Hettinger <python@rcn.com> | 2003-06-27 22:25:03 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2003-06-27 22:25:03 (GMT) |
commit | c0fac96c29a3842d9370e4c954ae1f4d57f849d0 (patch) | |
tree | 79a674fa3d0b905a3d395ded0998cb56606ef298 | |
parent | 6f3eaa67e51ed0c1b493a26afdf4417d4105d96d (diff) | |
download | cpython-c0fac96c29a3842d9370e4c954ae1f4d57f849d0.zip cpython-c0fac96c29a3842d9370e4c954ae1f4d57f849d0.tar.gz cpython-c0fac96c29a3842d9370e4c954ae1f4d57f849d0.tar.bz2 |
SF patch #756996: Bare except in ZipFile.testzip()
(Contributed by Steven Taschuk)
Replaces a bare except that caused all errors to be mis-reported as
archive errors.
Added a related NEWS item.
-rw-r--r-- | Lib/test/test_zipfile.py | 21 | ||||
-rw-r--r-- | Lib/zipfile.py | 2 | ||||
-rw-r--r-- | Misc/NEWS | 4 |
3 files changed, 26 insertions, 1 deletions
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py index 57f9a89..d21a9eb 100644 --- a/Lib/test/test_zipfile.py +++ b/Lib/test/test_zipfile.py @@ -76,3 +76,24 @@ except IOError: else: raise TestFailed("expected creation of readable ZipFile without\n" " a file to raise an IOError.") + + +# Verify that testzip() doesn't swallow inappropriate exceptions. +data = StringIO.StringIO() +zipf = zipfile.ZipFile(data, mode="w") +zipf.writestr("foo.txt", "O, for a Muse of Fire!") +zipf.close() +zipf = zipfile.ZipFile(data, mode="r") +zipf.close() +try: + zipf.testzip() +except RuntimeError: + # This is correct; calling .read on a closed ZipFile should throw + # a RuntimeError, and so should calling .testzip. An earlier + # version of .testzip would swallow this exception (and any other) + # and report that the first file in the archive was corrupt. + pass +else: + raise TestFailed("expected calling .testzip on a closed ZipFile" + " to raise a RuntimeError") +del data, zipf diff --git a/Lib/zipfile.py b/Lib/zipfile.py index 207fc34..b1943c1 100644 --- a/Lib/zipfile.py +++ b/Lib/zipfile.py @@ -327,7 +327,7 @@ class ZipFile: for zinfo in self.filelist: try: self.read(zinfo.filename) # Check CRC-32 - except: + except BadZipfile: return zinfo.filename def getinfo(self, name): @@ -83,6 +83,10 @@ Extension modules Library ------- +- ZipFile.testzip() now only traps BadZipfile exceptions. Previously, + a bare except caught to much and reported all errors as a problem + in the archive. + - The logging module now has a new function, makeLogRecord() making LogHandler easier to interact with DatagramHandler and SocketHandler. |