mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Issue #20238: TarFile opened with external fileobj and "w:gz" mode didn't
write complete output on close.
This commit is contained in:
parent
53ad0cd284
commit
9fbec7ad5e
3 changed files with 10 additions and 1 deletions
|
@ -1642,7 +1642,7 @@ class TarFile(object):
|
|||
if not extfileobj and fileobj is not None:
|
||||
fileobj.close()
|
||||
raise
|
||||
t._extfileobj = extfileobj
|
||||
t._extfileobj = False
|
||||
return t
|
||||
|
||||
@classmethod
|
||||
|
|
|
@ -855,6 +855,12 @@ class WriteTestBase(TarTest):
|
|||
tar.addfile(tarfile.TarInfo("foo"))
|
||||
tar.close()
|
||||
self.assertFalse(fobj.closed, "external fileobjs must never closed")
|
||||
# Issue #20238: Incomplete gzip output with mode="w:gz"
|
||||
data = fobj.getvalue()
|
||||
del tar
|
||||
support.gc_collect()
|
||||
self.assertFalse(fobj.closed)
|
||||
self.assertEqual(data, fobj.getvalue())
|
||||
|
||||
|
||||
class WriteTest(WriteTestBase, unittest.TestCase):
|
||||
|
|
|
@ -43,6 +43,9 @@ Core and Builtins
|
|||
Library
|
||||
-------
|
||||
|
||||
- Issue #20238: TarFile opened with external fileobj and "w:gz" mode didn't
|
||||
write complete output on close.
|
||||
|
||||
- Issue #20245: The open functions in the tarfile module now correctly handle
|
||||
empty mode.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue