@@ -1456,38 +1456,27 @@ def test_cwd(self):
1456
1456
p = self .cls .cwd ()
1457
1457
self ._test_cwd (p )
1458
1458
1459
- def _test_absolute (self ):
1459
+ def test_absolute_common (self ):
1460
1460
P = self .cls
1461
1461
1462
- # Simple absolute paths
1463
- self .assertEqualNormCase (str (P ('/' ).absolute ()), '/' )
1464
- self .assertEqualNormCase (str (P ('/a' ).absolute ()), '/a' )
1465
- self .assertEqualNormCase (str (P ('/a/b' ).absolute ()), '/a/b' )
1466
- self .assertEqualNormCase (str (P ('//a/b' ).absolute ()), '//a/b' )
1462
+ with mock .patch ("pathlib._normal_accessor.getcwd" ) as getcwd :
1463
+ getcwd .return_value = BASE
1467
1464
1468
- # Simple relative paths
1469
- self .assertEqualNormCase (str (P ().absolute ()), BASE )
1470
- self .assertEqualNormCase (str (P ('.' ).absolute ()), BASE )
1471
- self .assertEqualNormCase (str (P ('a' ).absolute ()), os .path .join (BASE , 'a' ))
1472
- self .assertEqualNormCase (str (P ('a' , 'b' , 'c' ).absolute ()), os .path .join (BASE , 'a' , 'b' , 'c' ))
1465
+ # Simple relative paths
1466
+ self .assertEqualNormCase (str (P ().absolute ()), BASE )
1467
+ self .assertEqualNormCase (str (P ('.' ).absolute ()), BASE )
1468
+ self .assertEqualNormCase (str (P ('a' ).absolute ()), os .path .join (BASE , 'a' ))
1469
+ self .assertEqualNormCase (str (P ('a' , 'b' , 'c' ).absolute ()), os .path .join (BASE , 'a' , 'b' , 'c' ))
1473
1470
1474
- # Symlinks should not be resolved
1475
- self .assertEqualNormCase (str (P ('linkB' , 'fileB' ).absolute ()), os .path .join (BASE , 'linkB' , 'fileB' ))
1476
- self .assertEqualNormCase (str (P ('brokenLink' ).absolute ()), os .path .join (BASE , 'brokenLink' ))
1477
- self .assertEqualNormCase (str (P ('brokenLinkLoop' ).absolute ()), os .path .join (BASE , 'brokenLinkLoop' ))
1471
+ # Symlinks should not be resolved
1472
+ self .assertEqualNormCase (str (P ('linkB' , 'fileB' ).absolute ()), os .path .join (BASE , 'linkB' , 'fileB' ))
1473
+ self .assertEqualNormCase (str (P ('brokenLink' ).absolute ()), os .path .join (BASE , 'brokenLink' ))
1474
+ self .assertEqualNormCase (str (P ('brokenLinkLoop' ).absolute ()), os .path .join (BASE , 'brokenLinkLoop' ))
1478
1475
1479
- # '..' entries should be preserved and not normalised
1480
- self .assertEqualNormCase (str (P ('..' ).absolute ()), os .path .join (BASE , '..' ))
1481
- self .assertEqualNormCase (str (P ('a' , '..' ).absolute ()), os .path .join (BASE , 'a' , '..' ))
1482
- self .assertEqualNormCase (str (P ('..' , 'b' ).absolute ()), os .path .join (BASE , '..' , 'b' ))
1483
-
1484
- def test_absolute (self ):
1485
- old_path = os .getcwd ()
1486
- os .chdir (BASE )
1487
- try :
1488
- self ._test_absolute ()
1489
- finally :
1490
- os .chdir (old_path )
1476
+ # '..' entries should be preserved and not normalised
1477
+ self .assertEqualNormCase (str (P ('..' ).absolute ()), os .path .join (BASE , '..' ))
1478
+ self .assertEqualNormCase (str (P ('a' , '..' ).absolute ()), os .path .join (BASE , 'a' , '..' ))
1479
+ self .assertEqualNormCase (str (P ('..' , 'b' ).absolute ()), os .path .join (BASE , '..' , 'b' ))
1491
1480
1492
1481
def _test_home (self , p ):
1493
1482
q = self .cls (os .path .expanduser ('~' ))
@@ -2490,6 +2479,17 @@ def test_glob_empty_pattern(self):
2490
2479
class PosixPathTest (_BasePathTest , unittest .TestCase ):
2491
2480
cls = pathlib .PosixPath
2492
2481
2482
+ def test_absolute (self ):
2483
+ P = self .cls
2484
+ self .assertEqualNormCase (str (P ('/' ).absolute ()), '/' )
2485
+ self .assertEqualNormCase (str (P ('/a' ).absolute ()), '/a' )
2486
+ self .assertEqualNormCase (str (P ('/a/b' ).absolute ()), '/a/b' )
2487
+
2488
+ # '//'-prefixed absolute path (supported by POSIX)
2489
+ self .assertEqualNormCase (str (P ('//' ).absolute ()), '//' )
2490
+ self .assertEqualNormCase (str (P ('//a' ).absolute ()), '//a' )
2491
+ self .assertEqualNormCase (str (P ('//a/b' ).absolute ()), '//a/b' )
2492
+
2493
2493
def _check_symlink_loop (self , * args , strict = True ):
2494
2494
path = self .cls (* args )
2495
2495
with self .assertRaises (RuntimeError ):
@@ -2655,6 +2655,34 @@ def test_handling_bad_descriptor(self):
2655
2655
class WindowsPathTest (_BasePathTest , unittest .TestCase ):
2656
2656
cls = pathlib .WindowsPath
2657
2657
2658
+ def test_absolute (self ):
2659
+ P = self .cls
2660
+
2661
+ # Simple absolute paths
2662
+ self .assertEqualNormCase (str (P ('c:\\ ' ).absolute ()), 'c:\\ ' )
2663
+ self .assertEqualNormCase (str (P ('c:\\ a' ).absolute ()), 'c:\\ a' )
2664
+ self .assertEqualNormCase (str (P ('c:\\ a\\ b' ).absolute ()), 'c:\\ a\\ b' )
2665
+
2666
+ # UNC absolute paths
2667
+ share = '\\ \\ server\\ share'
2668
+ self .assertEqualNormCase (str (P (share ).absolute ()), share )
2669
+ self .assertEqualNormCase (str (P (share + '\\ a' ).absolute ()),
2670
+ share + '\\ a' )
2671
+ self .assertEqualNormCase (str (P (share + '\\ a\\ b' ).absolute ()),
2672
+ share + '\\ a\\ b' )
2673
+
2674
+ # UNC relative paths
2675
+ with mock .patch ("pathlib._normal_accessor.getcwd" ) as getcwd :
2676
+ getcwd .return_value = share
2677
+
2678
+ self .assertEqualNormCase (str (P ().absolute ()), BASE )
2679
+ self .assertEqualNormCase (str (P ('.' ).absolute ()), BASE )
2680
+ self .assertEqualNormCase (str (P ('a' ).absolute ()),
2681
+ os .path .join (BASE , 'a' ))
2682
+ self .assertEqualNormCase (str (P ('a' , 'b' , 'c' ).absolute ()),
2683
+ os .path .join (BASE , 'a' , 'b' , 'c' ))
2684
+
2685
+
2658
2686
def test_glob (self ):
2659
2687
P = self .cls
2660
2688
p = P (BASE )
0 commit comments