forked from Rust-related/RustPython
Update glob from CPython 3.12.2
This commit is contained in:
committed by
Jeong, YunWon
parent
84099514e6
commit
97e3e969e4
3
Lib/glob.py
vendored
3
Lib/glob.py
vendored
@@ -132,7 +132,8 @@ def glob1(dirname, pattern):
|
||||
|
||||
def _glob2(dirname, pattern, dir_fd, dironly, include_hidden=False):
|
||||
assert _isrecursive(pattern)
|
||||
yield pattern[:0]
|
||||
if not dirname or _isdir(dirname, dir_fd):
|
||||
yield pattern[:0]
|
||||
yield from _rlistdir(dirname, dir_fd, dironly,
|
||||
include_hidden=include_hidden)
|
||||
|
||||
|
||||
32
Lib/test/test_glob.py
vendored
32
Lib/test/test_glob.py
vendored
@@ -40,6 +40,11 @@ class GlobTests(unittest.TestCase):
|
||||
os.symlink(self.norm('broken'), self.norm('sym1'))
|
||||
os.symlink('broken', self.norm('sym2'))
|
||||
os.symlink(os.path.join('a', 'bcd'), self.norm('sym3'))
|
||||
self.open_dirfd()
|
||||
|
||||
def open_dirfd(self):
|
||||
if self.dir_fd is not None:
|
||||
os.close(self.dir_fd)
|
||||
if {os.open, os.stat} <= os.supports_dir_fd and os.scandir in os.supports_fd:
|
||||
self.dir_fd = os.open(self.tempdir, os.O_RDONLY | os.O_DIRECTORY)
|
||||
else:
|
||||
@@ -332,6 +337,33 @@ class GlobTests(unittest.TestCase):
|
||||
eq(glob.glob('**', recursive=True, include_hidden=True),
|
||||
[join(*i) for i in full+rec])
|
||||
|
||||
def test_glob_non_directory(self):
|
||||
eq = self.assertSequencesEqual_noorder
|
||||
eq(self.rglob('EF'), self.joins(('EF',)))
|
||||
eq(self.rglob('EF', ''), [])
|
||||
eq(self.rglob('EF', '*'), [])
|
||||
eq(self.rglob('EF', '**'), [])
|
||||
eq(self.rglob('nonexistent'), [])
|
||||
eq(self.rglob('nonexistent', ''), [])
|
||||
eq(self.rglob('nonexistent', '*'), [])
|
||||
eq(self.rglob('nonexistent', '**'), [])
|
||||
|
||||
@unittest.skipUnless(hasattr(os, "mkfifo"), 'requires os.mkfifo()')
|
||||
@unittest.skipIf(sys.platform == "vxworks",
|
||||
"fifo requires special path on VxWorks")
|
||||
def test_glob_named_pipe(self):
|
||||
path = os.path.join(self.tempdir, 'mypipe')
|
||||
os.mkfifo(path)
|
||||
|
||||
# gh-117127: Reopen self.dir_fd to pick up directory changes
|
||||
self.open_dirfd()
|
||||
|
||||
self.assertEqual(self.rglob('mypipe'), [path])
|
||||
self.assertEqual(self.rglob('mypipe*'), [path])
|
||||
self.assertEqual(self.rglob('mypipe', ''), [])
|
||||
self.assertEqual(self.rglob('mypipe', 'sub'), [])
|
||||
self.assertEqual(self.rglob('mypipe', '*'), [])
|
||||
|
||||
def test_glob_many_open_files(self):
|
||||
depth = 30
|
||||
base = os.path.join(self.tempdir, 'deep')
|
||||
|
||||
Reference in New Issue
Block a user