summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Gustäbel <lars@gustaebel.de>2009-11-23 15:48:33 (GMT)
committerLars Gustäbel <lars@gustaebel.de>2009-11-23 15:48:33 (GMT)
commitb7f09238d8599188a3278fd251914dbb67e0eb8a (patch)
tree130beed78b3c5aca05ea5fe9ce0e21e1ee5255d7
parent7c5714f78cc384deb696f48a02c015f6e492d403 (diff)
downloadcpython-b7f09238d8599188a3278fd251914dbb67e0eb8a.zip
cpython-b7f09238d8599188a3278fd251914dbb67e0eb8a.tar.gz
cpython-b7f09238d8599188a3278fd251914dbb67e0eb8a.tar.bz2
Merged revisions 76452 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r76452 | lars.gustaebel | 2009-11-23 16:46:19 +0100 (Mon, 23 Nov 2009) | 3 lines Add a testcase that checks if the TarFile constructor successfully closes the internal file object in case of an error (issue #7341). ........
-rw-r--r--Lib/test/test_tarfile.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py
index 5719f08..dfa5553 100644
--- a/Lib/test/test_tarfile.py
+++ b/Lib/test/test_tarfile.py
@@ -309,6 +309,24 @@ class MiscReadTest(CommonReadTest):
self.assertEqual(tarinfo.mtime, os.path.getmtime(path))
tar.close()
+ def test_init_close_fobj(self):
+ # Issue #7341: Close the internal file object in the TarFile
+ # constructor in case of an error. For the test we rely on
+ # the fact that opening an empty file raises a ReadError.
+ empty = os.path.join(TEMPDIR, "empty")
+ open(empty, "wb").write(b"")
+
+ try:
+ tar = object.__new__(tarfile.TarFile)
+ try:
+ tar.__init__(empty)
+ except tarfile.ReadError:
+ self.assertTrue(tar.fileobj.closed)
+ else:
+ self.fail("ReadError not raised")
+ finally:
+ os.remove(empty)
+
class StreamReadTest(CommonReadTest):