From: Lars Gustäbel Date: Mon, 23 Nov 2009 16:01:56 +0000 (+0000) Subject: Merged revisions 76452 via svnmerge from X-Git-Tag: v2.6.5rc1~327 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=55fa13cb69edb6db608a9aef17f8a5f27c0e3990;p=python 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). ........ --- diff --git a/Lib/test/test_tarfile.py b/Lib/test/test_tarfile.py index 75cc0e73d6..e2682c44cc 100644 --- a/Lib/test/test_tarfile.py +++ b/Lib/test/test_tarfile.py @@ -264,6 +264,24 @@ class MiscReadTest(ReadTest): 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 invalid file raises a ReadError. + invalid = os.path.join(TEMPDIR, "invalid") + open(invalid, "wb").write("foo") + + try: + tar = object.__new__(tarfile.TarFile) + try: + tar.__init__(invalid) + except tarfile.ReadError: + self.assertTrue(tar.fileobj.closed) + else: + self.fail("ReadError not raised") + finally: + os.remove(invalid) + class StreamReadTest(ReadTest):