
    3hhL                     $   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKJr  S SKJr  S SKJr  S SKJrJr  S SKJr  S SKJr  S SKJrJrJr  S S	KJr  S S
KJrJrJr   S SKrS SK r Sr"\#" \S5      (       a  \RH                  " 5       S :H  r" " S S\RJ                  5      r& " S S\&5      r' " S S\&5      r( " S S\&5      r) " S S\RT                  \&5      r+\RX                  " \RZ                  S:H  S5       " S S\+\'5      5       r.\RX                  " \RZ                  S:g  S5       " S S\+\(5      5       r/ " S S\+5      r0 " S  S!\Rb                  5      r2\3S":X  a  \Rh                  " 5         gg! \! a    S=rr  GNf = f)#    N)mock)pathname2url)import_helper)is_emscriptenis_wasi)infinite_recursion)	os_helper)TESTFNFS_NONASCIIFakePath)test_pathlib_abc)needs_posixneeds_windowsneeds_symlinksFgeteuidc                      \ rS rSr\R
                  r\R                  R                  \
5      r/ SQ/ SQS.rS rS rS rS rS	 r\S
 5       rS rS rS rS rS rS rS rS rS rS rS rS rS6S jr S r!S r"S r#S r$S r%S r&S r'S  r(S! r)S" r*S# r+\,S$ 5       r-\,S% 5       r.\,S& 5       r/\,S' 5       r0\,S( 5       r1S)// S*Q/ S+QS,/S-S./S/.r2\S0 5       r3\S1 5       r4\S2 5       r5\S3 5       r6\S4 5       r7S5r8g)7PurePathTest&   )
)ab)a/r   )r   b/)r   r   )a/b/)za//b)za//b//) r   r   )r   r   r   )r   r   r   ))r   /b/cd)/ar   r   )/r   r   zc/d)r   r   zb/c/d)r   /b/c/d)a/br   c                    U R                   [        R                  L a5  [        R                  S:X  a  [        R
                  O[        R                  nOU R                   nU R                  S5      nU R                  [        U5      U5        g Nntr   )	clspathlibPurePathosnamePureWindowsPathPurePosixPathassertIstypeselfexpectedps      G/opt/python-3.13.8/usr/lib/python3.13/test/test_pathlib/test_pathlib.pytest_concrete_class PurePathTest.test_concrete_class<   sY    88w'''24''T/w..wG\G\HxxHHHSMd1gx(    c                    U R                   [        R                  L a  [        nO4U R                   [        R                  L a  [
        nO[        R                  nU R                  S5      nU R                  UR                  U5        g Nr   )
r$   r%   r*   	posixpathr)   ntpathr'   pathr+   parserr-   s      r1   test_concrete_parser!PurePathTest.test_concrete_parserD   sX    88w,,, HXX000HwwHHHSMahh)r4   c                     U R                  S5      nUR                  [        L a  [        R                  " S5      nO[        R
                  " S5      nU R                  X5        g r6   )r$   r:   r7   r%   r)   r*   assertNotEqualr.   r0   qs      r1   test_different_parsers_unequal+PurePathTest.test_different_parsers_unequalN   sI    HHSM88y '',A%%c*AA!r4   c                 >   U R                  S5      nUR                  [        L a  [        R                  " S5      nO[        R
                  " S5      nU R                  [        5         X:    S S S 5        U R                  [        5         X:*    S S S 5        U R                  [        5         X:    S S S 5        U R                  [        5         X:    S S S 5        g ! , (       d  f       Nu= f! , (       d  f       Nd= f! , (       d  f       NS= f! , (       d  f       g = fr6   )r$   r:   r7   r%   r)   r*   assertRaises	TypeErrorr?   s      r1    test_different_parsers_unordered-PurePathTest.test_different_parsers_unorderedV   s    HHSM88y '',A%%c*Ay)E *y)F *y)E *y)F *) *)))))))s0   'C	C,+C=D
C),
C:=
D
Dc           	         U R                   nU" [        S5      5        U R                  U" U" S5      5      U" S5      5        U R                  U" U" S5      S5      U" S5      5        U R                  U" U" S5      U" S5      5      U" S5      5        U R                  U" U" S5      U" S5      U" S5      5      U" [        S5      5      5        U R                  U" U" S5      5      U" S5      5        g )Na/b/cr   r   r    c./a:b)r$   r   assertEqualr.   Ps     r1   test_constructor_nested$PurePathTest.test_constructor_nestede   s    HH	(7
1S6AcF+1S63521S61S6*AeH51S61S61S62Ahw6G4HI1W:'
3r4   c                 @   [         R                  " S5      n[         R                  " SS5      nU R                  X5        U R                  U R                  U5      U R                  S5      5        U R                  U R                  U5      U R                  S5      5        g )Nzb/c:\dr   zc:\dzb/c:/d)r%   r*   rL   r$   )r.   p1p2s      r1   'test_constructor_nested_foreign_flavour4PurePathTest.test_constructor_nested_foreign_flavourn   sv     ""9-""41 "txx'9:"txx'9:r4   c                 \   U R                   R                  nU R                  R                  UR	                  SU5      5      nU R                  XB5        U R                   R                  =n(       a=  U R                  R                  UR	                  SU5      5      nU R                  XB5        g g Nr   )r:   sepr$   _parse_pathreplacerL   altsep)r.   raw_pathr/   rX   actualr[   s         r1   _check_parse_pathPurePathTest._check_parse_pathw   s    kkoo%%h&6&6sC&@A*[['''6'XX))(*:*:3*GHFV. (r4   c                    U R                   nU R                  R                  nU" SSS/ 5        U" SSSS/5        U" SSSS/5        U" SSSSS/5        U" SSSSS/5        U" SSS/ SQ5        U" S	SS/ SQ5        U" SSS/ SQ5        U" S
SS/ 5        U" SSSS/5        U" SSSSS/5        U" SSSS/5        U" SSUSS/5        g )Nr   r   r   r    r   r   za/b/c/d)r   r   rJ   r   za/b//c/d.z././bza/./bza/././a/b)r^   r:   rX   )r.   checkrX   s      r1   test_parse_path_common#PurePathTest.test_parse_path_common   s    &&kkoob"b"%c"b3%(d"b3%(e"b3*-f"b3*-i"b"67j"b"67i"b"67c"b"%g"b3%(g"b3*-g"b3%(f"cC:.r4   c                     U R                  S5      nU R                  [        U5      S5        U R                  SS5        g )Nr   ra   )r   )r$   rL   str
_check_strr.   r0   s     r1   test_empty_pathPurePathTest.test_empty_path   s1    HHRLQ%U#r4   c                     U R                   nU" S5      nU" S5      nU R                  UR                  S   UR                  S   5        U R                  UR                  S   UR                  S   5        g )Nz/usr/bin/fooz/usr/local/bin         )r$   r+   partsr.   rN   r0   r@   s       r1   test_parts_interning!PurePathTest.test_parts_interning   s\    HHnaggaj!''!*-aggaj!''!*-r4   c                     U R                   nU" S5      R                  U" S5      5      nU R                  X!" S5      5        g Nr    rJ   rI   )r$   joinpathrL   r.   rN   r0   s      r1   test_join_nestedPurePathTest.test_join_nested   s7    HHeHaf%AgJ'r4   c                 l    U R                   nU" S5      U" S5      -  nU R                  X!" S5      5        g ru   )r$   rL   rw   s      r1   test_div_nestedPurePathTest.test_div_nested   s1    HHeHqvAgJ'r4   c           	      2   U R                   nS H  nU R                  US9   U" U5      n[        S[        R                  S-   5       H  n[        R
                  " X45      n[        R                  " U5      nU R                  UR                  UR                  5        U R                  Xc5        U R                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        M     S S S 5        M     g ! , (       d  f       GM  = f)N)r   r   r    rI   r   rb   /a/b/cza/b/c/pathstrr   rm   )r$   subTestrangepickleHIGHEST_PROTOCOLdumpsloadsr+   	__class__rL   hashrg   )r.   rN   r   r0   protodumpedpps          r1   test_pickling_common!PurePathTest.test_pickling_common   s    HHSGg.gJ"1f&=&=&ABE#\\!3Ff-BMM",,<$$R+$$T"XtAw7$$SWc!f5 C /. T..s   CD
D	c                    S H  nU R                  US9   U R                  U5      nUR                  R                  n[	        U5      nU R                  UR                  US-   5      U5        U R                  UR                  S5      U5        U[        U5      S-   S nU R                  [        U5      UR                  5       5        S S S 5        M     g ! , (       d  f       M  = f)Nr   r    rI   r   rb   r~   r   ()rm   )r   r$   r   __name__repr
assertTrue
startswithendswithlenrL   evalas_posix)r.   r   r0   clsnamerinners         r1   test_repr_commonPurePathTest.test_repr_common   s    CGg.HHW%++..GWs] ;Q?

33#g,*R0  eajjl; /. D..s   B2C
C#	c                     U R                   nU" S5      nU R                  UR                  5       S5        U R                  [        R                  " U5      S5        g )Nr    )r    )r$   rh   
__fspath__r'   fspathrw   s      r1   test_fspath_commonPurePathTest.test_fspath_common   s>    HHeH1		!h/r4   c                 t   U R                   nSnU R                  [        U5         U" S5        S S S 5        U R                  [        U5         U" SS5        S S S 5        U R                  [        U5         U" SS5        S S S 5        g ! , (       d  f       N_= f! , (       d  f       NH= f! , (       d  f       g = f)Nz^argument should be a str or an os\.PathLike object where __fspath__ returns a str, not 'bytes'   ar   r      b)r$   assertRaisesRegexrE   )r.   rN   messages      r1   test_bytes_exc_message#PurePathTest.test_bytes_exc_message   s    HHB##Iw7dG 8##Iw7dCL 8##Iw7c4L 87	 877777s#   	B
B4
B)
B
B&)
B7c                     [         R                  " U R                  5      nU R                  nU R	                  [        U" S5      5      SU-   S-   5        g )Nr    r   r   )r'   fsencoderX   r$   rL   bytes)r.   rX   rN   s      r1   test_as_bytes_common!PurePathTest.test_as_bytes_common   s>    kk$((#HHqx$*t*;<r4   c                 P   U R                   nU R                  U" S5      U" S5      5        U R                  U" S5      U" SS5      5        U R                  U" S5      U" S5      5        U R                  U" S5      U" S5      5        U R                  U" S5      U" 5       5        U R                  U" S5      U" S5      5        U R                  U" 5       U" S5      5        U R                  U" 5       S5        U R                  U" 5       0 5        U R                  U" 5       [        5        g )Nr    r   r   rb   r   r   )r$   rL   r>   intrM   s     r1   test_eq_commonPurePathTest.test_eq_common   s    HH51U8,51S#;/AeHaf-AeHai0AeHac*AfIqv.AC3(AC$AC$AC%r4   Nc           	        ^  Uc  T R                   nUR                  5        GH'  u  p#UR                  ST R                  5      nUR                  T R                  S5      nXE:w  a;  UU Vs/ s H  n[	        U 4S jU 5       5      PM     sn-   nUR                  U45        T R                  U5      nU H  nT R                  " U6 nT R                  XSR                  U5      5        T R                  [        U5      [        U5      5        T R                  [        U5      U5        T R                  UR                  5       U5        M     GM*     g s  snf )Nr   c              3   Z   >#    U  H   oR                  S TR                  5      v   M"     g7f)r   N)rZ   rX   ).0partr.   s     r1   	<genexpr>1PurePathTest.test_equivalences.<locals>.<genexpr>   s!     D!$,,sDHH55!s   (+zfailed with args {})equivalencesitemsrZ   rX   tupleappendr$   rL   formatr   rg   r   )	r.   r   ktuplescanonposixtpcanonr0   s	   `        r1   test_equivalencesPurePathTest.test_equivalences   s   ,,L%++-IAIIc488,EIIdhh,E~### D!DD##  ui(XXe_FHHaL  ,A,H,H,KL  a$v,7  Q/  u5  .#s   )Ec                   ^  U 4S jnT R                   nU" S5      nU" S5      nU" S5      nU" S5      nU" X45        U" X55        U" X65        U" XE5        U" XV5        T R                   nU" S5      nU" S5      nU" S5      nU" S	5      nU" X45        U" X55        U" X65        U" XE5        U" XV5        T R                  [        5         U" 5       0 :    S S S 5        g ! , (       d  f       g = f)
Nc                 J   > TR                  X5        TR                  X5        g N)
assertLessassertGreaterr   r   r.   s     r1   r   5PurePathTest.test_ordering_common.<locals>.assertLess   s    OOA!q$r4   r   r    abcr   r   rb   z/abcz/b)r$   rD   rE   )r.   r   rN   r   r   rJ   r   s   `      r1   test_ordering_common!PurePathTest.test_ordering_common   s    	% HHcFeHeHcF11111HHdGfIfIdG11111y)C"H *))s   C
C'c                 .   U R                   nU R                  [        5         U" S5      R                  5         S S S 5        U R                  [        5         U" 5       R                  5         S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = fr6   )r$   rD   
ValueErroras_urirM   s     r1   test_as_uri_commonPurePathTest.test_as_uri_common  s\    HHz*cFMMO +z*CJJL +* +***s   A5B5
B
Bc                 z   S H  nU R                  US9   U R                  U5      n[        U5      n[        U[        R
                  5      nU R                  UR                  UR                  5        U R                  XB5        U R                  [        U5      U5        S S S 5        M     g ! , (       d  f       M  = f)Nr   r   )	r   r$   r   r   r%   __dict__r+   r   rL   )r.   r   r0   r   r@   s        r1   test_repr_roundtrips!PurePathTest.test_repr_roundtrips  s    CGg.HHW%GG,,-akk1;;7  &  a!, /. D..s   B	B++
B:	c                     U R                   nU R                  U" S5      R                  S5        U R                  U" S5      R                  S5        U R                  U" S5      R                  S5        g )Nr   ra   z/a/b/.r   )r$   rL   r(   rM   s     r1   test_name_emptyPurePathTest.test_name_empty(  sU    HH2R(3b)8))3/r4   c                     U R                   nU R                  U" S5      R                  S5        U R                  U" S5      R                  S5        g )Nr   ra   )r$   rL   stemrM   s     r1   test_stem_emptyPurePathTest.test_stem_empty.  s;    HH2R(3b)r4   c                    U R                   nU R                  [        U" S5      R                  S5        U R                  [        U" S5      R                  S5        U R                  [        U" S5      R                  S5        U R                  [        U" S5      R                  S5        U R                  [        U" S5      R                  S5        g )Nr   zd.xmlra   r   r    )r$   rD   r   	with_namerM   s     r1   test_with_name_empty!PurePathTest.test_with_name_empty3  s    HH*aeoow?*af&6&6@*af&6&6@*ah&8&8"=*ah&8&8#>r4   c                    U R                   nU R                  [        U" S5      R                  S5        U R                  [        U" S5      R                  S5        U R                  [        U" S5      R                  S5        U R                  [        U" S5      R                  S5        U R                  [        U" S5      R                  S5        g )Nr   r   ra   r   r    )r$   rD   r   	with_stemrM   s     r1   test_with_stem_empty!PurePathTest.test_with_stem_empty;  s    HH*aeoos;*af&6&6<*af&6&6<*ah&8&8"=*ah&8&8#>r4   c                     U R                   nU" S5      nU R                  [        5         UR                  SS5        UR                  SSSS9  S S S 5        g ! , (       d  f       g = f)Nr    r   r   T)walk_up)r$   assertWarnsDeprecationWarningrelative_torw   s      r1   test_relative_to_several_args*PurePathTest.test_relative_to_several_argsC  sO    HHeH01MM#s#MM#sDM1 211s   $A
A%c                     U R                   nU" S5      nU R                  [        5         UR                  SS5        S S S 5        g ! , (       d  f       g = f)Nr    r   r   )r$   r   r   is_relative_torw   s      r1    test_is_relative_to_several_args-PurePathTest.test_is_relative_to_several_argsJ  s?    HHeH01S#& 211s   A
Ac                     U R                   nU" S5      nU R                  [        5         UR                  5         S S S 5        g ! , (       d  f       g = f)Nr    )r$   r   r   is_reservedrw   s      r1   test_is_reserved_deprecated(PurePathTest.test_is_reserved_deprecatedP  s8    HHeH01MMO 211s   A
Ac                     U R                   nU R                  [        U" S5      R                  S5        U R                  [        U" S5      R                  S5        g )Nr   r   ra   )r$   rD   r   matchrM   s     r1   test_match_emptyPurePathTest.test_match_emptyV  s?    HH*afllB7*afllC8r4   c                     U R                   nU" SSSSS/5        U" SSSSS/5        U" SSSSS/5        U" S	SSS	/5        U" S
SSS
/5        U" SSSS/5        g )N//a/br   //r   r   z///a/br   z////a/bc:ac:\az\ar^   r.   rc   s     r1   test_parse_path_posix"PurePathTest.test_parse_path_posix[  su    && 	gTC:.hS3*-iS3*-eR%*gR',eR%*r4   c                     U R                   nU R                  U" S5      U" S5      5        U R                  U" S5      U" S5      5        U R                  U" S5      U" S5      5        g )Nr    A/br   z///a//a)r$   r>   rL   rM   s     r1   test_eq_posixPurePathTest.test_eq_posixh  sS    HHAeHah/4!F),AdGQuX.r4   c                     U R                   nU R                  U" S5      R                  5       S5        U R                  U" S5      R                  5       S5        U R                  U" S5      R                  5       S5        g )Nr   zfile:///z/a/b.czfile:///a/b.cz/a/b%#czfile:///a/b%25%23c)r$   rL   r   rM   s     r1   test_as_uri_posixPurePathTest.test_as_uri_posixo  s`    HH3*58++-?9,,.0DEr4   c           	         SSK Jn  U R                  n [        R                  " S5        U R                  U" S5      R                  5       SU" [        R                  " S5      5      -   5        g ! [
         a    U R                  S5         Naf = f)Nr   quote_from_bytes   éz1\xe9 cannot be encoded to the filesystem encodingu   /a/bézfile:///a/b)	urllib.parser  r$   r'   r   UnicodeEncodeErrorskipTestrL   r   )r.   r  rN   s      r1   test_as_uri_non_ascii"PurePathTest.test_as_uri_non_asciiv  sw    1HH	PKK 	:--/&)9"++f:M)NN	P " 	PMMNO	Ps   A. .BBc                     U R                   nU" SSS5      nU" [        R                  " S5      5      nU R                  X#5        g )Nc:r   r   c:\a\b)r$   r%   r)   rL   )r.   rN   r0   r   s       r1   test_parse_windows_path$PurePathTest.test_parse_windows_path  s<    HHdCw&&z23r4   )rK   ))r  r   )r  r   )ra   r  r   ))c:/r   )r  r   r   )r  r   )z/zr  r   )z//x/yr  r   )r   )r   rJ   )//a/b/rJ   )rK   r   c:/ar  //a/b/cc                 :    U R                  U R                  5        g r   )r   windows_equivalencesr.   s    r1   test_equivalences_windows&PurePathTest.test_equivalences_windows  s    t889r4   c                 l   U R                   nU" SSS/ 5        U" SSS/ 5        U" SSS/ 5        U" SSSS/5        U" SSSS/5        U" S	SSS/5        U" S
SS/ 5        U" SSS/ 5        U" SSS/ 5        U" SSS/ 5        U" SSS/ 5        U" SSSS/5        U" SSS/ SQ5        U" SSSS/5        U" SSS/ 5        U" SSS/ 5        U" SSSS/5        U" S S!S/ 5        U" S"S#S/ 5        U" S$S%S/ 5        U" S&S'S/ 5        U" S(S)S/ 5        U" S*S+S/ 5        U" S,S-S/ 5        U" S.S-S/ 5        U" S/S-SS/5        U" S0S1S/ 5        U" S2S3S/ 5        U" S4S5S/ 5        U" S6S7S/ 5        U" S8S9S/ 5        U" S:SSS;/5        U" S<SSS</5        U" S=S>SS;/5        U" S?S>SS;/5        U" S@SASSSB/5        U" SCSASSSB/5        g )DNr  r   r  \r   r   r   r  r   r   z\\r  z\\az//a/z\\a\r   z\\a\br  r  rJ   zZ://b//c/d/zZ:)r   rJ   r   z//b/c//dz\\b\cr   z//./c:z\\.\c:z//?/c:/z\\?\c:z//?/c:/az//?z\\?z//?/z\\?\z//?/UNCz\\?\UNCz//?/UNC/z\\?\UNC\z	//?/UNC/bz	\\?\UNC\bz
//?/UNC/b/z
\\?\UNC\b\z//?/UNC/b/cz\\?\UNC\b\cz//?/UNC/b/c/z//?/UNC/b/c/dz//./BootPartition/z\\.\BootPartitionz//?/BootPartition/z\\?\BootPartitionz//./PhysicalDrive0z\\.\PhysicalDrive0z//?/Volume{}/z\\?\Volume{}z//./nulz\\.\nulz./c:szc:szcc:szC:c:szC:zC:/c:szD:a/c:bzD:zc:bzD:/a/c:br  r  s     r1   test_parse_path_windows$PurePathTest.test_parse_path_windows  s<   &&dT2r2eT44cRr2eT2u5fT4#7dRu5dVR4eWb"5fYB7gZr:hZr:iZu=mT4AjZu=h["b9i[$;j[$>eWb"5fYB7i\2r:j^R<k_b"=l%6B?m%7rBn%7rBo%7uE"%;T2F"%;T2F"%<b"Eo%6bAi\2r:gReW5fRfX6gT2w7hT4%9iT2U|<jT4#u>r4   c                 <   U R                   nU R                  U" S5      U" S5      5        U R                  U" S5      U" SSS5      5        U R                  U" S5      U" S5      5        U R                  U" S5      U" S5      5        U R                  U" S5      U" S5      5        U R                  U" S5      U" S	5      5        U R                  U" S
5      U" S5      5        U R                  U" S5      U" S5      5        U R                  U" S5      U" S5      5        g )Nc:a/br  r   r   zd:a/bc:/a/brb   za/Br  C:a/Bc:A/b//Some/SHARE/a/Bz//somE/share/A/bu   İu   i̇)r$   rL   r>   rM   s     r1   test_eq_windowsPurePathTest.test_eq_windows  s    HH7QwZ07QtS#%67AgJ'
3AgJ(4AfIq{351U8,7QwZ0-.2D0EF8a	l3r4   c                    U R                   nU R                  [        5         U" S5      R                  5         S S S 5        U R                  [        5         U" S5      R                  5         S S S 5        U R	                  U" S5      R                  5       S5        U R	                  U" S5      R                  5       S5        U R	                  U" S5      R                  5       S5        U R	                  U" S	5      R                  5       S
5        U R	                  U" S5      R                  5       S5        SSKJn  U" [        R                  " [        5      5      nU R	                  U" S[        -   5      R                  5       SU-   5        U R	                  U" S[        -   5      R                  5       SU-   5        g ! , (       d  f       GN= f! , (       d  f       GNf= f)Nrb   r*  r  zfile:///c:/zc:/a/b.czfile:///c:/a/b.cz	c:/a/b%#czfile:///c:/a/b%25%23cz//some/share/zfile://some/share/z//some/share/a/b.czfile://some/share/a/b.cr   r  r+  zfile:///c:/a/bz//some/share/a/b%#czfile://some/share/a/b%25%23c)
r$   rD   r   r   rL   r  r  r'   r   r   )r.   rN   r  QUOTED_FS_NONASCIIs       r1   test_as_uri_windows PurePathTest.test_as_uri_windows  sm   HHz*fI +z*gJ +5*M::--/1CD;..02IJ?+2246JK/07792	4 	2-bkk+.FG8k1299;),>>	@0;>?FFH7:LL	N +***s   F:G:
G	
Gc                 "  ^  U 4S jnT R                   nU" S5      nU" S5      nU" X45        T R                  X4:  5        T R                  X4:  5        U" S5      nU" S5      nU" X45        T R                  X4:  5        T R                  X4:  5        g )Nc                 J   > TR                  X5        TR                  X5        g r   )assertLessEqualassertGreaterEqualr   s     r1   assertOrderedEqual>PurePathTest.test_ordering_windows.<locals>.assertOrderedEqual  s      &##A)r4   r-  r,  z//some/Share/A/br.  )r$   assertFalse)r.   r9  rN   r0   r@   s   `    r1   test_ordering_windows"PurePathTest.test_ordering_windows  s    	* HHgJgJ1  ! !1 r4    r   )9r   
__module____qualname____firstlineno__r%   r&   r$   r'   r9   realpathr
   baser   r2   r;   rA   rF   rO   r   rT   r^   rd   rj   rr   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r!  r#  r'  r/  r3  r<  __static_attributes__r>  r4   r1   r   r   &   s   


C 77F#D
L)*"4 ; ;//"$.(
(
6
<0	=
&6(8	-0*
??2'9
 
+ 
+ / / F F P P     > .O : : .? .?` 4 4 N N(    r4   r   c                   ,    \ rS rSr\R
                  rSrg)PurePosixPathTesti   r>  N)r   r?  r@  rA  r%   r*   r$   rD  r>  r4   r1   rF  rF     s    


Cr4   rF  c                   ,    \ rS rSr\R
                  rSrg)PureWindowsPathTesti  r>  N)r   r?  r@  rA  r%   r)   r$   rD  r>  r4   r1   rH  rH    s    

!
!Cr4   rH  c                   B    \ rS rSr " S S\R
                  5      rSrSrg)PurePathSubclassTesti  c                       \ rS rSrSrg)PurePathSubclassTest.clsi	  r>  Nr   r?  r@  rA  rD  r>  r4   r1   r$   rL  	      r4   r$   Nr>  )	r   r?  r@  rA  r%   r&   r$   r   rD  r>  r4   r1   rJ  rJ    s    g   r4   rJ  c                     ^  \ rS rSrSr\R                  r\R                  " 5       r	U 4S jr
S rS rS rS rS rS	 rS
 rS rS r\R*                  " \SL SS9S 5       r\R*                  " \S5      S 5       rS rS rS r\R:                  S 5       r\\R:                  S 5       5       r S r!\RD                  " \S5      S 5       r#\RD                  " \S5      \RD                  " \$S5      S 5       5       r%S r&\RD                  " \'S5      S 5       r(\RD                  " \'S5      \RD                  " \$S5      S  5       5       r)S! r*S" r+S# r,\RZ                  S$ 5       r.\R*                  " \/" \0S%5      S&5      S' 5       r1S( r2S) r3S* r4S+ r5S, r6S- r7S. r8S/ r9\R*                  " \:S05      S1 5       r;\<S2 5       r=S3 r>S4 r?S5 r@\AS6 5       rB\R*                  " \/" \0S75      S85      S9 5       rCS: rD\RD                  " \/" \0S;5      S<5      \R*                  " \ER                  S=:H  S>5      S? 5       5       rG\RD                  " \/" \HS@5      SA5      \R*                  " \:SB5      \R*                  " \SC5      SD 5       5       5       rISE rJSF rKSG rLU 4SH jrMSI rNSJ rOSK rPSL rQSM rRSN rSSO rT\ASP 5       rUSQ rVSR rW\SS 5       rX\R*                  " \:=(       d    \ST5      \SU 5       5       rY\SV 5       rZ\R*                  " \:=(       d    \ST5      \SW 5       5       r[\RD                  " \/" \SX5      SY5      \R*                  " \ER                  S=:H  SZ5      \S[ 5       5       5       r\\R*                  " \ER                  S\:g  S]5      \S^ 5       5       r]\S_ 5       r^\S` 5       r_\<Sa 5       r`\<Sb 5       ra\<Sc 5       rb\<Sd 5       rc\<Se 5       rd\<Sf 5       reSgrfU =rg$ )hPathTesti  z?Tests for the FS-accessing functionalities of the Path classes.c                    > [         TU ]  5         [        R                  " U R                  R                  U R                  S5      S5        g )NdirEr   )supersetUpr'   chmodr:   joinrC  )r.   r   s    r1   rT  PathTest.setUp  s/    
!!$))V4a8r4   c                     [         R                  " U R                  R                  U R                  S5      S5        [
        R                  " U R                  5        g )NrR    )r'   rU  r:   rV  rC  r	   rmtreer"  s    r1   tearDownPathTest.tearDown  s7    
!!$))V4e<#r4   c                     [         R                  " [        R                  " S[        R
                  " 5       S95      nU R                  [         R                  U5        U$ )Nz-dirD)suffixdir)r	   	_longpathtempfilemkdtempr'   getcwd
addCleanuprZ  )r.   r   s     r1   tempdirPathTest.tempdir!  sE     0 057YY[!B C	((!,r4   c                    [        U R                  5       Vs1 s H  oS   S:w  d  M  UiM     nnUR                  S5        [        [        R                  R
                  5       Vs1 s H  oS   S:w  d  M  UiM     nnU R                  X#5        U Hk  nUS:X  a  M  [        U R                  U5      n[        [        R                  R
                  U5      nU R                  UR                  UR                  5        Mm     g s  snf s  snf )Nr   _r   r:   )	r_  r$   remover%   _abcPathBaserL   getattr__doc__)r.   r(   	our_names
path_names	attr_nameour_attr	path_attrs          r1   test_matches_pathbase_api"PathTest.test_matches_pathbase_api'  s    &)$((mFmdAw#~Tm	F''*7<<+@+@'AT'At!WPS^d'A
T/"IH$ txx3H 5 5yAIX--y/@/@A #	 GTs   DD&D6Dc                    U R                   [        R                  L a5  [        R                  S:X  a  [        R
                  O[        R                  nOU R                   nU R                  S5      nU R                  [        U5      U5        g r"   )	r$   r%   Pathr'   r(   WindowsPath	PosixPathr+   r,   r-   s      r1   r2   PathTest.test_concrete_class5  sW    88w||#.0ggow**7CTCTHxxHHHSMd1gx(r4   c                     U R                   R                  [        R                  L a  U R	                  S5        g U R                  [        R                  U R                   5        g )Nzpath parser is supported)r$   r:   r'   r9   r  rD   r%   UnsupportedOperationr"  s    r1   test_unsupported_parser PathTest.test_unsupported_parser=  s=    88??bgg%MM45g::DHHEr4   c                 <   U R                  [        R                  " 5       5      nU R                  X5        U R	                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        U R                  UR                  5       5        g r   )
r$   r'   rc  rL   assertEqualNormCaserg   r+   r,   r   is_absoluter?   s      r1   	_test_cwdPathTest._test_cwdC  sd    HHRYY[!  QQ0d1gtAw'(r4   c                 Z    U R                   R                  5       nU R                  U5        g r   )r$   cwdr  ri   s     r1   test_cwdPathTest.test_cwdJ  s    HHLLNqr4   c           
         U R                   n[        R                  " S5       nU R                  Ul        U R                  [        U" 5       R                  5       5      U R                  5        U R                  [        U" S5      R                  5       5      U R                  5        U R                  [        U" S5      R                  5       5      [        R                  R                  U R                  S5      5        U R                  [        U" SSS5      R                  5       5      [        R                  R                  U R                  SSS5      5        U R                  [        U" SS5      R                  5       5      [        R                  R                  U R                  SS5      5        U R                  [        U" S5      R                  5       5      [        R                  R                  U R                  S5      5        U R                  [        U" S	5      R                  5       5      [        R                  R                  U R                  S	5      5        U R                  [        U" S
5      R                  5       5      [        R                  R                  U R                  S
5      5        U R                  [        U" SS
5      R                  5       5      [        R                  R                  U R                  SS
5      5        U R                  [        U" S
S5      R                  5       5      [        R                  R                  U R                  S
S5      5        S S S 5        g ! , (       d  f       g = f)N	os.getcwdra   r   r   rJ   linkBfileB
brokenLinkbrokenLinkLoopz..)r$   r   patchrC  return_valuerL   rg   absoluter'   r9   rV  )r.   rN   rc  s      r1   test_absolute_commonPathTest.test_absolute_commonN  sE   HHZZ$"&))F S0$))<S3!23TYY?S3!23RWW\\$))S5QRS3S!1!:!:!<=rww||DIIWZ\_ad?ef S7G!4!=!=!?@"'',,tyyZacjBklS<!9!9!;<bggll499Vb>cdS#3!4!=!=!?@"'',,tyyZjBkl S4!1!1!34bggll499d6STS3!6!6!89277<<		SVX\;]^S4!6!6!89277<<		SWY\;]^# %$$s   MM11
M?c                 P   U R                  [        R                  R                  S5      5      nU R	                  X5        U R                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        U R                  UR                  5       5        g )N~)r$   r'   r9   
expanduserrL   r  rg   r+   r,   r   r  r?   s      r1   
_test_homePathTest._test_homed  sm    HHRWW'',-  QQ0d1gtAw'(r4   Nz(Test requires pwd module to get homedir.)reasonc                 ,   [         R                  " 5        nU R                  U R                  R	                  5       5        UR                  5         [        R                  R                  U R                  S5      US'   U R                  U R                  R	                  5       5        [        R                  R                  U R                  S5      US'   U R                  U R                  R	                  5       5        S S S 5        g ! , (       d  f       g = f)NuserprofileUSERPROFILEhomeHOME)
r	   EnvironmentVarGuardr  r$   r  clearr'   r9   rV  rC  )r.   envs     r1   	test_homePathTest.test_homek  s     **,OODHHMMO,IIK!#dii!GCOODHHMMO, '',,tyy&9CKOODHHMMO, -,,s   C&D
DzWASI has no user accounts.c                    U R                   nU" S5      nU R                  UR                  5       U" [        R                  R                  S5      5      5        U" S5      nU R                  UR                  5       U5        U" S5      nU R                  UR                  5       U5        U" S5      nU R                  UR                  5       U5        U" U" S5      R                  5       R                  5      S-  nU R                  UR                  5       U5        U" S5      nU R                  UR                  5       U" [        R                  R                  S5      S5      5        g )Nr  foo/~../~r   z~/a:brK   )r$   rL   r  r'   r9   r  anchorrw   s      r1   test_expanduser_commonPathTest.test_expanduser_commonz  s   HHcF277+=+=c+B)CDeH+dG+fI+aenn%%&,+gJ277+=+=c+BG)LMr4   c                 b    " S SU R                   5      nU" U R                  SS9nU R                  SUR                  5       R                  5        U R                  SUR                  5       R                  5        [        (       d9  U R                  SUR                  S5      R                  5       R                  5        U R                  SUS-  R                  US-  5      R                  5        U R                  SUS-  R                  US-  5      R                  5        U R                  (       a-  U R                  SUS-  R                  5       R                  5        UR                  5        H  nU R                  SUR                  5        M!     UR                  S	5       H  nU R                  SUR                  5        M!     UR                  S	5       H  nU R                  SUR                  5        M!     UR!                  5        H"  u  pEnU R                  SUR                  5        M$     g )
Nc                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )&PathTest.test_with_segments.<locals>.Pi  c                ,   > [         TU ]  " U6   Xl        g r   )rS  __init__
session_id)r.   r  pathsegmentsr   s      r1   r  /PathTest.test_with_segments.<locals>.P.__init__  s     ,/",r4   c                 8    [        U 5      " USU R                  06$ )Nr  )r,   r  )r.   r  s     r1   with_segments4PathTest.test_with_segments.<locals>.P.with_segments  s    Dz<LDOOLLr4   r  )r   r?  r@  rA  r  r  rD  __classcell__r   s   @r1   rN   r    s    -M Mr4   rN   *   r  r  fileAr  linkA*)r$   rC  rL   r  r  resolver   r  r  renamerZ   can_symlinkreadlinkiterdirglobrglobwalk)r.   rN   r0   r9   dirpathdirnames	filenamess          r1   test_with_segmentsPathTest.test_with_segments  s   	M 	M diiB'QZZ\445QYY[334wR!5!@!@!B!M!MNa'k11!g+>IIJa'k221w;?JJKR!g+!7!7!9!D!DEIIKDR1  FF3KDR1  GGCLDR1 !,-FFH(GyR!3!34 -5r4   c                 0   U R                  U R                  5      nUS-  R                  SSS9 nU R                  U[        R
                  5        U R                  UR                  5       R                  5       S5        S S S 5        g ! , (       d  f       g = f)Nr  rbr   )	buffering   this is file A)	r$   rC  openassertIsInstanceio	RawIOBaserL   readstrip)r.   r0   fs      r1   test_open_unbufferedPathTest.test_open_unbuffered  sk    HHTYY'k2a!!!R\\2QVVX^^-/@A 322s   AB
Bc                 j   U R                  SS5      n[        R                  " 5       n[        R                  " U R                  5         U R                  UR                  5       U R                  U R                  U5      5        [        R                  " U5        g ! [        R                  " U5        f = f)Nnonexist)r$   r'   rc  chdirrC  rL   r  )r.   r0   old_cwds      r1   )test_resolve_nonexist_relative_issue386712PathTest.test_resolve_nonexist_relative_issue38671  sp    HHUG$))+
	QYY[$((499a*@AHHWBHHWs   	:B B2c                 t   U R                  U R                  5      S-  nUR                  5       R                  nUS-  nUR	                  U5        U R                  UR                  5       R                  U5        US-  nUR	                  U5        U R                  UR                  5       R                  U5        g )Nr  m   )r$   rC  statst_moderU  rL   )r.   r0   modenew_modes       r1   
test_chmodPathTest.test_chmod  s    HHTYY')vvx&=	))84%<	))84r4   c                    U R                  U R                  5      S-  nUR                  5       nUR                  5       R                  nUS-  nUR                  USS9  U R                  UR                  5       R                  U5        US-  nUR                  USS9  U R                  UR                  5       R                  U5        g )Nr  r  Tfollow_symlinksr  )r$   rC  r  r  r  rU  rL   )r.   r0   r@   r  r  s        r1   test_chmod_follow_symlinks_true(PathTest.test_chmod_follow_symlinks_true  s     HHTYY')IIKvvx&=	$/))84%<	$/))84r4   c                      [         R                  " U5      R                  $ ! [         a    U R	                  SU-  5         g f = f)Nz4user %d doesn't have an entry in the system database)pwdgetpwuidpw_nameKeyErrorr  )r.   uids     r1   _get_pw_name_or_skip_test"PathTest._get_pw_name_or_skip_test  sC    	N<<$,,, 	NMMFLN	N   " AAz&the pwd module is needed for this testc                     U R                  U R                  5      S-  nUR                  5       R                  nU R	                  U5      nU R                  X1R                  5       5        g Nr  )r$   rC  r  st_uidr  rL   owner)r.   r0   expected_uidexpected_names       r1   
test_ownerPathTest.test_owner  L    HHTYY')vvx66|D	2r4   ztest needs root privilegec                 <   [         R                  " 5        Vs/ s H  oR                  PM     nn[        U5      S:  a  U R	                  S5        U R                  U R                  5      S-  nU R                  U R                  5      S-  nUS S u  pV[        R                  " X5S5        [        R                  " XFSSS9  UR                  SS9R                  nU R                  U5      nU R                  Xv5        U R                  XR                  SS95        g s  snf )Nrn   ztest needs more than one userr  r  r   Fr  )r  getpwallpw_uidr   r  r$   rC  r'   chownr  r  r  rL   r  )	r.   u	all_userstargetlinkuid_1uid_2r  r  s	            r1   test_owner_no_follow_symlinks&PathTest.test_owner_no_follow_symlinks  s     (+||~6~!XX~	6y>AMM9:$))$w.xx		"W, !}
#
b%8yyy7>>66|D-

5
(IJ 7s   Dc                      [         R                  " U5      R                  $ ! [         a    U R	                  SU-  5         g f = f)Nz5group %d doesn't have an entry in the system database)grpgetgrgidgr_namer  r  )r.   gids     r1   _get_gr_name_or_skip_test"PathTest._get_gr_name_or_skip_test  sC    	O<<$,,, 	OMMG#MO	Or  z&the grp module is needed for this testc                     U R                  U R                  5      S-  nUR                  5       R                  nU R	                  U5      nU R                  X1R                  5       5        g r  )r$   rC  r  st_gidr  rL   group)r.   r0   expected_gidr  s       r1   
test_groupPathTest.test_group  r  r4   c                 @   [         R                  " 5        Vs/ s H  oR                  PM     nn[        U5      S:  a  U R	                  S5        U R                  U R                  5      S-  nU R                  U R                  5      S-  nUS S u  pV[        R                  " USU5        [        R                  " USUSS9  UR                  SS9R                  nU R                  U5      nU R                  Xv5        U R                  XR                  SS95        g s  snf )Nrn   ztest needs more than one groupr  r  r   Fr  )r	  getgrallgr_gidr   r  r$   rC  r'   r  r  r  r  rL   r  )	r.   g
all_groupsr  r  gid_1gid_2r  r  s	            r1   test_group_no_follow_symlinks&PathTest.test_group_no_follow_symlinks  s     ),71hh
7z?QMM:;$))$w.xx		"W,!"1~
U#
r5%8yyy7>>66|D-

5
(IJ 8s   Dc                     U R                  U R                  5      S-  nUR                  5         U R                  UR                  5        U R                  UR                  5        g r  )r$   rC  unlinkassertFileNotFoundr  ri   s     r1   test_unlinkPathTest.test_unlink  sF    HHTYY')	
')r4   c                     U R                  U R                  5      S-  nU R                  UR                  5        UR                  SS9  g )NfileAAAT)
missing_ok)r$   rC  r   r  ri   s     r1   test_unlink_missing_okPathTest.test_unlink_missing_ok  s9    HHTYY)+)	D!r4   c                    U R                  U R                  5      S-  nUR                  5        H  nUR                  5         M     UR	                  5         U R                  UR                  5        U R                  UR                  5        g )NdirA)r$   rC  r  r  rmdirr   r  r?   s      r1   
test_rmdirPathTest.test_rmdir$  s_    HHTYY&(AHHJ 		')r4   c                    U R                  U R                  5      nUS-  nUR                  5       R                  nUS-  S-  nUR	                  U5        U R                  UR                  5       R                  U5        U R                  [        R                  R                  X$5      5        U R                  UR                  5       5        US-  S-  nU R                  R                  [        S5      nUR	                  U5        U R                  [        R                  " U5      R                  U5        U R                  UR                  5       5        g Nr  r)  fileAAr$  )r$   rC  r  st_sizehardlink_torL   r   r'   r9   samefileexistsr:   rV  r
   )r.   rN   r  sizer  link2target2s          r1   test_hardlink_toPathTest.test_hardlink_to,  s    HHTYYW{{}$$6zH$ ,,d3((67(F
Y&++""673'")1148'r4   r  zos.link() is presentc                     U R                  U R                  5      nUS-  nUS-  S-  nU R                  [        R                  5         UR                  U5        S S S 5        g ! , (       d  f       g = fNr  r)  r/  )r$   rC  rD   r%   r{  r1  rq   s       r1   test_hardlink_to_unsupported%PathTest.test_hardlink_to_unsupported>  sW    HHTYYKJ!w;;<MM! =<<   A##
A1c                    U R                  U R                  5      nUS-  nUR                  5       R                  nUS-  S-  nUR	                  U5      nU R                  XT5        U R                  UR                  5       R                  U5        U R                  UR                  5        U R                  R                  [        S5      nUR	                  U5      nU R                  XpR                  U5      5        U R                  [        R                  " U5      R                  U5        U R                  UR                  5        g r.  )r$   rC  r  r0  r  rL   r   r:   rV  r
   r'   )r.   rN   r0   r4  r@   	renamed_pr   	renamed_qs           r1   test_renamePathTest.test_renameG  s    HHTYYKvvxJ!HHQK	&))40'KKVY/HHQK	HHQK0++T2'r4   c                    U R                  U R                  5      nUS-  nUR                  5       R                  nUS-  S-  nUR	                  U5      nU R                  XT5        U R                  UR                  5       R                  U5        U R                  UR                  5        U R                  R                  [        SS5      nUR	                  U5      nU R                  XpR                  U5      5        U R                  [        R                  " U5      R                  U5        U R                  UR                  5        g )Nr  r)  r/  dirBr  )r$   rC  r  r0  rZ   rL   r   r:   rV  r
   r'   )r.   rN   r0   r4  r@   
replaced_pr   
replaced_qs           r1   test_replacePathTest.test_replaceX  s    HHTYYKvvxJ!YYq\
'))40'KKVVW5YYq\
XXa[1++T2'r4   c                    U R                  U R                  5      nUS-  nU R                  UR                  5       5        UR	                  5         U R                  UR                  5       5        UR                  5       nUR                  nUR                  n[        R                  " [        U5      US-
  US-
  45        UR	                  5         UR                  5       nU R                  UR                  U5        U R                  UR                  U5        US-  nU R                  UR                  5       5        UR	                  SSS9  U R                  UR                  5       5        U R                  [        UR                  SS9  g )NnewfileA
   newfileBi  F)r  exist_okrM  )r$   rC  r;  r3  touchr   r  st_mtimest_mtime_nsr'   utimerg   r8  rD   OSError)r.   rN   r0   st	old_mtimeold_mtime_nss         r1   test_touch_commonPathTest.test_touch_commoni  s   HHTYY
N$		
#VVXKK	~~ 	Q)b.)b.9:		VVX=Y7
N$	UU+
#'177U;r4   c                    U R                  U R                  5      nUS-  nUR                  5         UR                  S5       nU R	                  UR                  5       R                  5       S5        S S S 5        g ! , (       d  f       g = f)Nr  r  r  )r$   rC  rO  r  rL   r  r  )r.   rN   r0   r  s       r1   test_touch_nochangePathTest.test_touch_nochange  s[    HHTYYK		VVD\QQVVX^^-/@A \\s   /A::
Bc                    U R                  U R                  5      nUS-  nU R                  UR                  5       5        UR	                  5         U R                  UR                  5       5        U R                  UR                  5       5        U R                  [        5       nUR	                  5         S S S 5        U R                  WR                  R                  [        R                  5        g ! , (       d  f       NC= f)NnewdirA)r$   rC  r;  r3  mkdirr   is_dirrD   rS  rL   	exceptionerrnoEEXIST)r.   rN   r0   cms       r1   
test_mkdirPathTest.test_mkdir  s    HHTYY	M$		
#
#w'2GGI (++U\\: ('s   #C11
C?c                 P   U R                  U R                  SS5      nU R                  UR                  5       5        U R	                  [
        5       nUR                  5         S S S 5        U R                  WR                  R                  [        R                  5        UR                  SS9  U R                  UR                  5       5        U R                  UR                  5       5        U R	                  [
        5       nUR                  SS9  S S S 5        U R                  UR                  R                  [        R                  5        [        R                  " UR                  5       R                   5      nU R                  U R                  SS5      nUR                  SSS9  U R                  UR                  5       5        U R                  UR                  5       5        ["        R$                  S:w  aA  U R                  [        R                  " UR                  5       R                   5      S	U-  5        U R                  [        R                  " UR&                  R                  5       R                   5      U5        g ! , (       d  f       GN(= f! , (       d  f       GN= f)
NnewdirBnewdirCTparentsnewdirDnewdirEim  r#   im  )r$   rC  r;  r3  rD   rS  r^  rL   r`  ra  ENOENTr   r_  rb  r  S_IMODEr  r'   r(   parent)r.   r0   rc  r  s       r1   test_mkdir_parentsPathTest.test_mkdir_parents  s   HHTYY	95$w'2GGI (++U\\:	
#
#w'2GGDG! (++U\\:||AFFH,,-HHTYY	95	t$
#
#77d?T\\!&&(*:*:;Vd]Kahhmmo&=&=>E' (' ('s   JJ
J
J%c                    U R                  U R                  S5      nUR                  5       R                  nU R	                  UR                  5       5        U R	                  UR                  5       5        U R                  [        5       nUR                  5         S S S 5        U R                  WR                  R                  [        R                  5        UR                  SS9  U R	                  UR                  5       5        U R                  UR                  5       R                  U5        g ! , (       d  f       N= f)NrD  TrN  )r$   rC  r  st_ctimer   r3  r_  rD   FileExistsErrorr^  rL   r`  ra  rb  )r.   r0   st_ctime_firstrc  s       r1   test_mkdir_exist_okPathTest.test_mkdir_exist_ok  s    HHTYY'**
#
#/2GGI 0++U\\:	
#**N; 0/s   
D00
D>c                    U R                  U R                  S5      nU R                  UR                  5       5        U R	                  [
        5       nUR                  5         S S S 5        U R                  WR                  R                  [        R                  5        US-  nUR                  SS9  UR                  5       R                  nU R                  UR                  5       5        U R	                  [
        5       nUR                  SS9  S S S 5        U R                  UR                  R                  [        R                  5        UR                  SSS9  U R                  UR                  5       5        U R                  UR                  5       R                  U5        g ! , (       d  f       GNK= f! , (       d  f       N= f)NdirCrh  Tri  rj  rM  )r$   rC  r   r3  rD   rt  r^  rL   r`  ra  rb  r  rs  )r.   r0   rc  ru  s       r1   test_mkdir_exist_ok_with_parent(PathTest.test_mkdir_exist_ok_with_parent  s/   HHTYY'
#/2GGI 0++U\\:	M	**
#/2GGDG! 0++U\\:	t,
#**N; 0/ 0/s   F& F8&
F58
Gz)FS root cannot be modified on Emscripten.c                     U R                  S5      R                  5       R                  SS9  U R                  S5      R                  5       R                  SSS9  g )Nr   TrN  rz  )r$   r  r^  r"  s    r1   test_mkdir_exist_ok_root!PathTest.test_mkdir_exist_ok_root  sJ     	%%t%4%%dT%Br4   c                    S H.  nU R                  US-   5      nUR                  5       (       a  M.    O   U R                  S5        U R                  [        5         WS-  S-  R                  SS9  S S S 5        g ! , (       d  f       g = f)NZYXWVUTSRQPONMLKJIHGFEDCBAz:\z&cannot find a drive that doesn't existchildr9   Tri  )r$   r_  r  rD   rS  r^  )r.   r   r0   s      r1   test_mkdir_with_unknown_drive&PathTest.test_mkdir_with_unknown_drive  so    -AU#A88:: .
 MMBCw'[6!(((6 (''s   A::
Bc                 F   U R                  U R                  SS5      nU R                  UR                  5       5        U R	                  [
        5       nUR                  SS9  S S S 5        U R                  WR                  R                  [        R                  5        U R	                  [
        5       nUR                  SSS9  S S S 5        U R                  UR                  R                  [        R                  5        g ! , (       d  f       N= f! , (       d  f       NT= f)NrD  r  Tri  rz  r$   rC  r   r3  rD   rt  r^  rL   r`  ra  rb  r.   r0   rc  s      r1   test_mkdir_with_child_file#PathTest.test_mkdir_with_child_file  s    HHTYY0
# /2GGDG! 0++U\\:/2GGD4G0 0++U\\: 0/ 0/s   D3D
D
D c                 D   U R                  U R                  S5      nU R                  UR                  5       5        U R	                  [
        5       nUR                  5         S S S 5        U R                  WR                  R                  [        R                  5        U R	                  [
        5       nUR                  SS9  S S S 5        U R                  UR                  R                  [        R                  5        g ! , (       d  f       N= f! , (       d  f       NT= f)Nr  TrN  r  r  s      r1   test_mkdir_no_parents_file#PathTest.test_mkdir_no_parents_file  s    HHTYY(
# /2GGI 0++U\\:/2GGTG" 0++U\\: 0/ 0/s   D 3D 
D
Dc           	        ^^^ [        S5       GH  nU R                  U R                  SU-  5      nU R                  UR	                  5       5        [
        R                  mSUUU4S jjn[        S5       Vs/ s H  n[        USU-  -  5      PM     snm[        5       mUS-  S-  n [        R                  " SU5         UR                  S	S
S9  S S S 5        U R                  [        U5      T5        U R                  UR	                  5       5        GM     g s  snf ! , (       d  f       NS= f! [         a    U R                  [        U5      T5         Nbf = f)N    zdirCPC%dc                    > [        U 5      n TR                  5       (       a  T" X5        TR                  U 5        T" X5        g r   )rg   popadd)r9   r  concurrently_createdpattern
real_mkdirs     r1   my_mkdir@PathTest.test_mkdir_concurrent_parent_creation.<locals>.my_mkdir  s7    4y ;;==t*(,,T24&r4      rm   dir1dir2zos.mkdirTFrz  )rY  )r   r$   rC  r;  r3  r'   r^  boolsetr   r  assertNotInrg   rt  assertInr   )	r.   pattern_numr0   r  np12r  r  r  s	         @@@r1   %test_mkdir_concurrent_parent_creation.PathTest.test_mkdir_concurrent_parent_creation  s    9KJ$<=AQXXZ(J
' 
' >C1XFXtK1623XFG#&5 f*v%CAZZ
H5IIdUI; 6
   S+?@OOAHHJ'7 %" G 65" >c#h(<=>s0   8D)D/ DD/
D,	(D//%EEc                    U R                  U R                  5      nUS-  nUS-  S-  nUR                  U5        U R                  UR	                  5       UR	                  5       5        U R                  UR                  5       UR	                  5       5        US-  S-  nUR                  [        U5      5        U R                  UR	                  5       UR	                  5       5        U R                  UR                  5       UR	                  5       5        U R                  UR                  5       5        US-  nUS-  S-  nUR                  USS9  U R                  UR	                  5       UR	                  5       5        U R                  UR                  5       UR	                  5       5        U R                  UR                  5       5        U R                  [        UR                  5       5      5        g )	Nr  r)  linkAAlinkAAArD  linkAAAAT)target_is_directory)r$   rC  
symlink_torL   r  r>   lstatrg   r;  r_  r   listr  )r.   rN   r  r  s       r1   test_symlink_toPathTest.test_symlink_to  sa   HHTYYW6zH$fkkm4DJJL&++-86zI%F$fkkm4DJJL&++-8'V6zJ&D9fkkm4DJJL&++-8&T\\^,-r4   symlinkzos.symlink() is presentc                     U R                  U R                  5      nUS-  nUS-  S-  nU R                  [        R                  5         UR                  U5        S S S 5        g ! , (       d  f       g = fr:  )r$   rC  rD   r%   r{  r  rq   s       r1   test_symlink_to_unsupported$PathTest.test_symlink_to_unsupported(  sV    HHTYYKJ!w;;<LLO =<<r=  c                    U R                  U R                  5      n[        R                  R	                  UR
                  S5         U R                  UR                  5       UR
                  R                  R                  5        UR
                  R                  R                  U5        S S S 5        g ! , (       d  f       g = f)N
isjunction)r$   rC  r   r  objectr:   rL   is_junctionr  r  assert_called_once_withrM   s     r1   test_is_junctionPathTest.test_is_junction1  sv    HHTYYZZqxx6Q]]_ahh.A.A.N.NOHH77: 766s   A$B33
Cmkfifozos.mkfifo() requiredvxworksz%fifo requires special path on VxWorksc                 t   U R                  U R                  S5      n [        R                  " [	        U5      5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  U R                  U R                  S5      R                  5       S5        U R                  U R                  U R                  S5      R                  5       S5        g ! [
         a  nU R                  SU-  5         S nANS nAff = f)Nmyfifozos.mkfifo(): %su	   myfifoFzmyfifo )r$   rC  r'   r  rg   PermissionErrorr  r   is_fifor;  	is_socketis_filer+   )r.   rN   es      r1   test_is_fifo_truePathTest.test_is_fifo_true8  s     HHTYY)	1IIc!f 			$'%dhhtyy.9AACUKdhhtyy,7??A5I  	1MM+a/00	1s   D 
D7D22D7AF_UNIXzUnix sockets requiredz/Unix sockets are not implemented on Emscripten.zCannot create socket on WASI.c                 b   U R                  U R                  S5      n[        R                  " [        R                  [        R                  5      nU R                  UR                  5         UR                  [        U5      5        U R                  UR                  5       5        U R                  UR!                  5       5        U R                  UR#                  5       5        U R%                  U R                  U R                  S5      R                  5       S5        U R%                  U R                  U R                  S5      R                  5       S5        g ! [         aL  n[        U[        5      (       d  S[        U5      ;   a  U R                  S[        U5      -   5         S nAGN#S nAff = f)NmysockzAF_UNIX path too longzcannot bind Unix socket: u	   mysockFzmysock )r$   rC  socketr  SOCK_STREAMrd  closebindrg   rS  
isinstancer  r  r   r  r;  r  r  r+   )r.   rN   sockr  s       r1   test_is_socket_truePathTest.test_is_socket_trueG  s$    HHTYY)}}V^^V-?-?@

#	DIIc!f
 	&%%dhhtyy.9CCEuMdhhtyy,7AACUK  	D1o..+s1v59CFBC	Ds   ,E 
F."AF))F.c                 H   U R                  [        R                  5      nUR                  5       (       d  U R	                  S5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  UR                  5       5        U R                  U R                  [        R                   S35      R                  5       S5        U R                  U R                  [        R                   S35      R                  5       S5        g )Nznull device required   F )r$   r'   devnullr3  r  r   is_char_devicer;  is_block_devicer  r+   rM   s     r1   test_is_char_device_true!PathTest.test_is_char_device_true^  s    HHRZZ xxzzMM01((*+**,-%dhh"**V45DDFNdhh"**T23BBDeLr4   c                     [         R                  S:X  a  U R                  S5      nOU R                  S5      nU R                  UR	                  5       5        U R                  US-  R	                  5       5        g )Nr#   c:\r   r  )r'   r(   r$   r   is_mountr;  )r.   Rs     r1   test_is_mount_rootPathTest.test_is_mount_rooti  sU    77d? AA

%!h,0023r4   c                     U R                  [        5         U R                  SS9  S S S 5        g ! , (       d  f       g = f)Nbar)r  )r   r   r$   r"  s    r1   test_passing_kwargs_deprecated'PathTest.test_passing_kwargs_deprecatedq  s+    01HHH 211s   /
=c                   > [         TU ]  5         U R                  S-  nUS-  nU R                  S-  n[        R                  " U5        UR                  S5        U R                  (       aQ  [        R                  " X#5        U R                  S   R                  S5        U R                  S   R                  5         [        (       d  [        R                  " US5         [        R                  " U5        [        R                  " U[        R                  5        [        R                   " U5        [        R"                  " U5        g ! [$         a!    U R                  S   R                  S5         g f = f)NSUB21tmp3broken_link3zI am tmp5, blame test_pathlib.rn   r   rm   )rS  	setUpWalk	sub2_pathr'   makedirs
write_textr  r  	sub2_treer   sortr   rU  listdirr  S_IRWXUr  r*  r  )r.   
sub21_path	tmp5_pathbroken_link3_pathr   s       r1   r  PathTest.setUpWalku  s	   NNW,
'	 NN^;
J=>JJy4NN1$$^4NN1""$}HHZ#	!JJz" HHZ.IIi HHZ   	.NN1$$W-	.s   E (E21E2c                 :   U R                  5         / nU R                  R                  UR                  S9n[	        U5      u  p4nU R                  U/ 5        SnX6-  nX6-  R                  S5      nUR                  U5         U V	V
s/ s H  u  n	  oPM
     nn	n
U R                  U5        U R                  X{5        U R                  X5        U H  nX:w  d  M
  U R                  X<-  U5        M      UR                  U5        g s  sn
n	f ! UR                  U5        f = f)N)on_errorSUB1z.new)r  	walk_pathr  r   nextrL   with_suffixr  r   r  r  )r.   errorswalk_itrootdirsfilesr  path1path1newr   rh  rootsr  s                r1   test_walk_bad_dirPathTest.test_walk_bad_dir  s    ..%%v}}%= ME$K,,V4X		#&-.g71aQgE.OOF#U*X-<MM$+u5  OOE" / OOE"s$   D D>D D D Dc                 |   SnU R                  U R                  S5      nU R                   " U/S/U-  Q76 nUR                  SS9  [        S5       Vs/ s H  oBR	                  SS9PM     nn[        US	-   5       HA  nX6(       a  S/O/ / 4nU H  nU R                  [        U5      U5        M      UR                  nMC     [        S5       Vs/ s H  oBR	                  SS9PM     nnUn[        US	-   5       H9  nX6U:  a  S/O/ / 4nU H  nU R                  [        U5      U5        M      US-  nM;     g s  snf s  snf )
N   deepr   Tri  d   Ftop_downrm   )r$   rC  r^  r   r  rL   r  ro  )	r.   depthrC  r9   rh  itersir/   its	            r1   test_walk_many_open_files"PathTest.test_walk_many_open_files  s0   xx		6*xx-e-

4
 49#J?JqE*J?uqy!Aqseb"5H  b84 ;;D	 " 49:>:aD):>uqy!A5yseb"=H  b84 #:D	 " @ ?s   D4D9c                 :   SnUS-   nU R                  U R                  S5      nUR                  " S/U-  6 nUR                  SS9  [	        U5         [        UR                  5       5        [        UR                  SS95        S S S 5        g ! , (       d  f       g = f)	N(   rK  r  r   Tri  Fr  )r$   rC  rv   r^  r   r  r  r.   recursion_limitdirectory_depthrC  r9   s        r1   test_walk_above_recursion_limit(PathTest.test_walk_above_recursion_limit  s}    )B.xx		6*}}u68

4
 0E*+ 100s   2B
Bc                    U R                  S5      nU R                  [        S5         [        UR	                  S5      5        S S S 5        U R                  [        S5         [        UR	                  S5      5        S S S 5        U R                  [        S5         [        UR	                  S5      5        S S S 5        g ! , (       d  f       N= f! , (       d  f       NY= f! , (       d  f       g = f)Nr   zUnacceptable patternra   z./)r$   r   r   r  r  ri   s     r1   test_glob_empty_pattern PathTest.test_glob_empty_pattern  s    HHRL##J0FG H##J0FG H##J0FG HG	 HGGGGGs#   B>!CC >
C
C 
C.c                 ^   SnU R                   nU" U R                  5      S-  =p4UR                  5         [        U5       H  nUS-  nUR                  5         M     SR	                  S/U-  5      n[        S5       Vs/ s H  otR                  U5      PM     nnU H  n	U R                  [        U	5      U5        M      [        S5       Vs/ s H  otR                  S5      PM     nnUn[        U5       H,  n
US-  nU H  n	U R                  [        U	5      U5        M      M.     g s  snf s  snf )Nr  r  r   r   r  r  )	r$   rC  r^  r   rV  r  rL   r  r  )r.   r  rN   r0   rC  rh  r  jr  r	  r  s              r1   test_glob_many_open_files"PathTest.test_glob_many_open_files  s   HHTYY<&((		uAHAGGI  ((C55=)-23Z8Z7#Z8BT"Xq) */*5*QC*5uACA  b1-   9 6s   >D%D*c                    SnUS-   nU R                  U R                  S5      nUR                  " S/U-  6 nUR                  SS9  [	        U5         [        UR                  S5      5        S S S 5        g ! , (       d  f       g = f)N2   rK  r  r   Tri  z**/)r$   rC  rv   r^  r   r  r  r  s        r1   test_glob_above_recursion_limit(PathTest.test_glob_above_recursion_limit  sm    )B.xx		6*}}u68

4
 05!" 100s   A55
Bc           
         U R                   nU" U R                  5      nSnUS-  US-  1nU R                  U[        UR	                  U" U5      5      5      5        U R                  U[        UR	                  [        U5      5      5      5        g )Nz
dir*/file*z
dirB/fileBz
dirC/fileC)r$   rC  rL   r  r  r   r.   rN   r0   r  expects        r1   test_glob_pathlikePathTest.test_glob_pathlike  sv    HHdiiLl"A$45QVVAgJ%7!89QVVHW,=%>!?@r4   c                    U R                   n[        R                  " U" U R                  S5      5         U R	                  [        U" S5      R                  S5      5      U" S5      U" S5      U" S5      15        U R	                  [        U" S5      R                  S5      5      U" S5      U" S5      U" S5      U" S5      U" S5      15        U R	                  [        U" S5      R                  S	5      5      U" S5      U" S5      U" S5      U" S5      15        U R	                  [        U" S5      R                  S
5      5      U" S5      15        S S S 5        g ! , (       d  f       g = f)Nry  ra   r  fileCz	novel.txtdirDz**
dirD/fileDz**/*z**/*/*)r$   r	   
change_cwdrC  rL   r  r  rM   s     r1   test_glob_dotPathTest.test_glob_dot  s"   HH!!!DIIv"67AcFKK$%'
AkNAfI'NPAcFKK%&7Q{^QvYPQR^P_abcfag(hjAcFKK'(1W:q~qyRST`Ra*bdAcFKK)*Q|_,=? 877s   DE
E'c                     U R                   nU" U R                  SS5      nUR                  SS9  UR                  R	                  S5        U R                  [        UR                  S5      5      [        5       5        g )Nmydir1mydir2Tri  r   r  )r$   rC  r^  ro  rU  rL   r  r  rw   s      r1   test_glob_inaccessiblePathTest.test_glob_inaccessible  sZ    HHdii8,		qQVVC[)351r4   c           
          U R                   nU" U R                  S5      nSnUS-  US-  1nU R                  U[        UR	                  U" U5      5      5      5        U R                  U[        UR	                  [        U5      5      5      5        g )Nry  z**/file*r$  r&  )r$   rC  rL   r  r  r   r  s        r1   test_rglob_pathlikePathTest.test_rglob_pathlike  sx    HHdii g+q</0QWWQwZ%8!9:QWWXg->%?!@Ar4   c                 P   U R                   nU R                  [        U" S5      R                  5       5      S5        U R                  [        U" S5      R                  5       5      S5        U R                  [        U" S5      R                  5       5      S5        U R                  [        U" S5      R                  5       5      S5        U R                  [        U" S5      R                  5       5      S5        U R                  [        U" S5      R                  5       5      S5        g )Nr   r   rb   r   r  r   )r$   rL   rg   r  rM   s     r1   test_absolute_posixPathTest.test_absolute_posix  s    HHQsV__./5QtW--/0$7QvY//12F; 	QtW--/0$7QuX..0159QwZ0023W=r4   z,umask is not implemented on Emscripten/WASI.c                 8   [         R                  " S5      nU R                  [         R                  U5        U R                  U R                  5      nUS-  R                  S5          S S S 5        [         R                  " U R                  R                  U R                  S5      5      nU R                  [        R                  " UR                  5      S5        [         R                  " S5        US-  R                  S5          S S S 5        [         R                  " U R                  R                  U R                  S5      5      nU R                  [        R                  " UR                  5      S5        g ! , (       d  f       GN= f! , (       d  f       N= f)Nrn   new_filewb     other_new_file  )r'   umaskrd  r$   rC  r  r  r:   rV  rL   rn  r  r.   old_maskr0   rT  s       r1   test_open_modePathTest.test_open_mode  s	    88E?(+HHTYY*n""4( )WWT[[%%dii<=bjj159
""((. /WWT[[%%dii1ABCbjj159 )(
 /.s   &E9F9
F
Fc                 2   [         R                  " 5       n [         R                  " S5        U R                  S5      nU R	                  [        UR                  5       5      S5        [         R                  " U5        g ! [         R                  " U5        f = f)Nr   spamz/spam)r'   rc  r  r$   rL   rg   r  )r.   current_directoryr0   s      r1   test_resolve_rootPathTest.test_resolve_root/  sb    IIK	(HHSM AS-w7HH&'BHH&'s   AA> >Bc                    [         R                  " S5      nU R                  [         R                  U5        U R                  U R                  5      nUS-  R                  5         [         R                  " U R                  R                  U R                  S5      5      nU R                  [        R                  " UR                  5      S5        [         R                  " S5        US-  R                  5         [         R                  " U R                  R                  U R                  S5      5      nU R                  [        R                  " UR                  5      S5        US-  R                  SS	9  [         R                  " U R                  R                  U R                  S5      5      nU R                  [        R                  " UR                  5      S5        g )
Nrn   r6  r8  r9  r:  r;  masked_new_filei  )r  )r'   r<  rd  r$   rC  rO  r  r:   rV  rL   rn  r  r=  s       r1   test_touch_modePathTest.test_touch_mode9  s;    88E?(+HHTYY	
Z WWT[[%%dii<=bjj159
	
	$$&WWT[[%%dii1ABCbjj159	
	%%5%1WWT[[%%dii1BCDbjj159r4   r  z%pwd module does not expose getpwall()zno home directory on VxWorksc                 :   U R                   n[        R                  " S5        SS KnUR                  " [
        R                  " 5       5      nUR                  nUR                  R                  S5      =(       d    SnUR                  " 5        H:  nUR                  nUR                  R                  S5      nXd:w  d  M1  U(       d  M:    O   UnUnSn UR                  " U5      (       a  US-  nUR                  " U5      (       a  M  U" S5      n	U" SU S35      n
U" SU S35      nU" S	U S35      nU" S
U S35      nU" S5      nU" SU S35      n[        R                  " 5        nUR                  S5        U R!                  U	R#                  5       U" U5      S-  5        U R!                  U
R#                  5       U" U5      S-  5        U R!                  UR#                  5       U" U5      S-  5        U R!                  UR#                  5       U5        U R!                  UR#                  5       U5        U R!                  UR#                  5       U5        U R%                  [&        UR"                  5        SUS'   U R!                  U	R#                  5       U" S5      5        U R!                  U
R#                  5       U" U5      S-  5        U R!                  UR#                  5       U" U5      S-  5        U R!                  UR#                  5       U5        U R!                  UR#                  5       U5        U R!                  UR#                  5       U5        U R%                  [&        UR"                  5        S S S 5        g ! [         a     GNf = f! , (       d  f       g = f)Nr  r   r   fakeuser1z~/Documentsr  z
/Documentsr  r  r   r  	Documentsz/tmpz/tmp/Documents)r$   r   import_moduler  r  r'   getuidr  pw_dirrstripr  getpwnamr  r	   r  unsetrL   r  rD   RuntimeError)r.   rN   r  pwdentusernameuserhome	othername	otherhomefakenamerR   rS   p3p4p5p6p7r  s                    r1   test_expanduser_posixPathTest.test_expanduser_posixO  s    HH##E*biik*>>=='',3llnFI,,S1I$	 % !I I	,,x((C ,,x((
 }8*J'(9+Z()hZz*+H:Z()rU8*J'(**,IIfR]]_akK.GHR]]_akK.GHR]]_a	l[.HIR]]_b1R]]_b1R]]_b1lBMM: CKR]]_a0@.ABR]]_akK.GHR]]_a	l[.HIR]]_b1R]]_b1R]]_b1lBMM:% -,  		 -,s   3M; (H
N;
N	N	
Ndarwinz1Bad file descriptor in /dev/fd affects only macOSc                 .    [        [        R                  " S5      R                  S5      5      SS  nU(       d  U R	                  S5        U H  nUR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         UR                  5         M     g ! [         a5  nUR                  [        R                  :X  a  U R!                  S5        e S nAff = f)Nz/dev/fdr  ro   z.no file descriptors - issue was not reproducedz Bad file descriptor not handled.)r  r%   rv  r  r  r3  r_  r  
is_symlinkr  r  r  r  rS  ra  EBADFfail)r.   file_descriptorsr  r  s       r1   test_handling_bad_descriptor%PathTest.test_handling_bad_descriptor  s    	#GLL$;$A$A#$FGK#NO &

		!!#  "		 &  	ww%++%		<=	s   CC 
D0DDc                    U R                   nU R                  UR                  S5      U" S5      5        U R                  UR                  S5      U" S5      5        U R                  UR                  S5      U" S5      5        U R                  UR                  S5      U" S5      5        U R                  UR                  S5      U" S5      5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S	5        U R                  [        UR                  S
5        g )Nzfile:/foo/bar/foo/barzfile://foo/bar	//foo/barzfile:///foo/barzfile:////foo/barzfile://localhost/foo/barfoo/barfile:foo/barhttp://foo/barr$   rL   from_urirD   r   rM   s     r1   test_from_uri_posixPathTest.test_from_uri_posix  s   HHO4a
mD$45q~F$56*F$67;H$>?:O*ajj)<*ajj*=*ajj+>*ajj.A*ajj2BCr4   c                     U R                   nU R                  UR                  S[        S5      -   5      U" S5      5        U R                  UR                  S[        S5      -   5      U" S5      5        g )Nfile:rk  rl  r$   rL   rq  r   rM   s     r1    test_from_uri_pathname2url_posix)PathTest.test_from_uri_pathname2url_posix  sY    HHGl:.F$FG:WGl;.G$GH!K.Yr4   c           
      R	   U R                   nU R                  [        U" S5      R                  5       5      S5        U R                  [        U" S5      R                  5       5      S5        U R                  [        U" S5      R                  5       5      S5        SnU R                  [        U" U5      R                  5       5      U5        U R                  [        U" US-   5      R                  5       5      US-   5        U R                  [        U" US-   5      R                  5       5      US-   5        [        R
                  " S5       nX#l        U R                  [        U" 5       R                  5       5      U5        U R                  [        U" S5      R                  5       5      U5        U R                  [        U" S5      R                  5       5      [        R                  R                  US5      5        U R                  [        U" SS	S
5      R                  5       5      [        R                  R                  USS	S
5      5        S S S 5        [        R                  R                  U R                  5      S   n[        R                  " U R                  5         U R                  [        U" S5      R                  5       5      US-   5        U R                  [        U" S5      R                  5       5      US-   5        U R                  [        U" U5      R                  5       5      U R                  5        U R                  [        U" US-   5      R                  5       5      [        R                  R                  U R                  S5      5        S S S 5        [        R                  " U R                  5       n[        R                  " 5       nU S3n[        R                   " U5        [        R                   " U5        U R                  [        U" U5      R                  5       5      U5        U R                  [        U" US-   5      R                  5       5      US-   5        S S S 5        g ! , (       d  f       GN/= f! , (       d  f       N= f! , (       d  f       g = f)Nr  r  r  z\\server\share\r   za\br  ra   r   rJ   r   r&  z\foor  z\dirA)r$   rL   rg   r  r   r  r  r'   r9   rV  
splitdriverC  r	   r'  subst_driverc  r  )r.   rN   sharerc  driveother_drive	saved_cwd	other_cwds           r1   test_absolute_windowsPathTest.test_absolute_windows  sU   HH 	QvY//12F;QwZ0023W=Qz]3356
C &QuX..0159Qus{^4467EQuv~.779:EFNK ZZ$"'S0%8S3!23U;S3!23RWW\\%5MNS3S!1!:!:!<=WW\\%c3?A % ""499-a0!!$)),S4!1!1!34edlCS7!4!4!67I S5!2!2!45tyyAS55=!1!:!:!<=rww||DIIW\?]^ - ""499-		I&-v.IHHYHHY S;!8!8!:;YGS;#6!7!@!@!BCYQXEXY .-' %$ -, .-s'   DQ5!C8RB+R5
R
R
R&c           
      H  ^ ^^^^^^^^	 T R                   m[        R                  " 5        mTR                  SSSS5        STS'   T" S5      mT" S5      mT" S	5      mT" S
5      mT" S5      mT" S5      m	T R	                  [
        TR                  5        T R	                  [
        TR                  5        T R	                  [
        TR                  5        T R                  TR                  5       T5        T R                  TR                  5       T5        T R                  T	R                  5       T	5        UUUUUUUU	U 4	S jnSTS'   U" 5         STS'   STS'   U" 5         TR                  SS5        STS'   U" 5         STS'   U" 5         S S S 5        g ! , (       d  f       g = f)Nr  r  HOMEPATH	HOMEDRIVEaliceUSERNAMEz~/My Documentsz~alice/My Documentsz~bob/My Documentsz/~/My Documentszd:~/My Documentsr   c                    >	 TR                  SS 5        TR                  TR                  5       T " S5      5        TR                  [        TR                  5        STS'   TR                  TR                  5       T " S5      5        TR                  TR                  5       T " S5      5        TR                  TR                  5       T5        TR                  TR                  5       T5        TR                  TR                  5       T5        g )Nr  zC:/Users/alice/My Documentsr  zC:/Users/bob/My Documents)r  rL   r  rD   rT  )	rN   r  rR   rS   r[  r\  r]  r^  r.   s	   r1   rc   /PathTest.test_expanduser_windows.<locals>.check  s    
D)  !"#@!AC!!,>")J  !"#@!AC  !"#>!?A  "5  "5  "5r4   zC:\Users\alicezC:\zUsers\alicezC:\Users\eve)r$   r	   r  rS  rD   rT  r  rL   )
r.   rc   rN   r  rR   rS   r[  r\  r]  r^  s
   ` @@@@@@@@r1   test_expanduser_windows PathTest.test_expanduser_windows  sb   HH**,IIfmZE%C
O #$B()B&'B$%B%&B2BlBMM:lBMM:lBMM:R]]_b1R]]_b1R]]_b16 6 1C
OG%C,C
OGIIk:.!3CG +CKG[ -,,s   EF
F!c                 $   U R                   nU R                  UR                  S5      U" S5      5        U R                  UR                  S5      U" S5      5        U R                  UR                  S5      U" S5      5        U R                  UR                  S5      U" S5      5        U R                  UR                  S5      U" S5      5        U R                  UR                  S5      U" S5      5        U R                  UR                  S	5      U" S5      5        U R                  UR                  S
5      U" S5      5        U R                  UR                  S5      U" S5      5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S5        U R                  [        UR                  S5        g )Nzfile:c:/path/to/filec:/path/to/filezfile:c|/path/to/filezfile:/c|/path/to/filezfile:///c|/path/to/filezfile://server/path/to/file//server/path/to/filezfile:////server/path/to/filezfile://///server/path/to/filez file://localhost/c:/path/to/filez file://localhost/c|/path/to/filerm  z
c:/foo/barrl  rn  ro  rp  rM   s     r1   test_from_uri_windowsPathTest.test_from_uri_windows  s   HH$:;Q?P=QR$:;Q?P=QR$;<a@Q>RS$=>BS@TU$@A1E\C]^$BCQG^E_`$CDaH_F`a$FGK\I]^$FGK\I]^*ajj)<*ajj,?*ajj+>*ajj.A*ajj2BCr4   c                     U R                   nU R                  UR                  S[        S5      -   5      U" S5      5        U R                  UR                  S[        S5      -   5      U" S5      5        g )Nru  zc:\path\to\filer  z\\server\path\to\filer  rv  rM   s     r1   "test_from_uri_pathname2url_windows+PathTest.test_from_uri_pathname2url_windows+  sa    HHGl;M.N$NOQRSdQefGl;S.T$TUWXYpWqrr4   c                     U R                   nU R                  [        R                  5         U" S5      R	                  5         S S S 5        g ! , (       d  f       g = fNr  )r$   rD   r%   r{  r  rM   s     r1   test_owner_windowsPathTest.test_owner_windows1  9    HHw;;<eHNN =<<   A
Ac                     U R                   nU R                  [        R                  5         U" S5      R	                  5         S S S 5        g ! , (       d  f       g = fr  )r$   rD   r%   r{  r  rM   s     r1   test_group_windowsPathTest.test_group_windows7  r  r  r>  )hr   r?  r@  rA  rm  r%   rv  r$   r	   r  rT  r[  re  rs  r2   r|  r  r  r  r  unittestskipIfr  r  r   r  r  r  r  skip_unless_working_chmodr  r   r  r  
skipUnlessr  root_in_posixr  r  r	  r  r  r!  r&  r+  skip_unless_hardlinkr7  hasattrr'   r;  rA  rG  rW  rZ  rd  rp  rv  r{  r   r~  r   r  r  r  r  r   r  r  r  sysplatformr  r  r  r  r  r  r  r  r
  r  r  r  r  r!  r(  r-  r0  r3  r?  rD  rH  r`  rh  rr  rw  r  r  r  r  r  r  rD  r  r  s   @r1   rP  rP    st   I
,,C'')K9$B)F)_,) __tF
-
- __W:;N <N54B ((
5 )
5 ((5 ) 5N FG3 H3 FG(CDK E HK$O FG3 H3 FG(CDK E HK$*"
* ##( $(" __WR(*@A B("("<0B	;F2
<<" __]$OPC QC
 7 7
;
;(< . .. __WR+-FG H; X.0FG__S\\Y.;=
J= H
J 35LM__H __0L NL 	M4 !0#**
,.&	#A 
? 
?2B 	> 	> __ 6 : 	
:  ( ( __ 6 : 	
:" j1@B__S\\Y.353; 5B
3;j __S\\X-HJ J* D D Z Z
 +Z +ZZ / /b D D* s s
  
  r4   rP  r#   z'test requires a POSIX-compatible systemc                   ,    \ rS rSr\R
                  rSrg)PosixPathTesti>  r>  N)r   r?  r@  rA  r%   rx  r$   rD  r>  r4   r1   r  r  >  s    


Cr4   r  z)test requires a Windows-compatible systemc                   ,    \ rS rSr\R
                  rSrg)WindowsPathTestiC  r>  N)r   r?  r@  rA  r%   rw  r$   rD  r>  r4   r1   r  r  C  s    


Cr4   r  c                   B    \ rS rSr " S S\R
                  5      rSrSrg)PathSubclassTestiH  c                       \ rS rSrSrg)PathSubclassTest.clsiI  r>  NrM  r>  r4   r1   r$   r  I  rN  r4   r$   Nr>  )	r   r?  r@  rA  r%   rv  r$   r   rD  r>  r4   r1   r  r  H  s    gll   r4   r  c                   8    \ rS rSrSr " S S5      rS rS rSrg)	CompatiblePathTestiP  zp
Test that a type can be made compatible with PurePath
derivatives by implementing division operator overloads.
c                   *    \ rS rSrSrS rS rS rSrg)CompatiblePathTest.CompatPathiV  z
Minimum viable class to test PurePath compatibility.
Simply uses the division operator to join a given
string and the string value of another object with
a forward slash.
c                     Xl         g r   string)r.   r  s     r1   r  &CompatiblePathTest.CompatPath.__init__]  s     Kr4   c                 B    [        U 5      " U R                   SU 35      $ rW   r,   r  r.   others     r1   __truediv__)CompatiblePathTest.CompatPath.__truediv__`  s     :Qug677r4   c                 B    [        U 5      " U SU R                   35      $ rW   r  r  s     r1   __rtruediv__*CompatiblePathTest.CompatPath.__rtruediv__c  s     :q677r4   r  N)	r   r?  r@  rA  rm  r  r  r  rD  r>  r4   r1   
CompatPathr  V  s    		!	8	8r4   r  c                 R   [         R                  " S5      U R                  S5      -  nU R                  XR                  5        U R	                  UR
                  S5        U R                  [        5         [         R                  " S5      S-    S S S 5        g ! , (       d  f       g = f)Ntestrightz
test/rightrK  )r%   r&   r  r  rL   r  rD   rE   r.   results     r1   test_truedivCompatiblePathTest.test_truedivf  ss    !!&)DOOG,DDfoo65y)V$r) *))   5B
B&c                 R   U R                  S5      [        R                  " S5      -  nU R                  XR                   5        U R	                  UR
                  S5        U R                  [        5         S[        R                  " S5      -    S S S 5        g ! , (       d  f       g = f)Nleftr  z	left/testrK  )r  r%   r&   r  rL   r  rD   rE   r  s     r1   test_rtruediv CompatiblePathTest.test_rtruedivo  ss    (7+;+;F+CCfoo64y)!!&)) *))r  r>  N)	r   r?  r@  rA  rm  r  r  r  rD  r>  r4   r1   r  r  P  s    
8 8 **r4   r  __main__)5r  r'   r  ra  r8   r%   r   r7   r  r  ra  r  r   urllib.requestr   test.supportr   r   r   r   r	   test.support.os_helperr
   r   r   test.test_pathlibr   "test.test_pathlib.test_pathlib_abcr   r   r   r	  r  ImportErrorr  r  r   DummyPurePathTestr   rF  rH  rJ  DummyPathTestrP  r  r(   r  r  r  TestCaser  r   mainr>  r4   r1   <module>r     s   	 	 
           ' & / + " @ @ . Y Y
 
2yZZ\Q&MW #55 W t   ", " <  g--| gT! 
D"KLH/  M 
D"MNh 3  O x  &*** &*R zMMO 2  C#s   2F 
FF