(self, link0_target)
| 1796 | self._check_complex_symlinks(self.parser.join('dirA', '..')) |
| 1797 | |
| 1798 | def _check_complex_symlinks(self, link0_target): |
| 1799 | # Test solving a non-looping chain of symlinks (issue #19887). |
| 1800 | parser = self.parser |
| 1801 | P = self.cls(self.base) |
| 1802 | P.joinpath('link1').symlink_to(parser.join('link0', 'link0'), target_is_directory=True) |
| 1803 | P.joinpath('link2').symlink_to(parser.join('link1', 'link1'), target_is_directory=True) |
| 1804 | P.joinpath('link3').symlink_to(parser.join('link2', 'link2'), target_is_directory=True) |
| 1805 | P.joinpath('link0').symlink_to(link0_target, target_is_directory=True) |
| 1806 | |
| 1807 | # Resolve absolute paths. |
| 1808 | p = (P / 'link0').resolve() |
| 1809 | self.assertEqual(p, P) |
| 1810 | self.assertEqualNormCase(str(p), self.base) |
| 1811 | p = (P / 'link1').resolve() |
| 1812 | self.assertEqual(p, P) |
| 1813 | self.assertEqualNormCase(str(p), self.base) |
| 1814 | p = (P / 'link2').resolve() |
| 1815 | self.assertEqual(p, P) |
| 1816 | self.assertEqualNormCase(str(p), self.base) |
| 1817 | p = (P / 'link3').resolve() |
| 1818 | self.assertEqual(p, P) |
| 1819 | self.assertEqualNormCase(str(p), self.base) |
| 1820 | |
| 1821 | # Resolve relative paths. |
| 1822 | old_path = os.getcwd() |
| 1823 | os.chdir(self.base) |
| 1824 | try: |
| 1825 | p = self.cls('link0').resolve() |
| 1826 | self.assertEqual(p, P) |
| 1827 | self.assertEqualNormCase(str(p), self.base) |
| 1828 | p = self.cls('link1').resolve() |
| 1829 | self.assertEqual(p, P) |
| 1830 | self.assertEqualNormCase(str(p), self.base) |
| 1831 | p = self.cls('link2').resolve() |
| 1832 | self.assertEqual(p, P) |
| 1833 | self.assertEqualNormCase(str(p), self.base) |
| 1834 | p = self.cls('link3').resolve() |
| 1835 | self.assertEqual(p, P) |
| 1836 | self.assertEqualNormCase(str(p), self.base) |
| 1837 | finally: |
| 1838 | os.chdir(old_path) |
| 1839 | |
| 1840 | def _check_resolve(self, p, expected, strict=True): |
| 1841 | q = p.resolve(strict) |
no test coverage detected