@@ -695,6 +695,65 @@ def test_realpath_unreadable_symlink(self):
695
695
os .chmod (ABSTFN , 0o755 , follow_symlinks = False )
696
696
os .unlink (ABSTFN )
697
697
698
+ @skip_if_ABSTFN_contains_backslash
699
+ def test_realpath_nonterminal_file (self ):
700
+ try :
701
+ with open (ABSTFN , 'w' ) as f :
702
+ f .write ('test_posixpath wuz ere' )
703
+ self .assertEqual (realpath (ABSTFN , strict = False ), ABSTFN )
704
+ self .assertEqual (realpath (ABSTFN , strict = True ), ABSTFN )
705
+ self .assertEqual (realpath (ABSTFN + "/" , strict = False ), ABSTFN )
706
+ self .assertRaises (NotADirectoryError , realpath , ABSTFN + "/" , strict = True )
707
+ self .assertEqual (realpath (ABSTFN + "/." , strict = False ), ABSTFN )
708
+ self .assertRaises (NotADirectoryError , realpath , ABSTFN + "/." , strict = True )
709
+ self .assertEqual (realpath (ABSTFN + "/.." , strict = False ), dirname (ABSTFN ))
710
+ self .assertRaises (NotADirectoryError , realpath , ABSTFN + "/.." , strict = True )
711
+ self .assertEqual (realpath (ABSTFN + "/subdir" , strict = False ), ABSTFN + "/subdir" )
712
+ self .assertRaises (NotADirectoryError , realpath , ABSTFN + "/subdir" , strict = True )
713
+ finally :
714
+ os_helper .unlink (ABSTFN )
715
+
716
+ @os_helper .skip_unless_symlink
717
+ @skip_if_ABSTFN_contains_backslash
718
+ def test_realpath_nonterminal_symlink_to_file (self ):
719
+ try :
720
+ with open (ABSTFN + "1" , 'w' ) as f :
721
+ f .write ('test_posixpath wuz ere' )
722
+ os .symlink (ABSTFN + "1" , ABSTFN )
723
+ self .assertEqual (realpath (ABSTFN , strict = False ), ABSTFN + "1" )
724
+ self .assertEqual (realpath (ABSTFN , strict = True ), ABSTFN + "1" )
725
+ self .assertEqual (realpath (ABSTFN + "/" , strict = False ), ABSTFN + "1" )
726
+ self .assertRaises (NotADirectoryError , realpath , ABSTFN + "/" , strict = True )
727
+ self .assertEqual (realpath (ABSTFN + "/." , strict = False ), ABSTFN + "1" )
728
+ self .assertRaises (NotADirectoryError , realpath , ABSTFN + "/." , strict = True )
729
+ self .assertEqual (realpath (ABSTFN + "/.." , strict = False ), dirname (ABSTFN ))
730
+ self .assertRaises (NotADirectoryError , realpath , ABSTFN + "/.." , strict = True )
731
+ self .assertEqual (realpath (ABSTFN + "/subdir" , strict = False ), ABSTFN + "1/subdir" )
732
+ self .assertRaises (NotADirectoryError , realpath , ABSTFN + "/subdir" , strict = True )
733
+ finally :
734
+ os_helper .unlink (ABSTFN )
735
+
736
+ @os_helper .skip_unless_symlink
737
+ @skip_if_ABSTFN_contains_backslash
738
+ def test_realpath_nonterminal_symlink_to_symlinks_to_file (self ):
739
+ try :
740
+ with open (ABSTFN + "2" , 'w' ) as f :
741
+ f .write ('test_posixpath wuz ere' )
742
+ os .symlink (ABSTFN + "2" , ABSTFN + "1" )
743
+ os .symlink (ABSTFN + "1" , ABSTFN )
744
+ self .assertEqual (realpath (ABSTFN , strict = False ), ABSTFN + "2" )
745
+ self .assertEqual (realpath (ABSTFN , strict = True ), ABSTFN + "2" )
746
+ self .assertEqual (realpath (ABSTFN + "/" , strict = False ), ABSTFN + "2" )
747
+ self .assertRaises (NotADirectoryError , realpath , ABSTFN + "/" , strict = True )
748
+ self .assertEqual (realpath (ABSTFN + "/." , strict = False ), ABSTFN + "2" )
749
+ self .assertRaises (NotADirectoryError , realpath , ABSTFN + "/." , strict = True )
750
+ self .assertEqual (realpath (ABSTFN + "/.." , strict = False ), dirname (ABSTFN ))
751
+ self .assertRaises (NotADirectoryError , realpath , ABSTFN + "/.." , strict = True )
752
+ self .assertEqual (realpath (ABSTFN + "/subdir" , strict = False ), ABSTFN + "2/subdir" )
753
+ self .assertRaises (NotADirectoryError , realpath , ABSTFN + "/subdir" , strict = True )
754
+ finally :
755
+ os_helper .unlink (ABSTFN )
756
+
698
757
def test_relpath (self ):
699
758
(real_getcwd , os .getcwd ) = (os .getcwd , lambda : r"/home/user/bar" )
700
759
try :
0 commit comments