gh-122903: Honor directories in zipfile.Path.glob. (#122908)

This commit is contained in:
Jason R. Coombs 2024-08-11 20:33:33 -04:00 committed by GitHub
parent 9cd0326310
commit 6aa35f3002
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 40 additions and 9 deletions

View file

@ -101,7 +101,7 @@ class TestPath(unittest.TestCase):
def test_iterdir_and_types(self, alpharep):
root = zipfile.Path(alpharep)
assert root.is_dir()
a, k, b, g, j = root.iterdir()
a, n, b, g, j = root.iterdir()
assert a.is_file()
assert b.is_dir()
assert g.is_dir()
@ -121,7 +121,7 @@ class TestPath(unittest.TestCase):
@pass_alpharep
def test_iterdir_on_file(self, alpharep):
root = zipfile.Path(alpharep)
a, k, b, g, j = root.iterdir()
a, n, b, g, j = root.iterdir()
with self.assertRaises(ValueError):
a.iterdir()
@ -136,7 +136,7 @@ class TestPath(unittest.TestCase):
@pass_alpharep
def test_open(self, alpharep):
root = zipfile.Path(alpharep)
a, k, b, g, j = root.iterdir()
a, n, b, g, j = root.iterdir()
with a.open(encoding="utf-8") as strm:
data = strm.read()
self.assertEqual(data, "content of a")
@ -240,7 +240,7 @@ class TestPath(unittest.TestCase):
@pass_alpharep
def test_read(self, alpharep):
root = zipfile.Path(alpharep)
a, k, b, g, j = root.iterdir()
a, n, b, g, j = root.iterdir()
assert a.read_text(encoding="utf-8") == "content of a"
# Also check positional encoding arg (gh-101144).
assert a.read_text("utf-8") == "content of a"
@ -306,7 +306,7 @@ class TestPath(unittest.TestCase):
reflect that change.
"""
root = zipfile.Path(alpharep)
a, k, b, g, j = root.iterdir()
a, n, b, g, j = root.iterdir()
alpharep.writestr('foo.txt', 'foo')
alpharep.writestr('bar/baz.txt', 'baz')
assert any(child.name == 'foo.txt' for child in root.iterdir())
@ -475,6 +475,18 @@ class TestPath(unittest.TestCase):
assert list(root.glob("**/*.txt")) == list(root.rglob("*.txt"))
@pass_alpharep
def test_glob_dirs(self, alpharep):
root = zipfile.Path(alpharep)
assert list(root.glob('b')) == [zipfile.Path(alpharep, "b/")]
assert list(root.glob('b*')) == [zipfile.Path(alpharep, "b/")]
@pass_alpharep
def test_glob_subdir(self, alpharep):
root = zipfile.Path(alpharep)
assert list(root.glob('g/h')) == [zipfile.Path(alpharep, "g/h/")]
assert list(root.glob('g*/h*')) == [zipfile.Path(alpharep, "g/h/")]
@pass_alpharep
def test_glob_subdirs(self, alpharep):
root = zipfile.Path(alpharep)
@ -594,3 +606,10 @@ class TestPath(unittest.TestCase):
'two-slash.txt',
'parent.txt',
]
@pass_alpharep
def test_interface(self, alpharep):
from importlib.resources.abc import Traversable
zf = zipfile.Path(alpharep)
assert isinstance(zf, Traversable)