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.
This commit is contained in:
parent
6f3eaa67e5
commit
c0fac96c29
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
Loading…
Reference in New Issue