Skip to content

Commit

Permalink
pythongh-109959: Remove test_glob.test_selflink()
Browse files Browse the repository at this point in the history
The test is not reliable, it fails randomly on Linux:
python#109959 (comment)
  • Loading branch information
vstinner committed Feb 25, 2025
1 parent fa6a814 commit 003e008
Showing 1 changed file with 0 additions and 58 deletions.
58 changes: 0 additions & 58 deletions Lib/test/test_glob.py
Original file line number Diff line number Diff line change
Expand Up @@ -515,63 +515,5 @@ def fn(pat):
self.assertEqual(fn('**/*'), r'(?s:(?:.+[/\\])?[^/\\]+)\Z')


@skip_unless_symlink
class SymlinkLoopGlobTests(unittest.TestCase):

# gh-109959: On Linux, glob._isdir() and glob._lexists() can return False
# randomly when checking the "link/" symbolic link.
# https://github.com/python/cpython/issues/109959#issuecomment-2577550700
@unittest.skip("flaky test")
def test_selflink(self):
tempdir = TESTFN + "_dir"
os.makedirs(tempdir)
self.addCleanup(shutil.rmtree, tempdir)
with change_cwd(tempdir):
if support.verbose:
cwd = os.getcwd()
print(f"cwd: {cwd} ({len(cwd)} chars)")
cwdb = os.getcwdb()
print(f"cwdb: {cwdb!r} ({len(cwdb)} bytes)")

os.makedirs('dir')
create_empty_file(os.path.join('dir', 'file'))
os.symlink(os.curdir, os.path.join('dir', 'link'))

results = glob.glob('**', recursive=True)
self.assertEqual(len(results), len(set(results)))
results = set(results)
depth = 0
while results:
path = os.path.join(*(['dir'] + ['link'] * depth))
self.assertIn(path, results)
results.remove(path)
if not results:
break
path = os.path.join(path, 'file')
self.assertIn(path, results)
results.remove(path)
depth += 1

results = glob.glob(os.path.join('**', 'file'), recursive=True)
self.assertEqual(len(results), len(set(results)))
results = set(results)
depth = 0
while results:
path = os.path.join(*(['dir'] + ['link'] * depth + ['file']))
self.assertIn(path, results)
results.remove(path)
depth += 1

results = glob.glob(os.path.join('**', ''), recursive=True)
self.assertEqual(len(results), len(set(results)))
results = set(results)
depth = 0
while results:
path = os.path.join(*(['dir'] + ['link'] * depth + ['']))
self.assertIn(path, results)
results.remove(path)
depth += 1


if __name__ == "__main__":
unittest.main()

0 comments on commit 003e008

Please sign in to comment.