
    0hh                        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J	r	J
r
JrJr  S SKJ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r\	" \5      rS
 rS r " S S\R8                  5      r " S S\R<                  \R8                  5      r " S S\R8                  5      r \!S:X  a  \RD                  " 5         gg! \ a    Sr N{f = f)    N)partial)realpathabspathdirnamebasenameALLOW_MISSING)support)test_genericpath)import_helper)	os_helper)FakePathTESTFN)mockc                 Z    S[         ;   nSnU [        R                  " U5      " U 5      /U   $ )N\z'ABSTFN is not a posix path - tests fail)ABSTFNunittestskip)testfound_backslashmsgs      </opt/python-3.13.8/usr/lib/python3.13/test/test_posixpath.py!skip_if_ABSTFN_contains_backslashr      s0     fnO
3C(--$T*+O<<    c                  0    [         R                  " SU 5      $ )Nkwargs)r	   subTests)
parameterss    r   _parameterizer   &   s    Hj11r   c            	          \ 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S rS rS rS r\R&                  S 5       r\R,                  " \SL S5      S 5       r\R,                  " \SL S5      S 5       rS r\R,                  " \R8                  S:H  S5      \R<                  S 5       5       rS r S r!\R,                  " \R8                  S:H  S5      S 5       r"\R,                  " \R8                  S:H  S5      S 5       r#/ SQr$S  r%\&\'" 0 S!S"0S!\(05      S# 5       5       r)\&\'" 0 S!S"0S!\(05      S$ 5       5       r*\R&                  \&\'" 0 S!\(05      S% 5       5       5       r+\R&                  \&S& 5       5       r,S' r-\R&                  \&\'" 0 S!\(05      S( 5       5       5       r.\R&                  \&\'" 0 S!\(05      S) 5       5       5       r/\R&                  \&S* 5       5       r0\R&                  \&\'" S!S"0S!\(05      S+ 5       5       5       r1\R&                  \&\'" 0 S!S"0S!\(05      S, 5       5       5       r2\R&                  \&\'" 0 S!S"0S!\(05      S- 5       5       5       r3\R&                  \&\'" 0 S!\(05      S. 5       5       5       r4\R&                  \&\'" 0 S!S"0S!\(05      S/ 5       5       5       r5\R&                  \&\'" 0 S!S"0S!\(05      S0 5       5       5       r6\R&                  \&\R,                  " \7Rp                  \7Rr                  ;  S15      \R,                  " \R8                  S2:g  S35      S4 5       5       5       5       r:\R&                  \&\R,                  " \7Rp                  \7Rr                  ;  S15      \R,                  " \R8                  S2:g  S35      \'" S!S"0S!\(05      S5 5       5       5       5       5       r;\&\R&                  S6 5       5       r<\&S7 5       r=\R&                  \&S8 5       5       r>\R&                  \&S9 5       5       r?S: r@S; rAS< rBS=rCg)>PosixPathTest*   c                 n    S H/  nU R                  [        R                  " [        U-   5      5        M1     g )N) 12)assertFalse	posixpathlexistsr   )selfsuffixs     r   setUpPosixPathTest.setUp,   s)    $FY..v?@ %r   c                    [         R                  nU R                  U" SSSS5      S5        U R                  U" SSS5      S5        U R                  U" SSS	5      S
5        U R                  U" SSSS5      S5        U R                  U" SSS5      S5        U R                  U" SSS5      S5        U R                  U" SS5      S5        U R                  U" SSS5      S5        U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SS5      S5        U R                  U" SSS5      S5        U R                  U" SSS5      S 5        U R                  U" SS!S5      S5        U R                  U" S"S5      S#5        U R                  U" S$S5      S#5        U R                  U" SS%S&5      S'5        U R                  U" SS%S(5      S(5        g ))N/foobar/barbaz/bar/bazz/foo/bar/bazz/foo/zbar/zbaz/z/foo/bar/baz/   /foo   bars   /bars   bazs   /bar/bazs   /foo/bar/bazs   /foo/s   bar/s   baz/s   /foo/bar/baz/ar$   za/ba/bzb/a/b/b/cdza/b/c/dzb//cza/b//c/dzb/c//a/a/bz/a/z/bcz/b/cz/c)r(   joinassertEqual)r*   fns     r   	test_joinPosixPathTest.test_join0   s   ^^FE659:FFE51>JGVV4?KGVWf={KGVV4OHgw7?OPCt4CRt4Cu5Cv6D#u5D$v6C,y9C-z:C-y9D#v6E3v6Cs+v6Ct,t4r   c                    U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S	5      S
5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        g )N/foo/bar)r/   r0   /)rF   r$   foo)r$   rG   ////foo)////rG   
//foo//bar)//foor0      /foo/bar)r4   r5      /)rM   r      foo)r   rN      ////foo)   ////rN   
   //foo//bar)   //foor5   )r@   r(   splitr*   s    r   
test_splitPosixPathTest.test_splitH   s    4oF-y9/=3_E68HI57HI.<0-@46GH79KLr   c                    U R                  [        R                  " U5      X#45        U R                  [        R                  " SU-   5      SU-   U45        U R                  [        R                  " SU-   5      SU-   U45        U R                  [        R                  " SU-   5      SU-   U45        U R                  [        R                  " SU-   5      SU-   U45        U R                  [        R                  " US-   5      X#-   S-   S45        [        US5      n[        US5      n[        US5      nU R                  [        R                  " U5      X#45        U R                  [        R                  " SU-   5      SU-   U45        U R                  [        R                  " SU-   5      SU-   U45        U R                  [        R                  " S	U-   5      S	U-   U45        U R                  [        R                  " S
U-   5      S
U-   U45        U R                  [        R                  " US-   5      X#-   S-   S45        g )NrF   zabc/zabc.def/z	/abc.def/r$   ASCIIrM   s   abc/s   abc.def/s	   /abc.def/r   )r@   r(   splitextbytes)r*   pathfilenameexts       r   splitextTestPosixPathTest.splitextTestU   s   ++D1H?C++C$J7#.#9NO++FTM: 8+S1	3++J,=>$x/5	7++K$,>?%0#6	8++D3J7".3.3	5 T7#7+C!++D1H?C++D4K8/3/	1++GdN;!H,c2	4++K$,>?%0#6	8++L4,?@&137	9++D4K8".4/5	7r   c                    U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  SS	S
5        U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  SSS5        U R                  SSS5        g )Nzfoo.barrG   z.barzfoo.boo.barzfoo.boozfoo.boo.biff.barzfoo.boo.biffz.csh.rcz.cshz.rcnodotsr$   z.cshrcz...manydotsz...manydots.extz.ext...z........)r^   rT   s    r   test_splitextPosixPathTest.test_splitextq   s    )UF3-F;,nfE)VU3(Hb1(Hb1-;+]FC#sB'$b)*j"5"b"%r   c                    [         R                  nU R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S	5      S
5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S 5        U R                  U" S!5      S"5        U R                  U" S#5      S$5        g )%Nr$   )r$   r$   r$   r6   )r$   r$   r6   r8   )r$   r$   r8   r9   )r$   r$   r9   r<   )r$   rF   r6   r=   )r$   rF   r8   z/a/b/)r$   rF   r9   //a)r$   //r6   z///a)r$   rF   rg   z///a/b)r$   rF   z//a/bc:/a/b)r$   r$   ri   \/a/b)r$   r$   rj   \a\b)r$   r$   rk   r   )r   r   r      a)r   r   rl      /a)r   rM   rl      //a)r   s   //rl   s   ///a)r   rM   rn   )r(   	splitrootr@   r*   fs     r   test_splitrootPosixPathTest.test_splitroot   s   2-3/5?36$454.16$457%67 	5?36$458&898&898&898&89314"235#456$677%89r   c                    U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S	5      S5        U R                  [        R                  " S
5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        g )Nr$   FrF   Tr/   rE   foo/barr   rM   r4   rL   s   foo/bar)assertIsr(   isabsrT   s    r   
test_isabsPosixPathTest.test_isabs   s    ioob)51iooc*D1ioof-t4iooj148iooi0%8iooc*E2iood+T2ioog.5iook2D9iooj159r   c                    U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S	5        U R                  [        R                  " S
5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S	5        g )NrE   r0   rF   r$   rG   rH   rJ   rL   r5   rM   r   rN   rO   rQ   )r@   r(   r   rT   s    r   test_basenamePosixPathTest.test_basename   s   ++J7?++C0"5++E2E:++I6>++L95A++K8&A++D137++F3V<++J7@++M:FCr   c                    U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S	5        U R                  [        R                  " S
5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        g )NrE   r/   rF   rG   r$   rH   rI   rJ   rK   rL   r4   rM   rN   r   rO   rP   rQ   rR   )r@   r(   r   rT   s    r   test_dirnamePosixPathTest.test_dirname   s   **:6?**3/5**5126**95v>**<8'B**;7A**40$7**62C8**:6@**=98Dr   c                 P   U R                  [        R                  " [        S-   5      S5        U R                  [        R                  " [        S-   5      S5        U R                  [        R                  [        S-   5        [        [        S-   S5       nUR                  S5        S S S 5        U R                  [        R                  " [        S-   5      S5        [        R                  " 5       (       Ga  U R                  [        R                  [        S-   5        [        R                  " [        S-   [        S-   5        U R                  [        R                  " [        S-   5      S5        [        R                  " [        S-   5        U R                  [        R                  " [        S-   5      S5        U R                  [        R                  " [        S-   5      S5        U R                  [        R                  " [        S-   5      S5        g g ! , (       d  f       GNv= f)Nr%   Fr&   wbrN   T)rv   r(   islinkr   r)   
addCleanupr   unlinkopenwritecan_symlinkossymlinkremoveexistsrp   s     r   test_islinkPosixPathTest.test_islink   s`   i&&v|4e<i''5u=	((&3,7&3,%GGFO &i&&v|4e<  ""OOI,,fsl;JJv|Vc\2MM)**6C<8$?IIfsl#MM)**6C<8$?MM)**6C<8%@MM)++FSL94@ #	 &%s   H
H%c                    U R                  [        R                  " [        S-   5      S5        U R                  [        R                  " [        R
                  " [        5      S-   5      S5        U R                  [        R                  " [        S-   5      S5        U R                  [        R                  " [        R
                  " [        5      S-   5      S5        g )Nu   F        )rv   r(   r   r   r   fsencoderT   s    r   test_islink_invalid_paths'PosixPathTest.test_islink_invalid_paths   s    i&&v'895Ai&&r{{6':W'DEuMi&&v7?i&&r{{6':W'DEuMr   c                 X   U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " [        S5      5      S5        U R                  [        R                  " [        S5      5      S5        g )NrF   TrM   )rv   r(   ismountr   rT   s    r   test_ismountPosixPathTest.test_ismount   sn    i'',d3i''-t4i''6=i''7>r   c                 T   U R                  [        R                  " [        5      S5         [        R
                  " [        5        U R                  [        R                  " [        5      S5        [        R                  " [        5        g ! [        R                  " [        5        f = f)NF)rv   r(   r   r   r   mkdirr   rmdirrT   s    r   test_ismount_non_existent'PosixPathTest.test_ismount_non_existent   s^    i''/7	$HHVMM)++F3U;OOF#IOOF#s   AB B'c                 4   U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        g )N   /F   //    / )rv   r(   r   rT   s    r   test_ismount_invalid_paths(PosixPathTest.test_ismount_invalid_paths   sf    i''	2E:i''159i''0%8i''159r   c                     [         R                  " S[        5        U R                  [        R
                  " [        5      S5        [        R                  " [        5        g ! [        R                  " [        5        f = f)NrF   F)r   r   r   rv   r(   r   r   r   rT   s    r   test_ismount_symlinks#PosixPathTest.test_ismount_symlinks   sK    	%JJsF#MM)++F3U;V$IV$s   AA" "A>NzTest requires posix modulec                     [         R                  nS n U[         l        U R                  [        R                  " [
        5      S5        U[         l        g ! U[         l        f = f)Nc                 d    SnSnU [         :X  a  SnSn[        R                  " SXSSSSSSS4
5      $ )Nr      )r   posixstat_resultr[   st_inost_devs      r   
fake_lstat?PosixPathTest.test_ismount_different_device.<locals>.fake_lstat   sA    FFv~$$aAq!Q1%MNNr   Tr   lstatrv   r(   r   r   r*   
save_lstatr   s      r   test_ismount_different_device+PosixPathTest.test_ismount_different_device   sG     XX
	O	"!BHMM)++F3T:!BHzBH   5A A#c                     [         R                  nS n U[         l        U R                  [        R                  " [
        5      S5        U[         l        g ! U[         l        f = f)Nc                     SnSnU R                  [        5      (       a  U [        :w  a  [        S5      eU [        :X  a  SnSn[        R                  " SXSSSSSSS4
5      $ )Nr   z!Fake [Errno 13] Permission deniedr   )
startswithr   OSErrorr   r   r   s      r   r   EPosixPathTest.test_ismount_directory_not_readable.<locals>.fake_lstat  sd    FFv&&46> ABBv~$$aAq!Q1%MNNr   Tr   r   s      r   #test_ismount_directory_not_readable1PosixPathTest.test_ismount_directory_not_readable  sG     XX

	O	"!BHMM)++F3T:!BHzBHr   c                 V    U R                  [        R                  " [        5      5        g N)r'   r(   
isjunctionr   rT   s    r   test_isjunctionPosixPathTest.test_isjunction  s    --f56r   win32zFast paths are not for win32c                    U R                  [        R                  R                  [        R
                  L 5        U R                  [        R                  " [        R                  R                  5      5        U R                  [        R                  R                  [        R                  L 5        U R                  [        R                  " [        R                  R                  5      5        g r   )
assertTruer   r[   ro   r   _path_splitroot_exr'   inspect
isfunctionnormpath_path_normpathrT   s    r   test_fast_paths_in_use$PosixPathTest.test_fast_paths_in_use!  s    
 	))U-E-EEF++BGG,=,=>?((E,@,@@A++BGG,<,<=>r   c                     U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        g )NrG   rN   )r@   r(   
expanduserrT   s    r   test_expanduserPosixPathTest.test_expanduser+  s8    --e4e<--f5v>r   c                 `   [         R                  " 5        nSUS'   U R                  [        R                  " S5      S5        SUS'   U R                  [        R                  " S5      S5        S H  nU R                  US9   X!S'   U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S	5      S
5        S S S 5        M     S S S 5        g ! , (       d  f       M  = f! , (       d  f       g = f)Nz/home/victorHOME~z/home/victor/)rF   r$   rh   ///)homerF   ~/z~/foor/   )r   EnvironmentVarGuardr@   r(   r   subTest)r*   envr   s      r   test_expanduser_home_envvar)PosixPathTest.test_expanduser_home_envvar/  s    **,(CKY11#6G *CKY11#6G,\\t\,"&K$$Y%9%9#%>D$$Y%9%9$%?E$$Y%9%9'%BFK	 -, - -, -, -,s%   A+DA7D8D
DD
D-vxworkszno home directory on VxWorksc           	         [         R                  " S5      nU R                  [        R                  " S5      [
        5        U R                  [        R                  " S5      [        5        [        R                  " S5      S:w  az  U R                  [        R                  " S5      S-   [        R                  " S5      5        U R                  [        R                  " S5      S-   [        R                  " S5      5        U R                  [        R                  " S5      [
        5        U R                  [        R                  " S	5      [
        5        U R                  [        R                  " S
5      [        5        U R                  [        R                  " S5      [        5        [        R                  " 5        nUS	 UR                  [        R                  " 5       5      R                  nUR                  S5      =(       d    SnU R                  [        R                  " S5      U5        [        R                   R#                  US[$        S9   [        R                   R#                  US[$        S9   S H)  nU R                  [        R                  " U5      U5        M+     S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Npwdr   s   ~/r   rF      ~rM   z~root/z~foo/s   ~root/s   ~foo/r   getpwuid)side_effectgetpwnam)r   z~/.localz
~vstinner/)r   import_moduleassertIsInstancer(   r   strrZ   r@   r   r   r   r   getuidpw_dirrstripr   patchobjectKeyError)r*   r   r   r   r[   s        r   test_expanduser_pwd!PosixPathTest.test_expanduser_pwd?  s    ))%0i2248#>i22595A $+$$S)C/$$T* $$T*T1$$U+ 	i228<cBi227;SAi229=uEi228<eD**,F<<		,33D;;s#*sDY11#6= ""3
"I""3
"I;D$$Y%9%9$%?F < J J -, JI JI -,s=   <BK $K50J>%K-K >
KK
K	K  
K.c           
      B   [         R                  " S5      n[        R                  " US5      nU" 5        Vs/ s H  o3R                  PM     nn[        R
                  " S5      (       a  SOSn[        U5      U:  a1  [        R                  " U5        UR                  S S9  XES-  U* S-  2	 U H  nUR                  U5      nUR                  nUR                  S	5      =(       d    S	nU R                  XcR                  S
9   U R                  [        R                   " SU-   5      U5        U R                  [        R                   " ["        R$                  " SU-   5      5      ["        R$                  " U5      5        S S S 5        M     g s  snf ! , (       d  f       M  = f)Nr   getpwallcpui  d   c                 "    U R                  5       $ r   )isascii)names    r   <lambda>4PosixPathTest.test_expanduser_pwd2.<locals>.<lambda>s  s
    r   )key   rF   )r   r   r   )r   r   r	   get_attributepw_nameis_resource_enabledlenrandomshufflesortr   r   r   r   r@   r(   r   r   r   )r*   r   r   entrynamesmaxusersr   r   s           r   test_expanduser_pwd2"PosixPathTest.test_expanduser_pwd2h  sD    ))%0((j9,4J7J5J7"66u==43u:  NN5!JJ6J7k8)Q,./D LL&E<<D;;s#*sD4=  !5!5cDj!A4H  !5!5bkk#*6M!N!#T!24 >=  8 >=s   F
A;F
F	)2)r$   rb   )rF   rF   )/.rF   )z/./rF   )z/.//.rF   )z
/./foo/barrE   )r/   r/   )rE   rE   )rh   rh   )r   rF   )z///foo/.//bar//rE   )z///foo/.//bar//.//..//.//baz///z/foo/baz)z///..//./foo/.//barrE   )rb   rb   )z.//.rb   )z	./foo/barru   )rc   rc   )../rc   )../foor	  )	../../foor
  )z../foo/../barz../bar)z../../foo/../bar/./baz/boom/..../../bar/baz/..rF   r  )z/../rF   )z/..//rF   )z//.rh   )z//..rh   )//...r  )z//../foorK   )z//../../foorK   )/../foor/   )z
/../../foor/   )z/../foo/../rF   )z/../foo/../barr1   )z/../../foo/../bar/./baz/boom/..r3   )z/../../foo/../bar/./baz/boom/.z/bar/baz/boom)zfoo/../bar/bazzbar/baz)zfoo/../../bar/bazz
../bar/baz)zfoo/../../../bar/bazr  )zfoo///../bar/.././../baz/boomz../baz/boom)zfoo/bar/../..///../../baz/boomz../../baz/boom)/foo/..rF   )z
/foo/../..rF   )z//foo/..rh   )z//foo/../..rh   )z	///foo/..rF   )z///foo/../..rF   )z
////foo/..rF   )z/////foo/..rF   c                    U R                    H  u  pU R                  U5         [        R                  " U5      nU R	                  X25        S S S 5        UR                  S5      nUR                  S5      nU R                  U[        S9   [        R                  " U5      nU R	                  X25        S S S 5        M     g ! , (       d  f       Ny= f! , (       d  f       M  = f)Nzutf-8)type)NORMPATH_CASESr   r(   r   r@   encoderZ   )r*   r[   expectedresults       r   test_normpathPosixPathTest.test_normpath  s    "11NDd#"++D1  2 $ ;;w'Dw/Hd/"++D1  2 0/ 2## 0/s   (B>	(C>
C	
C	strictTc                 |   U R                  [        S0 UD6[        R                  " 5       5        U R                  [        S0 UD6[        R                  " 5       5        U R                  [        SR	                  S/S-  5      40 UD6[        R                  " 5       5        U R                  [        S0 UD6[        R
                  " 5       5        U R                  [        S	0 UD6[        R
                  " 5       5        U R                  [        SR	                  S/S-  5      40 UD6[        R
                  " 5       5        g )
Nrb   rF   r      .rM   )rb   )z./.)r  )s   ./.)r@   r   r   getcwdr?   getcwdbr*   r   s     r   test_realpath_curdir"PosixPathTest.test_realpath_curdir  s     	00"))+>262BIIK@#((C53;"7B6BBIIKP1&12::<@3F3RZZ\B$))TFSL"9DVDbjjlSr   c           	         U R                  [        S0 UD6[        [        R                  " 5       5      5        U R                  [        S0 UD6[        [        [        R                  " 5       5      5      5        U R                  [        SR                  S/S-  5      40 UD6S5        U R                  [        S0 UD6[        [        R                  " 5       5      5        U R                  [        S	0 UD6[        [        [        R                  " 5       5      5      5        U R                  [        SR                  S/S-  5      40 UD6S5        g )
Nrc   rF   r      ..rM   )rc   )z../..)r"  )s   ../..)r@   r   r   r   r  r?   r  r  s     r   test_realpath_pardir"PosixPathTest.test_realpath_pardir  s     	1&17299;3GH4V4ggbiik>R6ST#((D6C<"8CFCSI262GBJJL4IJ5f5wwrzz|?T7UV$))UGcM":EfEtLr   c                 
    [         R                  " [        S-   [        5        U R                  [	        [        40 UD6[        S-   5        [
        R                  " [        5        g ! [
        R                  " [        5        f = fNr%   )r   r   r   r@   r   r   r   r  s     r   test_realpath_basic!PosixPathTest.test_realpath_basic  sT    
	%JJvcz6*Xf77DV$IV$s   A	A& &Bc                 :    [         R                  " [        S-   [        5        U R                  [        [
        [        SS9  U R                  [        [
        [        S-   SS9  [        R                  " [        5        g ! [        R                  " [        5        f = f)Nr%   Tr  r&   )r   r   r   assertRaisesFileNotFoundErrorr   r   r   rT   s    r   test_realpath_strict"PosixPathTest.test_realpath_strict  sk    
	%JJvcz6*/6$O/6C<PTUV$IV$s   A!A> >Bc                 h   SnU R                  [        [        USS9  U R                  [        [        USS9  U R                  [        [        U[        S9  SnU R                  [        [        USS9  U R                  [        [        USS9  U R                  [        [        U[        S9  SnU R                  [        [        USS9  U R                  [        [        USS9  U R                  [        [        U[        S9  SnU R                  [        [        USS9  U R                  [        [        USS9  U R                  [        [        U[        S9  SnU R                  [        [        USS9  U R                  [        [        USS9  U R                  [        [        U[        S9  S	nU R                  [        [        USS9  U R                  [        [        USS9  U R                  [        [        U[        S9  S
nU R                  [        [        USS9  U R                  [        [        USS9  U R                  [        [        U[        S9  SnU R                  [        [        USS9  U R                  [        [        USS9  U R                  [        [        U[        S9  Sn[
        R                  S:X  aS  U R                  [        USS9U5        U R                  [        [        USS9  U R                  [        U[        S9U5        ORU R                  [        [        USS9  U R                  [        [        USS9  U R                  [        [        U[        S9  Sn[
        R                  S:X  a9  U R                  [        USS9U5        U R                  [        U[        S9U5        O8U R                  [        [        USS9  U R                  [        [        U[        S9  U R                  [        [        USS9  Sn[
        R                  S:X  aS  U R                  [        USS9S5        U R                  [        [        USS9  U R                  [        U[        S9S5        ORU R                  [        [        USS9  U R                  [        [        USS9  U R                  [        [        U[        S9  Sn[
        R                  S:X  a9  U R                  [        USS9S5        U R                  [        U[        S9S5        O8U R                  [        [        USS9  U R                  [        [        U[        S9  U R                  [        [        USS9  Sn[
        R                  S:X  aS  U R                  [        [        USS9  U R                  [        [        USS9  U R                  [        [        U[        S9  OU R                  [        USS9U5        [        R                  (       a9  U R                  [        [        USS9  U R                  [        [        U[        S9  O8U R                  [        [        USS9  U R                  [        U[        S9U5        Sn[
        R                  S:X  a9  U R                  [        [        USS9  U R                  [        [        U[        S9  OU R                  [        USS9U5        [        R                  (       a9  U R                  [        [        USS9  U R                  [        [        U[        S9  g U R                  [        [        USS9  g )Nr   Fr*  Tr   z/nonexistent/x s   /nonexistent/x z/ /..s   / /..z/nonexistent/x /..s   /nonexistent/x /..r   r   u   /nonexistent/u   //..rF   u   /nonexistent//..z/nonexistentr   s   /nonexistent/)r+  
ValueErrorr   r   r,  sysplatformr@   UnicodeEncodeErrorUnicodeDecodeErrorr	   is_wasir   )r*   r[   s     r   test_realpath_invalid_paths)PosixPathTest.test_realpath_invalid_paths  s   *hUC*hTB*h]K*hUC*hTB*h]K#*hUC+XtDI*h]K$*hUC+XtDI*h]K*hUC*hTB*h]K*hUC*hTB*h]K&*hUC+XtDI*h]K'*hUC+XtDI*h]K<<7"Xd594@/4MXd=A4H0(DO0(DN0(DW$<<7"Xd594@Xd=A4H0(DO0(DW+XtDI<<7"Xd593?/4MXd=A3G0(DO0(DN0(DW'<<7"Xd59>JXd=A>R0(DO0(DW+XtDI<<7"0(DO0(DN0(DWXd594@!!'8T$!G!!'8T-!P!!"3XtD!Q  $}!EtL#<<7"0(DO0(DWXd594@??gxdCgxmL/4Mr   c                 2    [         R                  " [        R                  " [        S-   5      [        5        U R                  [        [        40 UD6[        S-   5        [        R                  " [        5        g ! [        R                  " [        5        f = fr&  )	r   r   r(   relpathr   r@   r   r   r   r  s     r   test_realpath_relative$PosixPathTest.test_realpath_relativeN  s_    	%JJy((4f=Xf77DV$IV$s   AA: :Bc                     [         R                  " [        S-   [        5        U R                  [	        S[        -   40 UD6[
        S-   5        [        R                  " [        5        g ! [        R                  " [        5        f = f)Nr%   znonexistent/../)r   r   r   r@   r   r   r   r   r  s     r   test_realpath_missing_pardir*PosixPathTest.test_realpath_missing_pardirX  s`    	%JJv|V,*V3>v>N V$IV$s   AA) )Bc                 2	    [         R                  " [        [        5        U R                  [	        [        5      [        5        [         R                  " [        S-   [        S-   5        [         R                  " [        S-   [        S-   5        U R                  [	        [        S-   5      [        S-   5        U R                  [	        [        S-   5      [        S-   5        U R                  [	        [        S-   5      [        S-   5        U R                  [	        [        S-   5      [        [        5      5        U R                  [	        [        S-   5      [        [        5      S-   5        [         R                  " [        S-   [        S-   5        U R                  [	        [        S	-   [        [        5      -   S-   5      [        S-   5        U R                  [	        [        S	-   [        [        5      -   S-   5      [        S-   5        [         R                  " [        [        5      S
-   [        S-   5        U R                  [	        [        S-   5      [        S
-   5        [         R                  " S[        [        [        5      5      -   S-   [        [        5      -   S-   [        S-   5        U R                  [	        [        S-   5      [        S-   5        [        R                  " [        [        5      5         U R                  [	        [        [        5      5      [        5        S S S 5        [        R                  " [        5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        S-   5        g ! , (       d  f       N= f! [        R                  " [        5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        S-   5        f = f)Nr%   r&   1/x1/..1/../x/xxy1/../r8   r6   r  rF   r>   )
r   r   r   r@   r   r   r   r   
change_cwdr   rT   s    r   test_realpath_symlink_loops)PosixPathTest.test_realpath_symlink_loopsc  s   
"	)JJvv&Xf-v6JJvcz6#:.JJvcz6#:.XfSj16#:>XfSj16#:>XfUl3VE\BXfVm4gfoFXfXo6$8NOJJvcz6#:.XfWnx7G&G#&MN#c\+XfWnx7G&G#&MN#c\+ JJx'%/<XfSj16%<@JJux883>'(*-./5cz;XfSj16#:> %%gfo6  (6*:!;VD 7 V$VCZ(VCZ(VCZ(VCZ(VCZ( 76 V$VCZ(VCZ(VCZ(VCZ(VCZ(s%   K5O) 7-O$O) 
O&"O) )B-Rc                     [         R                  " [        [        5        U R                  " [        [
        [        40 UD6  [         R                  " [        S-   [        S-   5        [         R                  " [        S-   [        S-   5        U R                  " [        [
        [        S-   40 UD6  U R                  " [        [
        [        S-   40 UD6  U R                  " [        [
        [        S-   40 UD6  U R                  " [        [
        [        S-   40 UD6  U R                  " [        [
        [        S-   40 UD6  [         R                  " [        S-   [        S-   5        U R                  " [        [
        [        S-   [        [        5      -   S-   40 UD6  U R                  " [        [
        [        S-   [        [        5      -   S-   40 UD6  [         R                  " [        [        5      S	-   [        S
-   5        U R                  " [        [
        [        S
-   40 UD6  [         R                  " S[        [        [        5      5      -   S-   [        [        5      -   S-   [        S-   5        U R                  " [        [
        [        S-   40 UD6  [        R                  " [        [        5      5         U R                  " [        [
        [        [        5      40 UD6  S S S 5        [        R                  " [        5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        S
-   5        g ! , (       d  f       N= f! [        R                  " [        5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        S
-   5        f = f)Nr%   r&   r@  rA  rB  rD  rE  rF  r8   r6   r  rF   r>   )r   r   r   r+  r   r   r   r   r   rG  r   r  s     r   "test_realpath_symlink_loops_strict0PosixPathTest.test_realpath_symlink_loops_strict  s   "	)JJvv&gxB6BJJvcz6#:.JJvcz6#:.gxFvFgxFvFgxHHgxI&IgxKFKJJvcz6#:.gx$Wnx/??#EQIOQgx$Wnx/??#EQIOQ JJx'%/<gxFvFJJux883>'(*-./5cz;gxFvF %%gfo6!!'8Xf5EPP 7 V$VCZ(VCZ(VCZ(VCZ(VCZ( 76 V$VCZ(VCZ(VCZ(VCZ(VCZ(s%   J7N) 9+N$N) 
N&"N) )B-Qc                 z    [         R                  " [        5        [         R                  " S[	        [        5      -   [        S-   5        [         R                  " S[        S-   5        U R                  [        [        S-   40 UD6[        5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        5        g ! [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        5        f = f)Nr  z/selfzself/self/selfz/link)
r   r   r   r   r   r@   r   r   r   r   r  s     r   (test_realpath_repeated_indirect_symlinks6PosixPathTest.test_realpath_repeated_indirect_symlinks  s    
	$HHVJJux//'1ABJJ'')9:Xfw&6A&A6JVg-.Vg-.OOF# Vg-.Vg-.OOF#s   BC$ $AD:c                 X   Sn [         R                  " [        5        [        U5       H=  n[         R                  " SR                  SU-  /S-  5      [        SUS-   -  -   5        M?     [         R                  " S[        S-   5        U R                  [        [        SU-  -   40 UD6[        5        [        R                  " [        5         U R                  [        SU-  5      [        5        S S S 5        [        US-   5       H#  n[        R                  " [        SU-  -   5        M%     [        R                  " [        5        g ! , (       d  f       N^= f! [        US-   5       H#  n[        R                  " [        SU-  -   5        M%     [        R                  " [        5        f = f)N
   rF   z%dz/%dr   rb   z/0)r   r   r   ranger   r?   r@   r   r   rG  r   r   )r*   r   depthis       r   test_realpath_deep_recursion*PosixPathTest.test_realpath_deep_recursion  s3    	$HHV5\

388TAXJO4fuA6NO "JJsFTM*Xfuu}&<GGP %%f-  $,!7@ . 519%  %!)!34 &OOF# .- 519%  %!)!34 &OOF#s%   CE #E/E 
EE AF)c                     [         R                  " [        5        [         R                  " [        S-   5        [         R                  " [        S-   [        S-   5        [        R
                  " [        S-   5         U R                  [        S0 UD6[        S-   5        S S S 5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        5        g ! , (       d  f       Nc= f! [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        5        f = f)Nz/y/kz/y/a)r6   )
r   r   r   r   r   rG  r@   r   r   r   r  s     r   test_realpath_resolve_parents+PosixPathTest.test_realpath_resolve_parents  s    	$HHVHHVd]#JJv}ftm4%%ftm4  !8!8$*VO5 5 Vd]+OOFTM*OOF# 54 Vd]+OOFTM*OOF#s%   A9D ;#C;D ;
D	D AE"c                     [         R                  " [        5        [         R                  " [        S-   5        [         R                  " [        S-   5        [         R                  " [        S-   [        S-   5        U R	                  [        [        S-   40 UD6[        S-   5        [        R                  " [        [        5      5         U R	                  [        [        [        5      S-   40 UD6[        S-   5        S S S 5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        5        g ! , (       d  f       N= f! [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        5        f = f)NrX  z/k/yz/link-yz
/link-y/..)r   r   r   r   r@   r   r   rG  r   r   r   r   r  s     r   (test_realpath_resolve_before_normalizing6PosixPathTest.test_realpath_resolve_before_normalizing  s>   	$HHVHHVd]#HHVf_%JJv(:; Xf|&;FvFQUV%%gfo6  (6*:\*I!TV!T!'$0 7 Vi/0OOFVO,OOFTM*OOF# 76 Vi/0OOFVO,OOFTM*OOF#s%   CF 4E6<F 6
F F A3G:c                 <    [         R                  " [        5        [         R                  " [        S-   5        [         R                  " [        [        S-   5        [        R
                  " [        [        5      5         [        [        5      nU R                  [        US-   40 UD6[        5        U R                  [        US-   40 UD6[        S-   5        S S S 5        [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        5        g ! , (       d  f       Nc= f! [        R                  " [        S-   5        [        R                  " [        S-   5        [        R                  " [        5        f = f)NrX  linkzlink/k)r   r   r   r   r   rG  r   r   r@   r   r   r   )r*   r   bases      r   test_realpath_resolve_first)PosixPathTest.test_realpath_resolve_first  s    	$HHVHHVd]#JJvv/%%gfo6'  $-!B6!BFK  $/!DV!DftmT 7
 Vf_-OOFTM*OOF# 76
 Vf_-OOFTM*OOF#s&   A<E >AD4E 4
E>E AFzCan't set symlink permissionsdarwinz1only macOS requires read permission to readlink()c                     [         R                  " [        S-   [        5        [         R                  " [        SSS9  U R	                  [        [        5      [        5        U R	                  [        [        S-   5      [        S-   5        U R	                  [        [        S-   5      [        [        5      S-   5        U R	                  [        [        S-   5      [        5        [         R                  " [        SSS9  [        R                  " [        5        g ! [         R                  " [        SSS9  [        R                  " [        5        f = f	Nr%   r   F)follow_symlinksr/   r  r    )	r   r   r   chmodr@   r   r   r   r   rT   s    r    test_realpath_unreadable_symlink.PosixPathTest.test_realpath_unreadable_symlink  s    
		%JJvcz6*HHVUE:Xf-v6Xfvo6HXfy&8976?V;STXfy&896BHHVUE:V$ HHVUE:V$s   C D 6Ec                 d    [         R                  " [        S-   [        5        [         R                  " [        SSS9  U R	                  [
        5         [        [        40 UD6  S S S 5        U R	                  [
        5         [        [        S-   40 UD64  S S S 5        U R	                  [
        5         [        [        S-   40 UD6  S S S 5        U R	                  [
        5         [        [        S-   40 UD6  S S S 5        [         R                  " [        SSS9  [         R                  " [        5        g ! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       Nv= f! [         R                  " [        SSS9  [         R                  " [        5        f = fre  )r   r   r   rh  r+  PermissionErrorr   r   r  s     r   'test_realpath_unreadable_symlink_strict5PosixPathTest.test_realpath_unreadable_symlink_strict/  s   	JJvcz6*HHVUE:""?3*6* 4""?3&3F34 4""?3)+6v6 4""?3)+6v6 4 HHVUE:IIf 43333333 HHVUE:IIfsl   AE9 D5$E9 EE9 3EE9 $E(8E9 5
E?E9 
EE9 
E%!E9 (
E62E9 96F/c                     [         R                  " [        5        [         R                  " [        S-   5        [         R                  " [        S5        U R	                  [        [        SS9[        5        U R	                  [        [        SS9[        5        U R	                  [        [        [        S9[        5         [         R                  " [        5        U R                  S5        U R	                  [        [        S-   SS9[        S-   5        U R                  [        [
        [        S-   SS9  U R                  [        [
        [        S-   [        S9  U R	                  [        [        S-   SS9[        S-   5        U R                  [        [
        [        S-   SS9  U R                  [        [
        [        S-   [        S9  [         R                  " [        S5        [        R                  " [        S-   5        [        R                  " [        5        g ! [         a     GN<f = f! [         R                  " [        S5        [        R                  " [        S-   5        [        R                  " [        5        f = f)	NrX  r   Fr*  TzCannot block permissionsz/missingrg  )r   r   r   rh  r@   r   r   statskipTestrl  r+  r   r   rT   s    r   "test_realpath_unreadable_directory0PosixPathTest.test_realpath_unreadable_directoryD  s   	$HHVHHVd]#HHVU#XfU;VDXfT:FCXf]CVL: 89XftmEB#d],ox$%)  +ox$%2  4 Xfz&9%H#j02ox*9L%)  +ox*9L%2  4 HHVU#OOFTM*OOF#+ # & HHVU#OOFTM*OOF#s2   B<H* ?H C-H* 
H'#H* &H''H* *AI>c                 4    [        [        S5       nUR                  S5        S S S 5        U R                  [	        [        SS9[        5        U R                  [	        [        SS9[        5        U R                  [	        [        [
        S9[        5        U R                  [	        [        S-   SS9[        5        U R                  [        [        [        S-   SS9  U R                  [        [        [        S-   [
        S9  U R                  [	        [        S-   SS9[        5        U R                  [        [        [        S-   SS9  U R                  [        [        [        S-   [
        S9  U R                  [	        [        S-   SS9[        [        5      5        U R                  [        [        [        S-   SS9  U R                  [        [        [        S-   [
        S9  U R                  [	        [        S	-   SS9[        S	-   5        U R                  [        [        [        S	-   SS9  U R                  [        [        [        S	-   [
        S9  [        R                  " [        5        g ! , (       d  f       GNL= f! [        R                  " [        5        f = f)
Nwtest_posixpath wuz ereFr*  TrF   r  r  /subdir)r   r   r   r@   r   r   r+  NotADirectoryErrorr   r   r   rp   s     r   test_realpath_nonterminal_file,PosixPathTest.test_realpath_nonterminal_fileh  s   	%fc"a01 #XfU;VDXfT:FCXf]CVLXfsl5A6J0(FSLQUV0(FSL%2  4 XftmEBFK0(FTMRVW0(FTM%2  4 XfunUCWV_U0(FUNSWX0(FUN%2  4 Xfy&8GR[I[\0(FY<NW[\0(FY<N%2  4 V$5 #"4 V$s"   I; I)H*I; )
I83I; ;Jc                     [        [        S-   S5       nUR                  S5        S S S 5        [        R                  " [        S-   [        5        U R                  [        [        SS9[        S-   5        U R                  [        [        SS9[        S-   5        U R                  [        [        [        S9[        S-   5        U R                  [        [        S-   SS9[        S-   5        U R                  [        [        [        S-   SS9  U R                  [        [        [        S-   [        S9  U R                  [        [        S-   SS9[        S-   5        U R                  [        [        [        S-   SS9  U R                  [        [        [        S-   [        S9  U R                  [        [        S	-   SS9[        [        5      5        U R                  [        [        [        S	-   SS9  U R                  [        [        [        S	-   [        S9  U R                  [        [        S
-   SS9[        S-   5        U R                  [        [        [        S
-   SS9  U R                  [        [        [        S
-   [        S9  [        R                  " [        5        [        R                  " [        S-   5        g ! , (       d  f       GN= f! [        R                  " [        5        [        R                  " [        S-   5        f = f)Nr%   ru  rv  Fr*  TrF   r  r  rw  z1/subdir)r   r   r   r   r   r@   r   r   r+  rx  r   r   r   rp   s     r   )test_realpath_nonterminal_symlink_to_file7PosixPathTest.test_realpath_nonterminal_symlink_to_file  sY   	+fslC(A01 )JJv|V,XfU;Vc\JXfT:FSLIXf]CVc\RXfsl5A6C<P0(FSLQUV0(FSL%2  4 XftmEBFSLQ0(FTMRVW0(FTM%2  4 XfunUCWV_U0(FUNSWX0(FUN%2  4 Xfy&8GR\I\]0(FY<NW[\0(FY<N%2  4 V$Vc\*9 )(6 V$Vc\*s"   K J:IK :
K	K 9Lc                     [        [        S-   S5       nUR                  S5        S S S 5        [        R                  " [        S-   [        S-   5        [        R                  " [        S-   [        5        U R                  [        [        SS9[        S-   5        U R                  [        [        SS9[        S-   5        U R                  [        [        SS9[        S-   5        U R                  [        [        S-   SS9[        S-   5        U R                  [        [        [        S-   SS9  U R                  [        [        [        S-   [        S9  U R                  [        [        S	-   SS9[        S-   5        U R                  [        [        [        S	-   SS9  U R                  [        [        [        S	-   [        S9  U R                  [        [        S
-   SS9[        [        5      5        U R                  [        [        [        S
-   SS9  U R                  [        [        [        S
-   [        S9  U R                  [        [        S-   SS9[        S-   5        U R                  [        [        [        S-   SS9  U R                  [        [        [        S-   [        S9  [        R                  " [        5        [        R                  " [        S-   5        [        R                  " [        S-   5        g ! , (       d  f       GN= f! [        R                  " [        5        [        R                  " [        S-   5        [        R                  " [        S-   5        f = f)Nr&   ru  rv  r%   Fr*  TrF   r  r  rw  z2/subdir)r   r   r   r   r   r@   r   r+  rx  r   r   r   r   rp   s     r   5test_realpath_nonterminal_symlink_to_symlinks_to_fileCPosixPathTest.test_realpath_nonterminal_symlink_to_symlinks_to_file  s   	+fslC(A01 )JJv|Vc\2JJv|V,XfU;Vc\JXfT:FSLIXfT:FSLIXfsl5A6C<P0(FSLQUV0(FSL%2  4 XftmEBFSLQ0(FTMRVW0(FTM%2  4 XfunUCWV_U0(FUNSWX0(FUN%2  4 Xfy&8GR\I\]0(FY<NW[\0(FY<N%2  4 V$Vc\*Vc\*= )(8 V$Vc\*Vc\*s#   L
 K8I<L
 8
LL
 
AM c                    [         R                  S sn[         l         [         R                  R                  [         R                  " 5       5      S   nU R	                  [
        [        R                  S 5        U R	                  [        [        R                  S5        U R                  [        R                  " S5      S5        U R                  [        R                  " [        R                  " S5      5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " SS5      SU-   S	-   5        U R                  [        R                  " SS
5      SU-   S-   5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " S	S	5      S5        U R                  [        R                  " SS5      S5        U[         l        g ! U[         l        f = f)Nc                      g)Nz/home/user/bar r  r   r   r   ,PosixPathTest.test_relpath.<locals>.<lambda>  s    7Hr   r$   r6   r8   z../a/bz../br  r<   z../cr=   r:   z../../arb   z/foo/bar/batz/x/y/zz../../../foo/bar/batrE   batrF   zfoo/bar/batz../../..rC  z../foo/bar/batz
../../../x)r   r  r[   rS   r+  	TypeErrorr(   r9  r0  r@   r   )r*   real_getcwdcurdirs      r   test_relpathPosixPathTest.test_relpath  s}   $&II/H bi	$WW]]299;/3Fi):):DAj)*;*;R@Y..s3S9Y..y/@/@/EFLY..u5u=Y..x8(CY..sF;U6\$=NOY..uf="6\&02Y..sE:IFY..sC8#>Y..~xHJ`aY..~zJERY..~sC]SY..sNCZPY..~tDFVWY..t^DlSY..sC8#>Y..tT:C@Y..vv>D#BIBIs   L2M M*c                 (   [         R                  S sn[         l         [         R                  R                  [         R                  " 5       5      S   nU R	                  [
        [        R                  S5        U R                  [        R                  " S5      S5        U R                  [        R                  " [        R                  " S5      5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " S5      S5        U R                  [        R                  " SS5      SU-   S	-   5        U R                  [        R                  " SS
5      SU-   S-   5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " SS5      S5        U R                  [        R                  " S	S	5      S5        U R                  [        R                  " SS5      S5        U R	                  [        [        R                  SS5        U R	                  [        [        R                  SS5        U[         l        g ! U[         l        f = f)Nc                      g)Ns   /home/user/barr  r  r   r   r   2PosixPathTest.test_relpath_bytes.<locals>.<lambda>  s    :Lr   r  r   rl   s   a/bs   ../a/bs   ../bs   ../rm   s   ../cs   /a/bs   b/cs   ../../ar  s   /foo/bar/bats   /x/y/zs   ../../../foo/bar/batrL   s   batrM   s   foo/bar/bats   ../../..s   /xs   ../foo/bar/bats
   ../../../xs   bytesr   )r   r  r[   rS   r+  r0  r(   r9  r@   r   r  )r*   real_getcwdbr  s      r   test_relpath_bytes PosixPathTest.test_relpath_bytes  s   &(jj2L"rz	&WW]]2::<04Fj)*;*;SAY..t4d;Y..y/@/@/FGNY..v6?Y..y99EY..tW=#F]502Y..vw?#F]724Y..tV<jIY..tT:DAY..	JLcdY..LfUY..E~VY..t_E{SY..FHYZY..uoFVY..tT:DAY..ue<dCY..w@$Gi):):HeLi):):E8L%BJBJs   MN Nc                   ^  U 4S jnU 4S jnT R                  [        [        R                  S 5        T R                  [        [        R                  / 5        T R                  [        [        R                  [        / 5      5        U" [        SS/5        U" [        SS/5        U" 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5        U" SS/S5        U" SS/S5        U" 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QS5        U" / SQS5        U" S/S5        U" SS/S5        U" [        SS/5        T R                  [        [        R                  S S/5        T R                  [        [        R                  S S!/5        T R                  [        [        R                  S"S/5        T R                  [        [        R                  SS#/5        T R                  [        [        R                  SS$/5        T R                  [        [        R                  S%S#/5        g )&Nc           
        > TR                  [        R                  " U 5      U5        TR                  [        R                  " U  Vs/ s H  n[        R                  " U5      PM     sn5      [        R                  " U5      5        g s  snf r   )r@   r(   
commonpathr   r   )pathsr  pr*   s      r   check,PosixPathTest.test_commonpath.<locals>.check  s_    Y11%8(CY1152Q5a2;;q>52QR[[242Qs    Bc           
         > TR                  U [        R                  U5        TR                  U [        R                  U Vs/ s H  n[        R                  " U5      PM     sn5        g s  snf r   )r+  r(   r  r   r   )excr  r  r*   s      r   check_error2PosixPathTest.test_commonpath.<locals>.check_error  sP    c9#7#7?c9#7#77<=u!r{{1~u=?=s    A*z/usrusrz
/usr/localz/usr/local/z/usr//localz//usr/localz/usr/./localz/./usr/localrF   z/devz	/usr/lib/z/usr/lib/python3z/usr/libz/usr/lib64/z
/usr/lib64spamalotr$   and/jamand/spamandzand//jamz
and/spam//z	and/./jamz
./and/spam)r  r  r  )r  r  r  z	spam/alotz
/spam/alots	   /usr/lib/zusr/lib/python3s   usr/lib/s   /usr/lib/python3s   usr/lib/python3zusr/lib/)r+  r  r(   r  r0  iter)r*   r  r  s   `  r   test_commonpathPosixPathTest.test_commonpath  s   	4	?
 	)Y%9%94@*i&:&:B?*i&:&:DHEJ0J0|nl+|\*L9}l+\:}m,l;}m,l;~~.=sFmS!vv${./<{M*F3z<(&1{L)62vhvv'vv#y*%u-z<(%0{L)51-r2,e4rdBr;$J\ 23)Y%9%9');<	>)Y%9%9'):;	=)Y%9%9&(:;	=)Y%9%9&(;<	>)Y%9%9&(:;	=)Y%9%9%':;	=r   r  )D__name__
__module____qualname____firstlineno__r,   rB   rU   r^   rd   rr   rx   r{   r~   r   r   r   r   r   r   skip_unless_symlinkr   r   skipIfr   r   r   r   r1  r2  r	   cpython_onlyr   r   r   r   r  r  r  r   r   r   r  r#  r'  r-  r6  r:  r=  rH  rK  rN  rU  rY  r\  ra  r   rh  supports_follow_symlinksri  rm  rr  ry  r|  r  r  r  r  __static_attributes__r  r   r   r!   r!   *   s   A50M78&:4:DEA$N?$: ""% #% __Ud]$@A" B"" __Ud]$@A" B"*7 __S\\W,.LM?  N??L  __S\\Y.35%G5%GN __S\\Y.35454.3Nj
3 '2$'(M)BCT D 'T '2$'(M)BCM D 'M ""&2-01% 2 ' #% ""&% ' #%]N~ ""&2-01% 2 ' #% ""&2-01% 2 ' #% ""&%) ' #%)N ""&Hd#h%>?%) @ ' #%)N ""&2$'(M)BC
$ D ' #
$ ""&2$'(M)BC$ D ' #$" ""&2-01$ 2 ' #$$ ""&2$'(M)BC$ D ' #$4 ""&2$'(M)BC$ D ' #$" ""&__RXXR%@%@@Bab__S\\X-/bc
% d c ' #
% ""&__RXXR%@%@@Bab__S\\X-/bcHd#h%>? @ d c ' #
  '"" $ # ' $D '% '%< ""&+ ' #+@ ""& + ' # +D$6&<6=r   r!   c                        \ rS rSr\r/ SQrSrg)PosixCommonTesti?  )r9  samefilesameopenfilesamestatr  N)r  r  r  r  r(   
pathmodule
attributesr  r  r   r   r  r  ?  s    JDJr   r  c                       \ rS rSr\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S rS rS rS rS rS r\" 0 SS0S\05      S 5       rS rS rSrg)PathLikeTestsiD  c                    [         U l        [        [         5      U l        U R	                  [
        R                  U R                  5        [        U R                  SS5       nUR                  S5        S S S 5        g ! , (       d  f       g = f)Nxbr   s   test_posixpath.PathLikeTests)	r   	file_namer   	file_pathr   r   r   r   r   )r*   files     r   r,   PathLikeTests.setUpH  sX    !&)	(($..9$..$*dJJ67 +**s   !A<<
B
c                 h    U R                  U" U R                  5      U" U R                  5      5        g r   )r@   r  r  )r*   funcs     r   assertPathEqualPathLikeTests.assertPathEqualO  s$    dnn-tDNN/CDr   c                 N    U R                  U R                  R                  5        g r   )r  r[   normcaserT   s    r   test_path_normcase PathLikeTests.test_path_normcaseR      TYY//0r   c                 N    U R                  U R                  R                  5        g r   )r  r[   rw   rT   s    r   test_path_isabsPathLikeTests.test_path_isabsU      TYY__-r   c                     U R                  U R                  R                  S[        S5      S5      U R                  R                  SSS5      5        g )Nr6   r7   r>   )r@   r[   r?   r   rT   s    r   test_path_joinPathLikeTests.test_path_joinX  s;    Xc]C@S#6	8r   c                 N    U R                  U R                  R                  5        g r   )r  r[   rS   rT   s    r   test_path_splitPathLikeTests.test_path_split\  r  r   c                 N    U R                  U R                  R                  5        g r   )r  r[   rY   rT   s    r   test_path_splitext PathLikeTests.test_path_splitext_  r  r   c                 N    U R                  U R                  R                  5        g r   )r  r[   
splitdriverT   s    r   test_path_splitdrive"PathLikeTests.test_path_splitdriveb      TYY112r   c                 N    U R                  U R                  R                  5        g r   )r  r[   ro   rT   s    r   test_path_splitroot!PathLikeTests.test_path_splitroote  s    TYY001r   c                 N    U R                  U R                  R                  5        g r   )r  r[   r   rT   s    r   test_path_basename PathLikeTests.test_path_basenameh  r  r   c                 N    U R                  U R                  R                  5        g r   )r  r[   r   rT   s    r   test_path_dirnamePathLikeTests.test_path_dirnamek      TYY../r   c                 N    U R                  U R                  R                  5        g r   )r  r[   r   rT   s    r   test_path_islinkPathLikeTests.test_path_islinkn  s    TYY--.r   c                 N    U R                  U R                  R                  5        g r   )r  r[   r)   rT   s    r   test_path_lexistsPathLikeTests.test_path_lexistsq  r  r   c                 N    U R                  U R                  R                  5        g r   )r  r[   r   rT   s    r   test_path_ismountPathLikeTests.test_path_ismountt  r  r   c                 N    U R                  U R                  R                  5        g r   )r  r[   r   rT   s    r   test_path_expanduser"PathLikeTests.test_path_expanduserw  r  r   c                 N    U R                  U R                  R                  5        g r   )r  r[   
expandvarsrT   s    r   test_path_expandvars"PathLikeTests.test_path_expandvarsz  r  r   c                 N    U R                  U R                  R                  5        g r   )r  r[   r   rT   s    r   test_path_normpath PathLikeTests.test_path_normpath}  r  r   c                 N    U R                  U R                  R                  5        g r   )r  r[   r   rT   s    r   test_path_abspathPathLikeTests.test_path_abspath  r  r   r  Tc                     U R                  U R                  R                  5        U R                  [        U R                  R                  40 UD65        g r   )r  r[   r   r   r  s     r   test_path_realpath PathLikeTests.test_path_realpath  s<    TYY//0WTYY%7%7B6BCr   c                 N    U R                  U R                  R                  5        g r   )r  r[   r9  rT   s    r   test_path_relpathPathLikeTests.test_path_relpath  r  r   c                     U R                   R                  U R                  U R                  /5      nU R	                  XR                  5        g r   )r[   r  r  r  r@   )r*   common_paths     r   test_path_commonpath"PathLikeTests.test_path_commonpath  s5    ii**DNNDNN+KLnn5r   )r  r  N)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  r  r  r   r   r  r  D  s    D8E1.8.13210/003310 2$'(M)BCD DD
06r   r  __main__)#r   r   r(   r   r1  r   	functoolsr   r   r   r   r   r   r   r	   r
   test.supportr   r   test.support.os_helperr   r   r   r   ImportErrorr   r   r   TestCaser!   
CommonTestr  r  r  mainr  r   r   <module>r     s     	   
   I I  ! & " 3  
=2R=H%% R=j E&1183D3D E
J6H%% J6Z ZMMO #  Es   C	 	CC