mirror of
https://github.com/python/cpython.git
synced 2026-01-27 05:05:50 +00:00
[3.14] gh-81325: Support path-like objects with streaming TarFile (GH-137188) (#137365)
gh-81325: Support path-like objects with streaming TarFile (GH-137188) (cherry picked from commit 3ec3d053452af8a769c18826ea61ba66fc73c8da) Co-authored-by: Alexander Urieles <aeurielesn@users.noreply.github.com> Co-authored-by: Emma Smith <emma@emmatyping.dev>
This commit is contained in:
parent
a868c6a70d
commit
b414ad1043
@ -353,7 +353,7 @@ class _Stream:
|
||||
fileobj = _StreamProxy(fileobj)
|
||||
comptype = fileobj.getcomptype()
|
||||
|
||||
self.name = name or ""
|
||||
self.name = os.fspath(name) if name is not None else ""
|
||||
self.mode = mode
|
||||
self.comptype = comptype
|
||||
self.fileobj = fileobj
|
||||
|
||||
@ -1788,6 +1788,16 @@ class StreamWriteTest(WriteTestBase, unittest.TestCase):
|
||||
finally:
|
||||
os.umask(original_umask)
|
||||
|
||||
def test_pathlike_name(self):
|
||||
expected_name = os.path.abspath(tmpname)
|
||||
tarpath = os_helper.FakePath(tmpname)
|
||||
|
||||
for func in (tarfile.open, tarfile.TarFile.open):
|
||||
with self.subTest():
|
||||
with func(tarpath, self.mode) as tar:
|
||||
self.assertEqual(tar.name, expected_name)
|
||||
os_helper.unlink(tmpname)
|
||||
|
||||
|
||||
class GzipStreamWriteTest(GzipTest, StreamWriteTest):
|
||||
def test_source_directory_not_leaked(self):
|
||||
|
||||
@ -0,0 +1,2 @@
|
||||
:class:`tarfile.TarFile` now accepts a :term:`path-like <path-like object>` when working on a tar archive.
|
||||
(Contributed by Alexander Enrique Urieles Nieto in :gh:`81325`.)
|
||||
Loading…
x
Reference in New Issue
Block a user