Skip to content

Commit

Permalink
Add a test for complex symlinks.
Browse files Browse the repository at this point in the history
  • Loading branch information
pitrou committed Dec 3, 2013
1 parent 6e8bc50 commit 51af82c
Showing 1 changed file with 21 additions and 10 deletions.
31 changes: 21 additions & 10 deletions Lib/test/test_pathlib.py
Original file line number Diff line number Diff line change
Expand Up @@ -1093,20 +1093,21 @@ def setUp(self):
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)),
Expand Down Expand Up @@ -1269,6 +1270,16 @@ def test_resolve_common(self):
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()
Expand Down

0 comments on commit 51af82c

Please sign in to comment.