@@ -1093,20 +1093,21 @@ def setUp(self):
1093
1093
with open (join ('dirC' , 'dirD' , 'fileD' ), 'wb' ) as f :
1094
1094
f .write (b"this is file D\n " )
1095
1095
if not symlink_skip_reason :
1096
- if os .name == 'nt' :
1097
- # Workaround for http://bugs.python.org/issue13772
1098
- def dirlink (src , dest ):
1099
- os .symlink (src , dest , target_is_directory = True )
1100
- else :
1101
- def dirlink (src , dest ):
1102
- os .symlink (src , dest )
1103
1096
# Relative symlinks
1104
1097
os .symlink ('fileA' , join ('linkA' ))
1105
1098
os .symlink ('non-existing' , join ('brokenLink' ))
1106
- dirlink ('dirB' , join ('linkB' ))
1107
- dirlink (os .path .join ('..' , 'dirB' ), join ('dirA' , 'linkC' ))
1099
+ self . dirlink ('dirB' , join ('linkB' ))
1100
+ self . dirlink (os .path .join ('..' , 'dirB' ), join ('dirA' , 'linkC' ))
1108
1101
# This one goes upwards but doesn't create a loop
1109
- dirlink (os .path .join ('..' , 'dirB' ), join ('dirB' , 'linkD' ))
1102
+ self .dirlink (os .path .join ('..' , 'dirB' ), join ('dirB' , 'linkD' ))
1103
+
1104
+ if os .name == 'nt' :
1105
+ # Workaround for http://bugs.python.org/issue13772
1106
+ def dirlink (self , src , dest ):
1107
+ os .symlink (src , dest , target_is_directory = True )
1108
+ else :
1109
+ def dirlink (self , src , dest ):
1110
+ os .symlink (src , dest )
1110
1111
1111
1112
def assertSame (self , path_a , path_b ):
1112
1113
self .assertTrue (os .path .samefile (str (path_a ), str (path_b )),
@@ -1269,6 +1270,16 @@ def test_resolve_common(self):
1269
1270
p = P (BASE , 'dirA' , 'linkX' , 'linkY' , 'fileB' )
1270
1271
self ._check_resolve_absolute (p , P (BASE , 'dirB' , 'fileB' ))
1271
1272
1273
+ @with_symlinks
1274
+ def test_resolve_dot (self ):
1275
+ # See https://bitbucket.org/pitrou/pathlib/issue/9/pathresolve-fails-on-complex-symlinks
1276
+ p = self .cls (BASE )
1277
+ self .dirlink ('.' , join ('0' ))
1278
+ self .dirlink ('0/0' , join ('1' ))
1279
+ self .dirlink ('1/1' , join ('2' ))
1280
+ q = p / '2'
1281
+ self .assertEqual (q .resolve (), p )
1282
+
1272
1283
def test_with (self ):
1273
1284
p = self .cls (BASE )
1274
1285
it = p .iterdir ()
0 commit comments