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

Method test_realpath_symlink_loops_strict

Lib/test/test_posixpath.py:674–711  ·  view source on GitHub ↗
(self, kwargs)

Source from the content-addressed store, hash-verified

672 @skip_if_ABSTFN_contains_backslash
673 @_parameterize({'strict': True}, {'strict': ALL_BUT_LAST}, {'strict': ALLOW_MISSING})
674 def test_realpath_symlink_loops_strict(self, kwargs):
675 # Bug #43757, raise OSError if we get into an infinite symlink loop in
676 # the strict modes.
677 try:
678 os.symlink(ABSTFN, ABSTFN)
679 self.assertRaises(OSError, realpath, ABSTFN, **kwargs)
680
681 os.symlink(ABSTFN+"1", ABSTFN+"2")
682 os.symlink(ABSTFN+"2", ABSTFN+"1")
683 self.assertRaises(OSError, realpath, ABSTFN+"1", **kwargs)
684 self.assertRaises(OSError, realpath, ABSTFN+"2", **kwargs)
685
686 self.assertRaises(OSError, realpath, ABSTFN+"1/x", **kwargs)
687 self.assertRaises(OSError, realpath, ABSTFN+"1/..", **kwargs)
688 self.assertRaises(OSError, realpath, ABSTFN+"1/../x", **kwargs)
689 os.symlink(ABSTFN+"x", ABSTFN+"y")
690 self.assertRaises(OSError, realpath,
691 ABSTFN+"1/../" + basename(ABSTFN) + "y", **kwargs)
692 self.assertRaises(OSError, realpath,
693 ABSTFN+"1/../" + basename(ABSTFN) + "1", **kwargs)
694
695 os.symlink(basename(ABSTFN) + "a/b", ABSTFN+"a")
696 self.assertRaises(OSError, realpath, ABSTFN+"a", **kwargs)
697
698 os.symlink("../" + basename(dirname(ABSTFN)) + "/" +
699 basename(ABSTFN) + "c", ABSTFN+"c")
700 self.assertRaises(OSError, realpath, ABSTFN+"c", **kwargs)
701
702 # Test using relative path as well.
703 with os_helper.change_cwd(dirname(ABSTFN)):
704 self.assertRaises(OSError, realpath, basename(ABSTFN), **kwargs)
705 finally:
706 os_helper.unlink(ABSTFN)
707 os_helper.unlink(ABSTFN+"1")
708 os_helper.unlink(ABSTFN+"2")
709 os_helper.unlink(ABSTFN+"y")
710 os_helper.unlink(ABSTFN+"c")
711 os_helper.unlink(ABSTFN+"a")
712
713 @os_helper.skip_unless_symlink
714 @skip_if_ABSTFN_contains_backslash

Callers

nothing calls this directly

Calls 4

basenameFunction · 0.90
dirnameFunction · 0.90
assertRaisesMethod · 0.45
unlinkMethod · 0.45

Tested by

no test coverage detected