diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2013-12-03 10:01:08 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2013-12-03 10:01:08 (GMT) |
commit | 51af82cc398ed5d68fa2aae09c1baf7ff9fe11e3 (patch) | |
tree | 07f9f2a5cb9ad9374a097290e6c87e5538307a4f /Lib/test/test_pathlib.py | |
parent | 6e8bc50317978205ab8b2417a28f1ddfa0eb489d (diff) | |
download | cpython-51af82cc398ed5d68fa2aae09c1baf7ff9fe11e3.zip cpython-51af82cc398ed5d68fa2aae09c1baf7ff9fe11e3.tar.gz cpython-51af82cc398ed5d68fa2aae09c1baf7ff9fe11e3.tar.bz2 |
Add a test for complex symlinks.
Diffstat (limited to 'Lib/test/test_pathlib.py')
-rwxr-xr-x | Lib/test/test_pathlib.py | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/Lib/test/test_pathlib.py b/Lib/test/test_pathlib.py index 8f0855e..c4e28e7 100755 --- a/Lib/test/test_pathlib.py +++ b/Lib/test/test_pathlib.py @@ -1093,20 +1093,21 @@ class _BasePathTest(object): with open(join('dirC', 'dirD', 'fileD'), 'wb') as f: f.write(b"this is file D\n") if not symlink_skip_reason: - if os.name == 'nt': - # Workaround for http://bugs.python.org/issue13772 - def dirlink(src, dest): - os.symlink(src, dest, target_is_directory=True) - else: - def dirlink(src, dest): - os.symlink(src, dest) # Relative symlinks os.symlink('fileA', join('linkA')) os.symlink('non-existing', join('brokenLink')) - dirlink('dirB', join('linkB')) - dirlink(os.path.join('..', 'dirB'), join('dirA', 'linkC')) + self.dirlink('dirB', join('linkB')) + self.dirlink(os.path.join('..', 'dirB'), join('dirA', 'linkC')) # This one goes upwards but doesn't create a loop - dirlink(os.path.join('..', 'dirB'), join('dirB', 'linkD')) + self.dirlink(os.path.join('..', 'dirB'), join('dirB', 'linkD')) + + if os.name == 'nt': + # Workaround for http://bugs.python.org/issue13772 + def dirlink(self, src, dest): + os.symlink(src, dest, target_is_directory=True) + else: + def dirlink(self, src, dest): + os.symlink(src, dest) def assertSame(self, path_a, path_b): self.assertTrue(os.path.samefile(str(path_a), str(path_b)), @@ -1269,6 +1270,16 @@ class _BasePathTest(object): p = P(BASE, 'dirA', 'linkX', 'linkY', 'fileB') self._check_resolve_absolute(p, P(BASE, 'dirB', 'fileB')) + @with_symlinks + def test_resolve_dot(self): + # See https://bitbucket.org/pitrou/pathlib/issue/9/pathresolve-fails-on-complex-symlinks + p = self.cls(BASE) + self.dirlink('.', join('0')) + self.dirlink('0/0', join('1')) + self.dirlink('1/1', join('2')) + q = p / '2' + self.assertEqual(q.resolve(), p) + def test_with(self): p = self.cls(BASE) it = p.iterdir() |