summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFred Drake <fdrake@acm.org>2001-02-28 05:34:16 (GMT)
committerFred Drake <fdrake@acm.org>2001-02-28 05:34:16 (GMT)
commit6e7e485d5d128a389c563298e51f9de13582d150 (patch)
treee35739e089535190d6c966a4f6de29d6e64807bc
parent90eac285c8f0f0e7679d0b3bd85b3538240e8d1d (diff)
downloadcpython-6e7e485d5d128a389c563298e51f9de13582d150.zip
cpython-6e7e485d5d128a389c563298e51f9de13582d150.tar.gz
cpython-6e7e485d5d128a389c563298e51f9de13582d150.tar.bz2
Added regression test for SF tracker bug #403871: AttributeError in
ZipFile.__del__() when there was an IOError opening the underlying file in ZipFile.__init__(). This is an odd test: since the exception is in the __del__() method, it is not propogated. This test will trigger it but regrtest.py does not detect the failure (not sure why); we are dependent on it actually being noticed by a user to get a new bug report if it ever fails. ;-( On the other hand, this makes sure that code gets exercised, so a failure could be noticed!
-rw-r--r--Lib/test/test_zipfile.py19
1 files changed, 19 insertions, 0 deletions
diff --git a/Lib/test/test_zipfile.py b/Lib/test/test_zipfile.py
index a7b46cb..0dc080b 100644
--- a/Lib/test/test_zipfile.py
+++ b/Lib/test/test_zipfile.py
@@ -1,4 +1,5 @@
import zipfile, os
+from test_support import TestFailed
srcname = "junk9630.tmp"
zipname = "junk9708.tmp"
@@ -23,3 +24,21 @@ finally:
os.unlink(srcname)
if os.path.isfile(zipname):
os.unlink(zipname)
+
+# make sure we don't raise an AttributeError when a partially-constructed
+# ZipFile instance is finalized; this tests for regression on SF tracker
+# bug #403871.
+try:
+ zipfile.ZipFile(srcname)
+except IOError:
+ # The bug we're testing for caused an AttributeError to be raised
+ # when a ZipFile instance was created for a file that did not
+ # exist; the .fp member was not initialized but was needed by the
+ # __del__() method. Since the AttributeError is in the __del__(),
+ # it is ignored, but the user should be sufficiently annoyed by
+ # the message on the output that regression will be noticed
+ # quickly.
+ pass
+else:
+ raise TestFailed("expected creation of readable ZipFile without\n"
+ " a file to raise an IOError.")