for entry in entries:
entry_is_dir = False
try:
- entry_is_dir = entry.is_dir()
+ entry_is_dir = entry.is_dir(follow_symlinks=False)
except OSError as e:
if not _ignore_error(e):
raise
- if entry_is_dir and not entry.is_symlink():
+ if entry_is_dir:
path = parent_path._make_child_relpath(entry.name)
for p in self._iterate_directories(path, scandir):
yield p
subdir.chmod(000)
self.assertEqual(len(set(base.glob("*"))), 4)
+ @os_helper.skip_unless_symlink
+ def test_glob_long_symlink(self):
+ # See gh-87695
+ base = self.cls(BASE) / 'long_symlink'
+ base.mkdir()
+ bad_link = base / 'bad_link'
+ bad_link.symlink_to("bad" * 200)
+ self.assertEqual(sorted(base.glob('**/*')), [bad_link])
+
def _check_resolve(self, p, expected, strict=True):
q = p.resolve(strict)
self.assertEqual(q, expected)