
    <e9                     x   d dl Z d dlZd dlZd dlZd dlmZmZmZmZ d dlm	Z	 d dl
mZ d dl
mZ d dlmZ d dlmZ 	 d dlZn# e$ r dZY nw xY w eej                  Zd Zd	 Z G d
 dej                  Z G d de	j        ej                  Z G d dej                  Zedk    r ej                     dS dS )    N)realpathabspathdirnamebasename)test_genericpath)import_helper)	os_helper)FakePath)mockc                 b    dt           v }d}|  t          j        |          |           g|         S )z
    On Windows, posixpath.abspath still returns paths with backslashes
    instead of posix forward slashes. If this is the case, several tests
    fail, so skip them.
    \z'ABSTFN is not a posix path - tests fail)ABSTFNunittestskip)testfound_backslashmsgs      */usr/lib/python3.11/test/test_posixpath.py!skip_if_ABSTFN_contains_backslashr      s7     fnO
3C$(-$$T**+O<<    c                 R    	 t          j        |            d S # t          $ r Y d S w xY wN)osrmdirOSError)r   s    r   
safe_rmdirr   !   s?    
   s    
&&c                   d   e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zej        d             Z ej        edu d          d             Z ej        edu d          d             Zd Zd Z ej        ej        dk    d          d             Zg dZd Zed             Zed             Z ej        ed                         Z!ej        ed                         Z"ej        ed                         Z#ej        ed                         Z$ej        ed                         Z%ej        ed                          Z&ej        ed!                         Z'ej        ed"                         Z(ej        ed#                         Z)ej        ed$                         Z*d% Z+d& Z,d' Z-dS )(PosixPathTestc                 .    |                                   d S r   )tearDownselfs    r   setUpzPosixPathTest.setUp)   s    r   c                     dD ]?}t          j        t           j        |z              t          t           j        |z              @d S )N) 12)r	   unlinkTESTFNr   )r"   suffixs     r   r    zPosixPathTest.tearDown,   sM    $ 	2 	2FY-6777y'&01111	2 	2r   c                    |                      t          j        dddd          d           |                      t          j        ddd          d           |                      t          j        ddd	          d
           |                      t          j        dddd          d           |                      t          j        ddd          d           |                      t          j        ddd          d           d S )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/)assertEqual	posixpathjoinr!   s    r   	test_joinzPosixPathTest.test_join1   s   vuEE#	% 	% 	%u==~NNN@@(	* 	* 	* 	&II$	& 	& 	&@@(	* 	* 	*'7CC)	+ 	+ 	+ 	+ 	+r   c                 &   |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d	          d
           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           d S )N/foo/bar)r,   r-   /)r9   r%   foo)r%   r:   ////foo)////r:   
//foo//bar)//foor-      /foo/bar)r1   r2      /)r@   r      foo)r   rA      ////foo)   ////rA   
   //foo//bar)   //foor2   )r3   r4   splitr!   s    r   
test_splitzPosixPathTest.test_split?   sL   44oFFF--y999//===33_EEE668HIII557HIII..<<<00-@@@446GHHH779KLLLLLr   c                    |                      t          j        |          ||f           |                      t          j        d|z             d|z   |f           |                      t          j        d|z             d|z   |f           |                      t          j        d|z             d|z   |f           |                      t          j        d|z             d|z   |f           |                      t          j        |dz             ||z   dz   df           t          |d          }t          |d          }t          |d          }|                      t          j        |          ||f           |                      t          j        d|z             d|z   |f           |                      t          j        d|z             d|z   |f           |                      t          j        d	|z             d	|z   |f           |                      t          j        d
|z             d
|z   |f           |                      t          j        |dz             ||z   dz   df           d S )Nr9   zabc/zabc.def/z	/abc.def/r%   ASCIIr@   s   abc/s   abc.def/s	   /abc.def/r   )r3   r4   splitextbytes)r"   pathfilenameexts       r   splitextTestzPosixPathTest.splitextTestL   s   +D11Hc?CCC+C$J77#.#9NOOO+FTM:: 8+S1	3 	3 	3+J,=>>$x/5	7 	7 	7+K$,>??%0#6	8 	8 	8+D3J77"S.3.3	5 	5 	5 T7##7++C!!+D11Hc?CCC+D4K88/3/	1 	1 	1+GdN;;!H,c2	4 	4 	4+K$,>??%0#6	8 	8 	8+L4,?@@&137	9 	9 	9+D4K88"S.4/5	7 	7 	7 	7 	7r   c                 .   |                      ddd           |                      ddd           |                      ddd           |                      dd	d
           |                      ddd           |                      ddd           |                      ddd           |                      ddd           |                      ddd           |                      ddd           |                      ddd           |                      ddd           d S )Nzfoo.barr:   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........)rO   r!   s    r   test_splitextzPosixPathTest.test_splitexth   s*   )UF333-F;;;,nfEEE)VU333(Hb111(Hb111-;;;+]FCCC#sB'''$b)))*j"555"b"%%%%%r   c                 &   |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d	          d           |                      t          j        d
          d           |                      t          j        d          d           |                      t          j        d          d           d S )Nr%   Fr9   Tr,   r8   zfoo/barr   r@   r1   r?   s   foo/bar)assertIsr4   isabsr!   s    r   
test_isabszPosixPathTest.test_isabsv   s4   iob))5111ioc**D111iof--t444ioj114888ioi00%888ioc**E222iod++T222iog..555iok22D999ioj11599999r   c                 &   |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d	           |                      t          j        d
          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d	           d S )Nr8   r-   r9   r%   r:   r;   r=   r?   r2   r@   r   rA   rB   rD   )r3   r4   r   r!   s    r   test_basenamezPosixPathTest.test_basename   sR   +J77???+C00"555+E22E:::+I66>>>+L995AAA+K88&AAA+D113777+F33V<<<+J77@@@+M::FCCCCCr   c                 &   |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d	           |                      t          j        d
          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           d S )Nr8   r,   r9   r:   r%   r;   r<   r=   r>   r?   r1   r@   rA   r   rB   rC   rD   rE   )r3   r4   r   r!   s    r   test_dirnamezPosixPathTest.test_dirname   sR   *:66???*3//555*5112666*955v>>>*<88'BBB*;77AAA*400$777*622C888*:66@@@*=998DDDDDr   c                 8   |                      t          j        t          j        dz             d           |                      t          j        t          j        dz             d           t          t          j        dz   d          5 }|                    d           d d d            n# 1 swxY w Y   |                      t          j        t          j        dz             d           t          j                    r$t          j
        t          j        dz   t          j        dz              |                      t          j        t          j        dz             d           t          j        t          j        dz              |                      t          j        t          j        dz             d           |                      t          j        t          j        dz             d           |                      t          j        t          j        dz             d           |                      t          j        t          j        dz             d           |                      t          j        t          j        t          j                  dz             d           |                      t          j        t          j        d	z             d           |                      t          j        t          j        t          j                  d
z             d           d S )Nr&   Fr'   wbrA   Tu           )rV   r4   islinkr	   r)   lexistsopenwritecan_symlinkr   symlinkremoveexistsfsencode)r"   fs     r   test_islinkzPosixPathTest.test_islink   s   i&y'7#'=>>FFFi'	(83(>??GGG)"S($// 	1GGFOOO	 	 	 	 	 	 	 	 	 	 	 	 	 	 	i&y'7#'=>>FFF "" 	KJy'#-y/?#/EFFFMM)*9+;c+ABBDIIIIi&,---MM)*9+;c+ABBDIIIMM)*9+;c+ABBEJJJMM)+I,<s,BCCTJJJi&y'7('BCCUKKKi&r{93C'D'Dw'NOOQVWWWi&y'7&'@AA5IIIi&r{93C'D'Dw'NOOQVWWWWWs   B**B.1B.c                 z   |                      t          j        d          d           |                      t          j        d          d           |                      t          j        t          d                    d           |                      t          j        t          d                    d           d S )Nr9   Tr@   )rV   r4   ismountr
   r!   s    r   test_ismountzPosixPathTest.test_ismount   s    i',,d333i'--t444i'66===i'77>>>>>r   c                    |                      t          j        t                    d           	 t	          j        t                     |                      t          j        t                    d           t          t                     n# t          t                     w xY w|                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           |                      t          j        d          d           d S )NFu   /s   /z/ s   / )rV   r4   rn   r   r   mkdirr   r!   s    r   test_ismount_non_existentz'PosixPathTest.test_ismount_non_existent   s    i'//777	HVMM)+F33U;;;vJvi'	22E:::i'115999i'00%888i'11599999s   AB
 
B c                    	 t          j        dt                     |                     t	          j        t                    d           t          j        t                     d S # t          j        t                     w xY w)Nr9   F)r   rg   r   rV   r4   rn   r(   r!   s    r   test_ismount_symlinksz#PosixPathTest.test_ismount_symlinks   sd    	JsF###MM)+F33U;;;IfBIfs   AA$ $A?NzTest requires posix modulec                     t           j        }d }	 |t           _        |                     t          j        t
                    d           |t           _        d S # |t           _        w xY w)Nc                 d    d}d}| t           k    rd}d}t          j        d||dddddddf
          S )Nr      )r   posixstat_resultrL   st_inost_devs      r   
fake_lstatz?PosixPathTest.test_ismount_different_device.<locals>.fake_lstat   sE    FFv~~$aAq!Q1%MNNNr   Tr   lstatrV   r4   rn   r   r"   
save_lstatr}   s      r   test_ismount_different_devicez+PosixPathTest.test_ismount_different_device   sf     X
	O 	O 	O	"!BHMM)+F33T:::!BHHHzBH!!!!   9A A&c                     t           j        }d }	 |t           _        |                     t          j        t
                    d           |t           _        d S # |t           _        w xY w)Nc                     d}d}|                      t                    r| t          k    rt          d          | t          k    rd}d}t          j        d||dddddddf
          S )Nr   z!Fake [Errno 13] Permission deniedrw   )
startswithr   r   rx   ry   rz   s      r   r}   zEPosixPathTest.test_ismount_directory_not_readable.<locals>.fake_lstat   ss    FFv&& C46>> ABBBv~~$aAq!Q1%MNNNr   Tr~   r   s      r   #test_ismount_directory_not_readablez1PosixPathTest.test_ismount_directory_not_readable   sf     X

	O 
	O 
	O	"!BHMM)+F33T:::!BHHHzBH!!!!r   c                     |                      t          j        d          d           |                      t          j        d          d           d S )Nr:   rA   )r3   r4   
expanduserr!   s    r   test_expanduserzPosixPathTest.test_expanduser   sJ    -e44e<<<-f55v>>>>>r   c                 t   t          j                    5 }d|d<   |                     t          j        d          d           d|d<   |                     t          j        d          d           dD ]}|                     |          5  ||d<   |                     t          j        d          d           |                     t          j        d          d           |                     t          j        d	          d
           d d d            n# 1 swxY w Y   	 d d d            d S # 1 swxY w Y   d S )Nz/home/victorHOME~z/home/victor/)r9   r%   /////)homer9   ~/z~/foor,   )r	   EnvironmentVarGuardr3   r4   r   subTest)r"   envr   s      r   test_expanduser_home_envvarz)PosixPathTest.test_expanduser_home_envvar   s   *,, 	L(CKY1#66GGG *CKY1#66GGG, L L\\t\,, L L"&CK$$Y%9#%>%>DDD$$Y%9$%?%?EEE$$Y%9'%B%BFKKK	L L L L L L L L L L L L L L LL	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls7   A5D-	A>DD-DD-DD--D14D1vxworkszno home directory on VxWorksc           	         t          j        d          }|                     t          j        d          t
                     |                     t          j        d          t                     t          j        d          dk    rz|                     t          j        d          dz   t          j        d                     |                     t          j        d          dz   t          j        d                     |                     t          j        d          t
                     |                     t          j        d	          t
                     |                     t          j        d
          t                     |                     t          j        d          t                     t          j	                    5 }|d= |
                    t          j                              j        }|                    d          pd}|                     t          j        d          |           t          j                            |dt$                    5  t          j                            |dt$                    5  dD ]*}|                     t          j        |          |           +	 d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Npwdr   s   ~/r   r9      ~r@   z~root/z~foo/s   ~root/s   ~foo/r   getpwuid)side_effectgetpwnam)r   z~/.localz
~vstinner/)r   import_moduleassertIsInstancer4   r   strrK   r3   r	   r   r   r   getuidpw_dirrstripr   patchobjectKeyError)r"   r   r   r   rL   s        r   test_expanduser_pwdz!PosixPathTest.test_expanduser_pwd  s    )%00i2488#>>>i25995AAA $$++$S))C/$T**   $T**T1$U++   	i28<<cBBBi27;;SAAAi29==uEEEi28<<eDDD*,, 	GF<<	,,3D;;s##*sDY1#66=== ""3
"II G G""3
"IIG G; G GD$$Y%9$%?%?FFFFGG G G G G G G G G G G G G G G G G G G G G G G G G G G G G G	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs[   BK/(K.K 4K KKKKK/K	K/K	K//K36K3)0)r%   rR   )r9   r9   )z/.r9   )z/./r9   )z/.//.r9   )r,   r,   )r8   r8   )r   r   )r   r9   )z///foo/.//bar//r8   )z///foo/.//bar//.//..//.//baz///z/foo/baz)z///..//./foo/.//barr8   )rR   rR   )z.//.rR   )rS   rS   )../rS   )../foor   )	../../foor   )z../foo/../barz../bar)z../../foo/../bar/./baz/boom/..../../bar/bazz/..r9   r   )z/../r9   )z/..//r9   )z//.r   )z//..r   )//...r   )z//../foor>   )z//../../foor>   )z/../foor,   )z
/../../foor,   )z/../foo/../r9   )z/../foo/../barr.   )z/../../foo/../bar/./baz/boom/..r0   )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)z/foo/..r9   )z
/foo/../..r9   )z//foo/..r   )z//foo/../..r   )z	///foo/..r9   )z///foo/../..r9   )z
////foo/..r9   )z/////foo/..r9   c                    | j         D ]\  }}|                     |          5  t          j        |          }|                     ||           d d d            n# 1 swxY w Y   |                    d          }|                    d          }|                     |t                    5  t          j        |          }|                     ||           d d d            n# 1 swxY w Y   d S )Nzutf-8)type)NORMPATH_CASESr   r4   normpathr3   encoderK   )r"   rL   expectedresults       r   test_normpathzPosixPathTest.test_normpathg  se   "1 		3 		3ND(d## 3 3"+D11  2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ;;w''Dw//Hd// 3 3"+D11  2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3		3 		3s#   +AA	 A	*+C!!C%	(C%	c                    |                      t          d          t          j                               |                      t          d          t          j                               |                      t          d                    dgdz                      t          j                               |                      t          d          t          j                               |                      t          d          t          j                               |                      t          d                    dgdz                      t          j                               d S )NrR   z./.r9   d      .s   ./.r@   )r3   r   r   getcwdr5   getcwdbr!   s    r   test_realpath_curdirz"PosixPathTest.test_realpath_curdirs  s    #	444%")++666#((C53;"7"788")++FFF$666&))2:<<888$))TFSL"9"9::BJLLIIIIIr   c           	      *   |                      t          d          t          t          j                                         |                      t          d          t          t          t          j                                                   |                      t          d                    dgdz                      d           |                      t          d          t          t          j                                         |                      t          d          t          t          t          j                                                   |                      t          d                    dgdz                      d           d S )NrS   z../..r9   r   s   ..s   ../..r@   )r3   r   r   r   r   r5   r   r!   s    r   test_realpath_pardirz"PosixPathTest.test_realpath_pardir}  s$   $)=)=>>>'**GGBIKK4H4H,I,IJJJ#((D6C<"8"8993???%'"*,,*?*?@@@(++WWRZ\\5J5J-K-KLLL$))UGcM":":;;TBBBBBr   c                    	 t          j        t          dz   t                     |                     t	          t                    t          dz              t          j        t                     d S # t          j        t                     w xY wNr&   )r   rg   r   r3   r   r	   r(   r!   s    r   test_realpath_basicz!PosixPathTest.test_realpath_basic  sm    	%Jvcz6***Xf--vcz:::V$$$$$IV$$$$s   AA/ /B
c                 `   	 t          j        t          dz   t                     |                     t          t
          t          d           |                     t          t
          t          dz   d           t          j        t                     d S # t          j        t                     w xY w)Nr&   Tstrictr'   )r   rg   r   assertRaisesFileNotFoundErrorr   r	   r(   r!   s    r   test_realpath_strictz"PosixPathTest.test_realpath_strict  s    
	%Jvcz6***/6$OOO/6C<PTUUUV$$$$$IV$$$$s   A5B B-c                 >   	 t          j        t          j        t          dz             t                     |                     t          t                    t          dz              t          j        t                     d S # t          j        t                     w xY wr   )	r   rg   r4   relpathr   r3   r   r	   r(   r!   s    r   test_realpath_relativez$PosixPathTest.test_realpath_relative  sx    	%Jy(44f===Xf--vcz:::V$$$$$IV$$$$s   A$B Bc                 H
   	 t          j        t          t                     |                     t	          t                    t                     t          j        t          dz   t          dz              t          j        t          dz   t          dz              |                     t	          t          dz             t          dz              |                     t	          t          dz             t          dz              |                     t	          t          dz             t          dz              |                     t	          t          dz             t          t                               |                     t	          t          dz             t          t                    dz              t          j        t          dz   t          dz              |                     t	          t          d	z   t          t                    z   dz             t          dz              |                     t	          t          d	z   t          t                    z   dz             t          dz              t          j        t          t                    d
z   t          dz              |                     t	          t          dz             t          d
z              t          j        dt          t          t                              z   dz   t          t                    z   dz   t          dz              |                     t	          t          dz             t          dz              t          j        t          t                              5  |                     t	          t          t                              t                     d d d            n# 1 swxY w Y   t          j	        t                     t          j	        t          dz              t          j	        t          dz              t          j	        t          dz              t          j	        t          dz              t          j	        t          dz              d S # t          j	        t                     t          j	        t          dz              t          j	        t          dz              t          j	        t          dz              t          j	        t          dz              t          j	        t          dz              w xY w)Nr&   r'   1/x1/..1/../x/xxy1/../a/bar   r9   c)
r   rg   r   r3   r   r   r   r	   
change_cwdr(   r!   s    r   test_realpath_symlink_loopsz)PosixPathTest.test_realpath_symlink_loops  s2   
"	)Jvv&&&Xf--v666Jvcz6#:...Jvcz6#:...XfSj116#:>>>XfSj116#:>>>XfUl33VE\BBBXfVm44gfooFFFXfXo66$8NOOOJvcz6#:...XfWnx7G7G&G#&MNN#c\+ + +XfWnx7G7G&G#&MNN#c\+ + + Jx''%/<<<XfSj116%<@@@Jux8883>''(*-./5cz; ; ;XfSj116#:>>> %gfoo66 E E  (6*:*:!;!;VDDDE E E E E E E E E E E E E E E V$$$VCZ(((VCZ(((VCZ(((VCZ(((VCZ((((( V$$$VCZ(((VCZ(((VCZ(((VCZ(((VCZ((((s1   M?Q: ;O<Q: OQ: OQ: :B'T!c                 v	   	 t          j        t          t                     |                     t          t
          t          d           t          j        t          dz   t          dz              t          j        t          dz   t          dz              |                     t          t
          t          dz   d           |                     t          t
          t          dz   d           |                     t          t
          t          dz   d           |                     t          t
          t          dz   d           |                     t          t
          t          dz   d           t          j        t          dz   t          d	z              |                     t          t
          t          d
z   t          t                    z   d	z   d           |                     t          t
          t          d
z   t          t                    z   dz   d           t          j        t          t                    dz   t          dz              |                     t          t
          t          dz   d           t          j        dt          t          t                              z   dz   t          t                    z   dz   t          dz              |                     t          t
          t          dz   d           t          j	        t          t                              5  |                     t          t
          t          t                    d           d d d            n# 1 swxY w Y   t          j
        t                     t          j
        t          dz              t          j
        t          dz              t          j
        t          d	z              t          j
        t          dz              t          j
        t          dz              d S # t          j
        t                     t          j
        t          dz              t          j
        t          dz              t          j
        t          d	z              t          j
        t          dz              t          j
        t          dz              w xY w)NTr   r&   r'   r   r   r   r   r   r   r   r   r   r9   r   )r   rg   r   r   r   r   r   r   r	   r   r(   r!   s    r   "test_realpath_symlink_loops_strictz0PosixPathTest.test_realpath_symlink_loops_strict  s   
"	)Jvv&&&gxEEEJvcz6#:...Jvcz6#:...gxDIIIgxDIIIgxdKKKgxtLLLgxNNNJvcz6#:...gx$Wnx/?/??#Ed  T T Tgx$Wnx/?/??#Ed  T T T Jx''%/<<<gxDIIIJux8883>''(*-./5cz; ; ;gxDIII %gfoo66 T T!!'8Xf5E5Ed!SSST T T T T T T T T T T T T T T V$$$VCZ(((VCZ(((VCZ(((VCZ(((VCZ((((( V$$$VCZ(((VCZ(((VCZ(((VCZ(((VCZ((((s1   LP 6MP M##P &M#'P B'R8c                 r   	 t          j        t                     t          j        dt	          t                    z   t          dz              t          j        dt          dz              |                     t          t          dz             t                     t          j        t          dz              t          j        t          dz              t          t                     d S # t          j        t          dz              t          j        t          dz              t          t                     w xY w)Nr   z/selfzself/self/selfz/link)
r   rq   r   rg   r   r3   r   r	   r(   r   r!   s    r   (test_realpath_repeated_indirect_symlinksz6PosixPathTest.test_realpath_repeated_indirect_symlinks  s    	HVJux///'1ABBBJ'')9:::Xfw&677@@@Vg-...Vg-...v Vg-...Vg-...vs   BC( (AD6c                 ^   d}	 t          j        t                     t          |          D ]?}t          j        d                    d|z  gdz            t          d|dz   z  z              @t          j        dt          dz              |                     t          t          d|z  z             t                     t          j	        t                    5  |                     t          d|z            t                     d d d            n# 1 swxY w Y   t          |dz             D ]!}t          j
        t          d|z  z              "t          t                     d S # t          |dz             D ]!}t          j
        t          d|z  z              "t          t                     w xY w)N
   r9   z%dz/%drw   rR   z/0)r   rq   r   rangerg   r5   r3   r   r	   r   r(   r   )r"   depthis      r   test_realpath_deep_recursionz*PosixPathTest.test_realpath_deep_recursion  s    	HV5\\ P P
388TAXJO44fuA6NOOOOJsFTM***Xfuu}&<==vFFF %f-- A A  $,!7!7@@@A A A A A A A A A A A A A A A 519%% 5 5 %!)!34444v 519%% 5 5 %!)!34444vs1   CE" ,DE" DE" DE" "A
F,c                    	 t          j        t                     t          j        t          dz              t          j        t          dz   t          dz              t	          j        t          dz             5  |                     t          d          t          dz              d d d            n# 1 swxY w Y   t	          j        t          dz              t          t          dz              t          t                     d S # t	          j        t          dz              t          t          dz              t          t                     w xY w)Nz/y/kr   z/y/a)
r   rq   r   rg   r	   r   r3   r   r(   r   r!   s    r   test_realpath_resolve_parentsz+PosixPathTest.test_realpath_resolve_parents  s[   
	HVHVd]###Jv}ftm444%ftm44 A A  #@@@A A A A A A A A A A A A A A A Vd]+++v}%%%v Vd]+++v}%%%vs1   A6D 8,B0$D 0B44D 7B48D A	Ec                    	 t          j        t                     t          j        t          dz              t          j        t          dz              t          j        t          dz   t          dz              |                     t          t          dz             t          dz              t          j        t          t                              5  |                     t          t          t                    dz             t          dz              d d d            n# 1 swxY w Y   t          j
        t          dz              t          t          dz              t          t          dz              t          t                     d S # t          j
        t          dz              t          t          dz              t          t          dz              t          t                     w xY w)Nr   z/k/yz/link-yz
/link-y/..)r   rq   r   rg   r3   r   r	   r   r   r   r(   r   r!   s    r   (test_realpath_resolve_before_normalizingz6PosixPathTest.test_realpath_resolve_before_normalizing,  s   	HVHVd]###HVf_%%%Jv(:;;; Xf|&;<<ftmLLL%gfoo66 0 0  (6*:*:\*I!J!J!'$0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Vi/000v'''v}%%%v Vi/000v'''v}%%%vs2   CF	 ADF	 D""F	 %D"&F	 	A G)c                 2   	 t          j        t                     t          j        t          dz              t          j        t          t          dz              t	          j        t          t                              5  t          t                    }|                     t          |dz             t                     |                     t          |dz             t          dz              d d d            n# 1 swxY w Y   t	          j
        t          dz              t          t          dz              t          t                     d S # t	          j
        t          dz              t          t          dz              t          t                     w xY w)Nr   linkzlink/k)r   rq   r   rg   r	   r   r   r   r3   r   r(   r   )r"   bases     r   test_realpath_resolve_firstz)PosixPathTest.test_realpath_resolve_firstH  s   	HVHVd]###Jvv///%gfoo66 K K''  $-!8!8&AAA  $/!:!:FTMJJJK K K K K K K K K K K K K K K
 Vf_---v}%%%v Vf_---v}%%%vs2   A=E ?A.C9-E 9C==E  C=E A	Fc                    t           j        d c}t           _        	 t           j                            t          j                              d         }|                     t
          t          j        d           |                     t          j        d          d           |                     t          j        t          j	        d                    d           |                     t          j        d          d           |                     t          j        d          d           |                     t          j        dd          d|z   d	z              |                     t          j        dd
          d|z   dz              |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        d	d	          d           |                     t          j        dd          d           |t           _        d S # |t           _        w xY w)Nc                      dS )Nz/home/user/bar r   r   r   <lambda>z,PosixPathTest.test_relpath.<locals>.<lambda>\  s    7H r   r%   r   r   z../a/bz../br   z/az../cz/a/bzb/cz../../arR   z/foo/bar/batz/x/y/zz../../../foo/bar/batr8   batr9   zfoo/bar/batz../../..r   z../foo/bar/batz
../../../x)
r   r   rL   rF   r   
ValueErrorr4   r   r3   r   )r"   real_getcwdcurdirs      r   test_relpathzPosixPathTest.test_relpath[  s   $&I/H/H bi	$W]]29;;//3Fj)*;R@@@Y.s33S999Y.y/@/E/EFFLLLY.u55u===Y.x88(CCCY.sF;;U6\$=NOOOY.uf=="6\&02 2 2Y.sE::IFFFY.sC88#>>>Y.~xHHJ`aaaY.~zJJERRRY.~sCC]SSSY.sNCCZPPPY.~tDDFVWWWY.t^DDlSSSY.sC88#>>>Y.tT::C@@@Y.vv>>DDD#BIIIBI####s   L/M M'c                 p   t           j        d c}t           _        	 t           j                            t          j                              d         }|                     t
          t          j        d           |                     t          j        d          d           |                     t          j        t          j	        d                    d           |                     t          j        d          d           |                     t          j        d          d           |                     t          j        dd          d|z   d	z              |                     t          j        dd
          d|z   dz              |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        dd          d           |                     t          j        d	d	          d           |                     t          j        dd          d           |                     t          t          j        dd           |                     t          t          j        dd           |t           _        d S # |t           _        w xY w)Nc                      dS )Ns   /home/user/barr   r   r   r   r   z2PosixPathTest.test_relpath_bytes.<locals>.<lambda>v  s    :L r   r   r      as   a/bs   ../a/bs   ../bs   ../s   /as   ../cs   /a/bs   b/cs   ../../ar   s   /foo/bar/bats   /x/y/zs   ../../../foo/bar/batr?   s   batr@   s   foo/bar/bats   ../../..s   /xs   ../foo/bar/bats
   ../../../xs   bytesr   )r   r   rL   rF   r   r   r4   r   r3   r   	TypeError)r"   real_getcwdbr   s      r   test_relpath_bytesz PosixPathTest.test_relpath_bytesu  s$   &(j2L2L"rz	&W]]2:<<004Fj)*;SAAAY.t44d;;;Y.y/@/F/FGGNNNY.v66???Y.y999EEEY.tW==#F]502 2 2Y.vw??#F]724 4 4Y.tV<<jIIIY.tT::DAAAY.	JJLcdddY.LLfUUUY.EE~VVVY.t_EE{SSSY.FFHYZZZY.uoFFVVVY.tT::DAAAY.ue<<dCCCY.w@@$GGGi):HeLLLi):E8LLL%BJJJBJ%%%%s   M=N' 'N5c                      fd} fd}                      t          t          j        g             |t          ddg            |t          ddg            |dgd            |ddgd            |ddgd            |ddgd            |ddgd            |d	d
gd            |ddgd            |ddgd            |ddgd            |ddgd            |ddgd            |ddgd            |dgd            |ddgd            |ddgd            |ddgd            |ddgd            |ddgd            |g dd            |g dd            |dgd            |ddgd            |t          ddg                                 t          t          j        d dg                                 t          t          j        d d!g                                 t          t          j        d"dg                                 t          t          j        dd#g                                 t          t          j        dd$g                                 t          t          j        d%d#g           d S )&Nc                                          t          j        |           |                                t          j        d | D                       t          j        |                     d S )Nc                 6    g | ]}t          j        |          S r   r   rj   .0ps     r   
<listcomp>z@PosixPathTest.test_commonpath.<locals>.check.<locals>.<listcomp>  s     2Q2Q2Qa2;q>>2Q2Q2Qr   )r3   r4   
commonpathr   rj   )pathsr   r"   s     r   checkz,PosixPathTest.test_commonpath.<locals>.check  so    Y1%88(CCCY12Q2Q52Q2Q2QRR[224 4 4 4 4r   c                                          | t          j        |                                | t          j        d |D                        d S )Nc                 6    g | ]}t          j        |          S r   r   r   s     r   r   zFPosixPathTest.test_commonpath.<locals>.check_error.<locals>.<listcomp>  s     ===!r{1~~===r   )r   r4   r  )excr  r"   s     r   check_errorz2PosixPathTest.test_commonpath.<locals>.check_error  sX    c9#7???c9#7==u===? ? ? ? ?r   z/usrusrz
/usr/localz/usr/local/z/usr//localz//usr/localz/usr/./localz/./usr/localr9   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   r4   r  r   )r"   r  r  s   `  r   test_commonpathzPosixPathTest.test_commonpath  s   	4 	4 	4 	4 	4	? 	? 	? 	? 	?
 	*i&:B???J000J000|nl+++|\*L999}l+\:::}m,l;;;}m,l;;;~~.===sFmS!!!vv$$${./<<<{M*F333z<(&111{L)6222vhvv'''vv###y*%u---z<(%000{L)5111---r222,,,e444rdBr;$$$J\ 2333)Y%9');<	> 	> 	>)Y%9'):;	= 	= 	=)Y%9&(:;	= 	= 	=)Y%9&(;<	> 	> 	>)Y%9&(:;	= 	= 	=)Y%9%':;	= 	= 	= 	= 	=r   ).__name__
__module____qualname__r#   r    r6   rG   rO   rT   rX   rZ   r\   rl   ro   rr   r	   skip_unless_symlinkrt   r   skipIfrx   r   r   r   r   sysplatformr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r   r   r   r   r   '   s         2 2 2
+ + +M M M7 7 78& & &: : :D D DE E EX X X*? ? ?: : : "  #" X_Ud]$@AA" " BA"" X_Ud]$@AA" " BA"*? ? ?L L L  X_S\Y.35 5%G %G5 5%GN1 1 1Nf
3 
3 
3 'J J '&J 'C C '&C "&% % '& #"% "&% % '& #"% "&% % '& #"% "&%) %) '& #"%)N "&%) %) '& #"%)N "&
 
 '& #"
 "&  '& #"" "&  '& #"" "&  '& #"4 "&  '& #""$ $ $4& & &<4= 4= 4= 4= 4=r   r   c                       e Zd ZeZg dZdS )PosixCommonTest)r   samefilesameopenfilesamestatN)r  r  r  r4   
pathmodule
attributesr   r   r   r  r    s        JDDDJJJr   r  c                       e Zd ZeZd Zd Zd Zd Zd Z	d Z
d Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )PathLikeTestsc                 6   t           j        | _        t          t           j                  | _        |                     t           j        | j                   t          | j        dd          5 }|                    d           d d d            d S # 1 swxY w Y   d S )Nxbr   s   test_posixpath.PathLikeTests)	r	   r)   	file_namer
   	file_path
addCleanupr(   rd   re   )r"   files     r   r#   zPathLikeTests.setUp  s    ")!)"233	($.999$.$** 	8dJJ6777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8s   +BBBc                 j    |                       || j                   || j                             d S r   )r3   r"  r!  )r"   funcs     r   assertPathEqualzPathLikeTests.assertPathEqual  s6    dn--ttDN/C/CDDDDDr   c                 D    |                      | j        j                   d S r   )r'  rL   normcaser!   s    r   test_path_normcasez PathLikeTests.test_path_normcase  !    TY/00000r   c                 D    |                      | j        j                   d S r   )r'  rL   rW   r!   s    r   test_path_isabszPathLikeTests.test_path_isabs       TY_-----r   c                     |                      | j                            dt          d          d          | j                            ddd                     d S )Nr   br   )r3   rL   r5   r
   r!   s    r   test_path_joinzPathLikeTests.test_path_join  sS    Xc]]C@@S#66	8 	8 	8 	8 	8r   c                 D    |                      | j        j                   d S r   )r'  rL   rF   r!   s    r   test_path_splitzPathLikeTests.test_path_split  r.  r   c                 D    |                      | j        j                   d S r   )r'  rL   rJ   r!   s    r   test_path_splitextz PathLikeTests.test_path_splitext  r+  r   c                 D    |                      | j        j                   d S r   )r'  rL   
splitdriver!   s    r   test_path_splitdrivez"PathLikeTests.test_path_splitdrive  !    TY122222r   c                 D    |                      | j        j                   d S r   )r'  rL   r   r!   s    r   test_path_basenamez PathLikeTests.test_path_basename  r+  r   c                 D    |                      | j        j                   d S r   )r'  rL   r   r!   s    r   test_path_dirnamezPathLikeTests.test_path_dirname  !    TY./////r   c                 D    |                      | j        j                   d S r   )r'  rL   rb   r!   s    r   test_path_islinkzPathLikeTests.test_path_islink  s!    TY-.....r   c                 D    |                      | j        j                   d S r   )r'  rL   rc   r!   s    r   test_path_lexistszPathLikeTests.test_path_lexists  r>  r   c                 D    |                      | j        j                   d S r   )r'  rL   rn   r!   s    r   test_path_ismountzPathLikeTests.test_path_ismount  r>  r   c                 D    |                      | j        j                   d S r   )r'  rL   r   r!   s    r   test_path_expanduserz"PathLikeTests.test_path_expanduser  r9  r   c                 D    |                      | j        j                   d S r   )r'  rL   
expandvarsr!   s    r   test_path_expandvarsz"PathLikeTests.test_path_expandvars  r9  r   c                 D    |                      | j        j                   d S r   )r'  rL   r   r!   s    r   test_path_normpathz PathLikeTests.test_path_normpath  r+  r   c                 D    |                      | j        j                   d S r   )r'  rL   r   r!   s    r   test_path_abspathzPathLikeTests.test_path_abspath  r>  r   c                 D    |                      | j        j                   d S r   )r'  rL   r   r!   s    r   test_path_realpathz PathLikeTests.test_path_realpath  r+  r   c                 D    |                      | j        j                   d S r   )r'  rL   r   r!   s    r   test_path_relpathzPathLikeTests.test_path_relpath  r>  r   c                     | j                             | j        | j        g          }|                     || j                   d S r   )rL   r  r"  r!  r3   )r"   common_paths     r   test_path_commonpathz"PathLikeTests.test_path_commonpath  s>    i**DNDN+KLLdn55555r   N)r  r  r  r4   rL   r#   r'  r*  r-  r1  r3  r5  r8  r;  r=  r@  rB  rD  rF  rI  rK  rM  rO  rQ  rT  r   r   r   r  r    sH       D8 8 8E E E1 1 1. . .8 8 8. . .1 1 13 3 31 1 10 0 0/ / /0 0 00 0 03 3 33 3 31 1 10 0 01 1 10 0 06 6 6 6 6r   r  __main__)r   r4   r  r   r   r   r   r   r   r   test.supportr   r	   test.support.os_helperr
   r   rx   ImportErrorr)   r   r   r   TestCaser   
CommonTestr  r  r  mainr   r   r   <module>r\     s   				     



  : : : : : : : : : : : : ! ! ! ! ! ! & & & & & & " " " " " " + + + + + +      LLLL   EEE 
!	"	"= = =  `
= `
= `
= `
= `
=H% `
= `
= `
=FE E E E E&183D E E E
D6 D6 D6 D6 D6H% D6 D6 D6N ZHMOOOOO s   A A
A