(self, kwargs)
| 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 |
nothing calls this directly
no test coverage detected