@@ -695,6 +695,65 @@ def test_realpath_unreadable_symlink(self):
695695 os .chmod (ABSTFN , 0o755 , follow_symlinks = False )
696696 os .unlink (ABSTFN )
697697
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+
698757 def test_relpath (self ):
699758 (real_getcwd , os .getcwd ) = (os .getcwd , lambda : r"/home/user/bar" )
700759 try :
0 commit comments