diff options
author | Fred Drake <fdrake@acm.org> | 2001-02-28 05:34:16 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2001-02-28 05:34:16 (GMT) |
commit | 6e7e485d5d128a389c563298e51f9de13582d150 (patch) | |
tree | e35739e089535190d6c966a4f6de29d6e64807bc | |
parent | 90eac285c8f0f0e7679d0b3bd85b3538240e8d1d (diff) | |
download | cpython-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.py | 19 |
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.") |