@@ -763,158 +763,6 @@ def test_touch_mode(self):
763763 st = os .stat (join ('masked_new_file' ))
764764 self .assertEqual (stat .S_IMODE (st .st_mode ), 0o750 )
765765
766- @with_symlinks
767- def test_resolve_loop (self ):
768- # Loops with relative symlinks.
769- os .symlink ('linkX/inside' , join ('linkX' ))
770- self ._check_symlink_loop (BASE , 'linkX' )
771- os .symlink ('linkY' , join ('linkY' ))
772- self ._check_symlink_loop (BASE , 'linkY' )
773- os .symlink ('linkZ/../linkZ' , join ('linkZ' ))
774- self ._check_symlink_loop (BASE , 'linkZ' )
775- # Non-strict
776- self ._check_symlink_loop (BASE , 'linkZ' , 'foo' , strict = False )
777- # Loops with absolute symlinks.
778- os .symlink (join ('linkU/inside' ), join ('linkU' ))
779- self ._check_symlink_loop (BASE , 'linkU' )
780- os .symlink (join ('linkV' ), join ('linkV' ))
781- self ._check_symlink_loop (BASE , 'linkV' )
782- os .symlink (join ('linkW/../linkW' ), join ('linkW' ))
783- self ._check_symlink_loop (BASE , 'linkW' )
784- # Non-strict
785- self ._check_symlink_loop (BASE , 'linkW' , 'foo' , strict = False )
786-
787- def test_glob (self ):
788- P = PathPlus
789- p = P (BASE )
790- given = set (p .glob ("FILEa" ))
791- expect = set () if not support .fs_is_case_insensitive (BASE ) else given
792- self .assertEqual (given , expect )
793- self .assertEqual (set (p .glob ("FILEa*" )), set ())
794-
795- def test_rglob (self ):
796- P = PathPlus
797- p = P (BASE , "dirC" )
798- given = set (p .rglob ("FILEd" ))
799- expect = set () if not support .fs_is_case_insensitive (BASE ) else given
800- self .assertEqual (given , expect )
801- self .assertEqual (set (p .rglob ("FILEd*" )), set ())
802-
803- @unittest .skipUnless (hasattr (pwd , 'getpwall' ), 'pwd module does not expose getpwall()' )
804- def test_expanduser (self ):
805- P = PathPlus
806- support .import_module ('pwd' )
807- # stdlib
808- import pwd
809- pwdent = pwd .getpwuid (os .getuid ())
810- username = pwdent .pw_name
811- userhome = pwdent .pw_dir .rstrip ('/' ) or '/'
812- # Find arbitrary different user (if exists).
813- for pwdent in pwd .getpwall ():
814- othername = pwdent .pw_name
815- otherhome = pwdent .pw_dir .rstrip ('/' )
816- if othername != username and otherhome :
817- break
818- else :
819- othername = username
820- otherhome = userhome
821-
822- p1 = P ('~/Documents' )
823- p2 = P ('~' + username + '/Documents' )
824- p3 = P ('~' + othername + '/Documents' )
825- p4 = P ('../~' + username + '/Documents' )
826- p5 = P ('/~' + username + '/Documents' )
827- p6 = P ('' )
828- p7 = P ('~fakeuser/Documents' )
829-
830- with support .EnvironmentVarGuard () as env :
831- env .pop ('HOME' , None )
832-
833- self .assertEqual (p1 .expanduser (), P (userhome ) / 'Documents' )
834- self .assertEqual (p2 .expanduser (), P (userhome ) / 'Documents' )
835- self .assertEqual (p3 .expanduser (), P (otherhome ) / 'Documents' )
836- self .assertEqual (p4 .expanduser (), p4 )
837- self .assertEqual (p5 .expanduser (), p5 )
838- self .assertEqual (p6 .expanduser (), p6 )
839- self .assertRaises (RuntimeError , p7 .expanduser )
840-
841- env ['HOME' ] = '/tmp'
842- self .assertEqual (p1 .expanduser (), P ('/tmp/Documents' ))
843- self .assertEqual (p2 .expanduser (), P (userhome ) / 'Documents' )
844- self .assertEqual (p3 .expanduser (), P (otherhome ) / 'Documents' )
845- self .assertEqual (p4 .expanduser (), p4 )
846- self .assertEqual (p5 .expanduser (), p5 )
847- self .assertEqual (p6 .expanduser (), p6 )
848- self .assertRaises (RuntimeError , p7 .expanduser )
849-
850-
851- @only_nt
852- class WindowsPathTest (PathTest , unittest .TestCase ): # pragma: no cover (!Windows)
853-
854- def test_glob (self ):
855- P = PathPlus
856- p = P (BASE )
857- self .assertEqual (set (p .glob ("FILEa" )), {P (BASE , "fileA" )})
858- self .assertEqual (set (p .glob ("F*a" )), {P (BASE , "fileA" )})
859- self .assertEqual (set (map (str , p .glob ("FILEa" ))), {f"{ p } \\ FILEa" })
860- self .assertEqual (set (map (str , p .glob ("F*a" ))), {f"{ p } \\ fileA" })
861-
862- def test_rglob (self ):
863- P = PathPlus
864- p = P (BASE , "dirC" )
865- self .assertEqual (set (p .rglob ("FILEd" )), {P (BASE , "dirC/dirD/fileD" )})
866- self .assertEqual (set (map (str , p .rglob ("FILEd" ))), {f"{ p } \\ dirD\\ FILEd" })
867-
868- def test_expanduser (self ):
869- P = PathPlus
870- with support .EnvironmentVarGuard () as env :
871- env .pop ('HOME' , None )
872- env .pop ('USERPROFILE' , None )
873- env .pop ('HOMEPATH' , None )
874- env .pop ('HOMEDRIVE' , None )
875- env ['USERNAME' ] = 'alice'
876-
877- # test that the path returns unchanged
878- p1 = P ('~/My Documents' )
879- p2 = P ('~alice/My Documents' )
880- p3 = P ('~bob/My Documents' )
881- p4 = P ('/~/My Documents' )
882- p5 = P ('d:~/My Documents' )
883- p6 = P ('' )
884- self .assertRaises (RuntimeError , p1 .expanduser )
885- self .assertRaises (RuntimeError , p2 .expanduser )
886- self .assertRaises (RuntimeError , p3 .expanduser )
887- self .assertEqual (p4 .expanduser (), p4 )
888- self .assertEqual (p5 .expanduser (), p5 )
889- self .assertEqual (p6 .expanduser (), p6 )
890-
891- def check ():
892- env .pop ('USERNAME' , None )
893- self .assertEqual (p1 .expanduser (), P ('C:/Users/alice/My Documents' ))
894- self .assertRaises (KeyError , p2 .expanduser )
895- env ['USERNAME' ] = 'alice'
896- self .assertEqual (p2 .expanduser (), P ('C:/Users/alice/My Documents' ))
897- self .assertEqual (p3 .expanduser (), P ('C:/Users/bob/My Documents' ))
898- self .assertEqual (p4 .expanduser (), p4 )
899- self .assertEqual (p5 .expanduser (), p5 )
900- self .assertEqual (p6 .expanduser (), p6 )
901-
902- env ['HOMEPATH' ] = 'C:\\ Users\\ alice'
903- check ()
904-
905- env ['HOMEDRIVE' ] = 'C:\\ '
906- env ['HOMEPATH' ] = 'Users\\ alice'
907- check ()
908-
909- env .pop ('HOMEDRIVE' , None )
910- env .pop ('HOMEPATH' , None )
911- env ['USERPROFILE' ] = 'C:\\ Users\\ alice'
912- check ()
913-
914- # bpo-38883: ignore `HOME` when set on windows
915- env ['HOME' ] = 'C:\\ Users\\ eve'
916- check ()
917-
918766
919767if __name__ == "__main__" : # pragma: no cover
920768 unittest .main ()
0 commit comments