summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_pathlib.py
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2013-12-03 10:01:08 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2013-12-03 10:01:08 (GMT)
commit51af82cc398ed5d68fa2aae09c1baf7ff9fe11e3 (patch)
tree07f9f2a5cb9ad9374a097290e6c87e5538307a4f /Lib/test/test_pathlib.py
parent6e8bc50317978205ab8b2417a28f1ddfa0eb489d (diff)
downloadcpython-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-xLib/test/test_pathlib.py31
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()