MCPcopy Index your code
hub / github.com/python/cpython / test_realpath_symlink_loops

Method test_realpath_symlink_loops

Lib/test/test_posixpath.py:632–669  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

630 @os_helper.skip_unless_symlink
631 @skip_if_ABSTFN_contains_backslash
632 def test_realpath_symlink_loops(self):
633 # Bug #930024, return the path unchanged if we get into an infinite
634 # symlink loop in non-strict mode (default).
635 try:
636 os.symlink(ABSTFN, ABSTFN)
637 self.assertEqual(realpath(ABSTFN), ABSTFN)
638
639 os.symlink(ABSTFN+"1", ABSTFN+"2")
640 os.symlink(ABSTFN+"2", ABSTFN+"1")
641 self.assertEqual(realpath(ABSTFN+"1"), ABSTFN+"1")
642 self.assertEqual(realpath(ABSTFN+"2"), ABSTFN+"2")
643
644 self.assertEqual(realpath(ABSTFN+"1/x"), ABSTFN+"1/x")
645 self.assertEqual(realpath(ABSTFN+"1/.."), dirname(ABSTFN))
646 self.assertEqual(realpath(ABSTFN+"1/../x"), dirname(ABSTFN) + "/x")
647 os.symlink(ABSTFN+"x", ABSTFN+"y")
648 self.assertEqual(realpath(ABSTFN+"1/../" + basename(ABSTFN) + "y"),
649 ABSTFN + "x")
650 self.assertEqual(realpath(ABSTFN+"1/../" + basename(ABSTFN) + "1"),
651 ABSTFN + "1")
652
653 os.symlink(basename(ABSTFN) + "a/b", ABSTFN+"a")
654 self.assertEqual(realpath(ABSTFN+"a"), ABSTFN+"a/b")
655
656 os.symlink("../" + basename(dirname(ABSTFN)) + "/" +
657 basename(ABSTFN) + "c", ABSTFN+"c")
658 self.assertEqual(realpath(ABSTFN+"c"), ABSTFN+"c")
659
660 # Test using relative path as well.
661 with os_helper.change_cwd(dirname(ABSTFN)):
662 self.assertEqual(realpath(basename(ABSTFN)), ABSTFN)
663 finally:
664 os_helper.unlink(ABSTFN)
665 os_helper.unlink(ABSTFN+"1")
666 os_helper.unlink(ABSTFN+"2")
667 os_helper.unlink(ABSTFN+"y")
668 os_helper.unlink(ABSTFN+"c")
669 os_helper.unlink(ABSTFN+"a")
670
671 @os_helper.skip_unless_symlink
672 @skip_if_ABSTFN_contains_backslash

Callers

nothing calls this directly

Calls 5

realpathFunction · 0.90
dirnameFunction · 0.90
basenameFunction · 0.90
assertEqualMethod · 0.45
unlinkMethod · 0.45

Tested by

no test coverage detected