a
    äze¶t  ã                   @   sä   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m	Z	 d dl
mZ d dlmZ zd dlZW n eyz   dZY n0 eejƒZdd„ Zdd	„ ZG d
d„ dejƒZG dd„ de	jejƒZG dd„ dejƒZedkràe ¡  dS )é    N)ÚrealpathÚabspathÚdirnameÚbasename)ÚsupportÚtest_genericpath)ÚFakePath)Úmockc                 C   s"   dt v }d}| t |¡| ƒ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)ÚtestZfound_backslashÚmsg© r   ú)/usr/lib/python3.9/test/test_posixpath.pyÚ!skip_if_ABSTFN_contains_backslash   s    r   c                 C   s&   zt  | ¡ W n ty    Y n0 d S ©N)ÚosÚrmdirÚOSError)r   r   r   r   Ú
safe_rmdir   s    r   c                   @   sô  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Ze e ¡ d¡dd„ ƒZe edu d¡dd„ ƒZe edu d¡d d!„ ƒZd"d#„ Zd$d%„ Zd&d'„ Zd(d)„ Zed*d+„ ƒZed,d-„ ƒZe ee d.ƒd/¡ed0d1„ ƒƒZ!e ee d.ƒd/¡ed2d3„ ƒƒZ"e ee d.ƒd/¡ed4d5„ ƒƒZ#e ee d.ƒd/¡ed6d7„ ƒƒZ$e ee d.ƒd/¡ed8d9„ ƒƒZ%e ee d.ƒd/¡ed:d;„ ƒƒZ&e ee d.ƒd/¡ed<d=„ ƒƒZ'e ee d.ƒd/¡ed>d?„ ƒƒZ(d@dA„ Z)dBdC„ Z*dDdE„ Z+dS )FÚPosixPathTestc                 C   s   |   ¡  d S r   )ÚtearDown©Úselfr   r   r   ÚsetUp&   s    zPosixPathTest.setUpc                 C   s,   dD ]"}t  t j| ¡ tt j| ƒ qd S )N)Ú Ú1Ú2)r   ÚunlinkÚTESTFNr   )r   Úsuffixr   r   r   r   )   s    zPosixPathTest.tearDownc                 C   sŒ   |   t dddd¡d¡ |   t ddd¡d¡ |   t ddd	¡d
¡ |   t dddd¡d¡ |   t ddd¡d¡ |   t ddd¡d¡ d S )Nú/fooÚbarz/barZbazz/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   r   r   r   Ú	test_join.   s     ÿÿÿÿÿzPosixPathTest.test_joinc                 C   s¸   |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d	¡d
¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ d S )Nú/foo/bar)r#   r$   ú/)r,   r   Úfoo)r   r-   ú////foo)ú////r-   ú
//foo//bar)ú//foor$   ó   /foo/bar)r%   r&   ó   /)r3   ó    ó   foo)r4   r5   ó   ////foo)ó   ////r5   ó
   //foo//bar)ó   //foor&   )r'   r(   Úsplitr   r   r   r   Ú
test_split<   s    zPosixPathTest.test_splitc                 C   s‚  |   t |¡||f¡ |   t d| ¡d| |f¡ |   t d| ¡d| |f¡ |   t d| ¡d| |f¡ |   t d| ¡d| |f¡ |   t |d ¡|| d df¡ t|dƒ}t|dƒ}t|dƒ}|   t |¡||f¡ |   t d| ¡d| |f¡ |   t d| ¡d| |f¡ |   t d	| ¡d	| |f¡ |   t d
| ¡d
| |f¡ |   t |d ¡|| d df¡ d S )Nr,   zabc/zabc.def/z	/abc.def/r   ÚASCIIr3   s   abc/s   abc.def/s	   /abc.def/r4   )r'   r(   ÚsplitextÚbytes)r   ÚpathÚfilenameÚextr   r   r   ÚsplitextTestI   sB    
ÿ
ÿ
ÿÿ



ÿ
ÿ
ÿ
ÿÿzPosixPathTest.splitextTestc                 C   s¬   |   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.rcZnodotsr   z.cshrcz...manydotsz...manydots.extz.extÚ.ú..z........)rB   r   r   r   r   Útest_splitexte   s    zPosixPathTest.test_splitextc                 C   s¸   |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d	¡d¡ |   t d
¡d¡ |   t d¡d¡ |   t d¡d¡ d S )Nr   Fr,   Tr#   r+   zfoo/barr4   r3   r%   r2   s   foo/bar)ÚassertIsr(   Úisabsr   r   r   r   Ú
test_isabss   s    zPosixPathTest.test_isabsc                 C   s¸   |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d	¡ |   t d
¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d	¡ d S )Nr+   r$   r,   r   r-   r.   r0   r2   r&   r3   r4   r5   r6   r8   )r'   r(   r   r   r   r   r   Útest_basename€   s    zPosixPathTest.test_basenamec                 C   s¸   |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d	¡ |   t d
¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ d S )Nr+   r#   r,   r-   r   r.   r/   r0   r1   r2   r%   r3   r5   r4   r6   r7   r8   r9   )r'   r(   r   r   r   r   r   Útest_dirname   s    zPosixPathTest.test_dirnamec                 C   s„  |   t tjd ¡d¡ |   t tjd ¡d¡ ttjd dƒ}| d¡ W d   ƒ n1 s`0    Y  |   t tjd ¡d¡ t ¡ rt	 
tjd tjd ¡ |   t tjd ¡d¡ t	 tjd ¡ |   t tjd ¡d¡ |   t tjd ¡d¡ |   t tjd ¡d¡ |   t tjd ¡d¡ |   t t	 tj¡d ¡d¡ |   t tjd	 ¡d¡ |   t t	 tj¡d
 ¡d¡ d S )Nr   Fr   Úwbr5   Tu   í¿¿ó   ÿú ó    )rF   r(   Úislinkr   r!   ÚlexistsÚopenÚwriteÚcan_symlinkr   ÚsymlinkÚremoveÚexistsÚfsencode)r   Úfr   r   r   Útest_islinkš   s     (
zPosixPathTest.test_islinkc                 C   s(   |   t d¡d¡ |   t d¡d¡ d S )Nr,   Tr3   )rF   r(   Úismountr   r   r   r   Útest_ismount¯   s    zPosixPathTest.test_ismountc                 C   s’   |   t t¡d¡ z(t t¡ |   t t¡d¡ W ttƒ n
ttƒ 0 |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ d S )NFu   /í¿¿s   /ÿz/ s   / )rF   r(   rZ   r   r   Úmkdirr   r   r   r   r   Útest_ismount_non_existent³   s    
z'PosixPathTest.test_ismount_non_existentzTest requires symlink supportc              	   C   s>   z,t  dt¡ |  t t¡d¡ W t  t¡ nt  t¡ 0 d S )Nr,   F)r   rT   r   rF   r(   rZ   r    r   r   r   r   Útest_ismount_symlinksÁ   s    z#PosixPathTest.test_ismount_symlinksNzTest requires posix modulec                 C   s>   t j}dd„ }z"|t _|  t t¡d¡ W |t _n|t _0 d S )Nc                 S   s6   d}d}| t krd}d}t d||dddddddf
¡S )Nr   é   )r   ÚposixÚstat_result©r?   Úst_inoÚst_devr   r   r   Ú
fake_lstatÐ   s    z?PosixPathTest.test_ismount_different_device.<locals>.fake_lstatT©r   ÚlstatrF   r(   rZ   r   ©r   Z
save_lstatre   r   r   r   Útest_ismount_different_deviceË   s    z+PosixPathTest.test_ismount_different_devicec                 C   s>   t j}dd„ }z"|t _|  t t¡d¡ W |t _n|t _0 d S )Nc                 S   sP   d}d}|   t¡r"| tkr"tdƒ‚| tkr2d}d}t d||dddddddf
¡S )Nr   z!Fake [Errno 13] Permission deniedr_   )Ú
startswithr   r   r`   ra   rb   r   r   r   re   â   s    zEPosixPathTest.test_ismount_directory_not_readable.<locals>.fake_lstatTrf   rh   r   r   r   Ú#test_ismount_directory_not_readableÝ   s    z1PosixPathTest.test_ismount_directory_not_readablec                 C   s(   |   t d¡d¡ |   t d¡d¡ d S )Nr-   r5   )r'   r(   Ú
expanduserr   r   r   r   Útest_expanduseró   s    zPosixPathTest.test_expanduserc              
   C   sÔ   t  ¡ ¸}d|d< |  t d¡d¡ d|d< |  t d¡d¡ dD ]n}| j|dN ||d< |  t d¡d¡ |  t d¡d¡ |  t d	¡d
¡ W d   ƒ qB1 s¦0    Y  qBW d   ƒ n1 sÆ0    Y  d S )Nz/home/victorÚHOMEú~z/home/victor/)r,   r   ú//ú///)Úhomer,   ú~/z~/foor#   )r   ÚEnvironmentVarGuardr'   r(   rl   ZsubTest)r   Úenvrr   r   r   r   Útest_expanduser_home_envvar÷   s    
z)PosixPathTest.test_expanduser_home_envvarc              
   C   s¦  t  d¡}|  t d¡t¡ |  t d¡t¡ t d¡dkrt|  t d¡d t d¡¡ |  t d¡d t d¡¡ |  t d¡t¡ |  t d	¡t¡ |  t d
¡t¡ |  t d¡t¡ t  ¡ Ì}|d= | 	t
 ¡ ¡j}| d¡pèd}|  t d¡|¡ tjj|dtdb tjj|dtd. dD ]}|  t |¡|¡ q(W d   ƒ n1 sX0    Y  W d   ƒ n1 sx0    Y  W d   ƒ n1 s˜0    Y  d S )NÚpwdrs   s   ~/ro   r,   ó   ~r3   z~root/z~foo/s   ~root/s   ~foo/rn   Úgetpwuid)Zside_effectÚgetpwnam)ro   z~/.localz
~vstinner/)r   Úimport_moduleZassertIsInstancer(   rl   Ústrr>   r'   rt   ry   r   ÚgetuidÚpw_dirÚrstripr	   ZpatchÚobjectÚKeyError)r   rw   ru   rr   r?   r   r   r   Útest_expanduser_pwd  s4    
þþ
ÿz!PosixPathTest.test_expanduser_pwdc                 C   s   |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d	¡ |   t d
¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ d S )Nr   rC   r,   rp   rq   z///foo/.//bar//r+   z///foo/.//bar//.//..//.//bazz/foo/bazz///..//./foo/.//barr4   ó   .r3   s   //s   ///s   ///foo/.//bar//r2   s   ///foo/.//bar//.//..//.//bazs   /foo/bazs   ///..//./foo/.//bar)r'   r(   Únormpathr   r   r   r   Útest_normpath.  s(    ÿÿÿzPosixPathTest.test_normpathc                 C   s”   |   tdƒt ¡ ¡ |   tdƒt ¡ ¡ |   td dgd ¡ƒt ¡ ¡ |   tdƒt ¡ ¡ |   tdƒt ¡ ¡ |   td dgd ¡ƒt ¡ ¡ d S )NrC   z./.r,   éd   rƒ   s   ./.r3   )r'   r   r   Úgetcwdr)   Úgetcwdbr   r   r   r   Útest_realpath_curdirB  s     z"PosixPathTest.test_realpath_curdirc                 C   s¤   |   tdƒtt ¡ ƒ¡ |   tdƒttt ¡ ƒƒ¡ |   td dgd ¡ƒd¡ |   tdƒtt ¡ ƒ¡ |   tdƒttt ¡ ƒƒ¡ |   td dgd ¡ƒd¡ d S )NrD   z../..r,   r†   s   ..s   ../..r3   )r'   r   r   r   r‡   r)   rˆ   r   r   r   r   Útest_realpath_pardirL  s    z"PosixPathTest.test_realpath_pardirrT   zMissing symlink implementationc              	   C   sD   z2t  td t¡ |  ttƒtd ¡ W t t¡ nt t¡ 0 d S ©Nr   )r   rT   r   r'   r   r   r    r   r   r   r   Útest_realpath_basicV  s    z!PosixPathTest.test_realpath_basicc              	   C   sJ   z8t  t td ¡t¡ |  ttƒtd ¡ W t t¡ nt t¡ 0 d S r‹   )	r   rT   r(   Úrelpathr   r'   r   r   r    r   r   r   r   Útest_realpath_relativea  s    z$PosixPathTest.test_realpath_relativec              
   C   s‚  z(t  tt¡ |  ttƒt¡ t  td td ¡ t  td td ¡ |  ttd ƒtd ¡ |  ttd ƒtd ¡ |  ttd ƒtd ¡ |  ttd ƒttƒ¡ |  ttd ƒttƒd ¡ t  td td ¡ |  ttd	 ttƒ d ƒtd ¡ |  ttd	 ttƒ d ƒtd ¡ t  ttƒd
 td ¡ |  ttd ƒtd
 ¡ t  dtttƒƒ d ttƒ d td ¡ |  ttd ƒtd ¡ t ttƒ¡$ |  tttƒƒt¡ W d   ƒ n1 sÎ0    Y  W t 	t¡ t 	td ¡ t 	td ¡ t 	td ¡ t 	td ¡ t 	td ¡ nRt 	t¡ t 	td ¡ t 	td ¡ t 	td ¡ t 	td ¡ t 	td ¡ 0 d S )Nr   r   z1/xz1/..z1/../xú/xÚxÚyz1/../úa/bÚaú../r,   Úc)
r   rT   r   r'   r   r   r   r   Ú
change_cwdr    r   r   r   r   Útest_realpath_symlink_loopsk  sR    ÿÿÿÿÿ6
û
z)PosixPathTest.test_realpath_symlink_loopsc              
   C   sš   znt  t¡ t  dttƒ td ¡ t  dtd ¡ |  ttd ƒt¡ W t td ¡ t td ¡ t	tƒ n&t td ¡ t td ¡ t	tƒ 0 d S )Nr”   z/selfzself/self/selfz/link)
r   r\   r   rT   r   r'   r   r   r    r   r   r   r   r   Ú(test_realpath_repeated_indirect_symlinks•  s    

þz6PosixPathTest.test_realpath_repeated_indirect_symlinksc                 C   s  d}zÖt  t¡ t|ƒD ],}t  d d| gd ¡td|d   ¡ qt  dtd ¡ |  ttd|  ƒt¡ t 	t¡$ |  td| ƒt¡ W d   ƒ n1 s¢0    Y  W t|d ƒD ]}t 
td|  ¡ qºttƒ n.t|d ƒD ]}t 
td|  ¡ qèttƒ 0 d S )Né
   r,   z%dz/%dr_   rC   z/0)r   r\   r   ÚrangerT   r)   r'   r   r   r–   r    r   )r   ÚdepthÚir   r   r   Útest_realpath_deep_recursion¤  s    
*4
þz*PosixPathTest.test_realpath_deep_recursionc              
   C   s¾   z”t  t¡ t  td ¡ t  td td ¡ t td ¡$ |  tdƒtd ¡ W d   ƒ n1 sf0    Y  W t td ¡ t	td ƒ t	tƒ n$t td ¡ t	td ƒ t	tƒ 0 d S )Nz/yú/kr“   z/y/a)
r   r\   r   rT   r   r–   r'   r   r    r   r   r   r   r   Útest_realpath_resolve_parents¸  s    
4
þz+PosixPathTest.test_realpath_resolve_parentsc              
   C   s  zÎt  t¡ t  td ¡ t  td ¡ t  td td ¡ |  ttd ƒtd ¡ t ttƒ¡, |  tt	tƒd ƒtd ¡ W d   ƒ n1 s”0    Y  W t 
td ¡ ttd ƒ ttd ƒ ttƒ n0t 
td ¡ ttd ƒ ttd ƒ ttƒ 0 d S )Nrž   z/k/yz/link-yz
/link-y/..)r   r\   r   rT   r'   r   r   r–   r   r   r    r   r   r   r   r   Ú(test_realpath_resolve_before_normalizingÌ  s$    
ÿ$
ýz6PosixPathTest.test_realpath_resolve_before_normalizingc              
   C   sÚ   z°t  t¡ t  td ¡ t  ttd ¡ t ttƒ¡D ttƒ}|  t	|d ƒt¡ |  t	|d ƒtd ¡ W d   ƒ n1 s‚0    Y  W t 
td ¡ ttd ƒ ttƒ n$t 
td ¡ ttd ƒ ttƒ 0 d S )Nrž   Úlinkzlink/k)r   r\   r   rT   r   r–   r   r   r'   r   r    r   )r   Úbaser   r   r   Útest_realpath_resolve_firsté  s    
8
þz)PosixPathTest.test_realpath_resolve_firstc                 C   s²  t jdd„  }t _zt j t  ¡ ¡d }|  ttjd¡ |  t d¡d¡ |  t t 	d¡¡d¡ |  t d¡d¡ |  t d¡d¡ |  t dd¡d	| d
 ¡ |  t dd¡d	| d ¡ |  t dd¡d¡ |  t dd¡d¡ |  t dd¡d¡ |  t dd¡d¡ |  t dd¡d¡ |  t dd¡d¡ |  t dd¡d¡ |  t dd¡d¡ |  t dd¡d¡ |  t d
d
¡d¡ |  t dd¡d¡ W |t _n|t _0 d S )Nc                   S   s   dS )Nz/home/user/barr   r   r   r   r   Ú<lambda>þ  r4   z,PosixPathTest.test_relpath.<locals>.<lambda>éÿÿÿÿr   r“   r’   z../a/bz../br”   z/az../cz/a/bzb/cz../../arC   z/foo/bar/batz/x/y/zz../../../foo/bar/batr+   Zbatr,   zfoo/bar/batz../../..r   z../foo/bar/batz
../../../x)
r   r‡   r?   r:   ÚassertRaisesÚ
ValueErrorr(   r   r'   r   )r   Zreal_getcwdÚcurdirr   r   r   Útest_relpathý  s0    
ÿzPosixPathTest.test_relpathc                 C   sÖ  t jdd„  }t _z´t j t  ¡ ¡d }|  ttjd¡ |  t d¡d¡ |  t t 	d¡¡d¡ |  t d¡d¡ |  t d¡d¡ |  t dd¡d	| d
 ¡ |  t dd¡d	| d ¡ |  t dd¡d¡ |  t dd¡d¡ |  t dd¡d¡ |  t dd¡d¡ |  t dd¡d¡ |  t dd¡d¡ |  t dd¡d¡ |  t dd¡d¡ |  t dd¡d¡ |  t d
d
¡d¡ |  t dd¡d¡ |  t
tjdd¡ |  t
tjdd¡ W |t _n|t _0 d S )Nc                   S   s   dS )Ns   /home/user/barr   r   r   r   r   r¤     r4   z2PosixPathTest.test_relpath_bytes.<locals>.<lambda>r¥   r4   ó   as   a/bs   ../a/bs   ../bs   ../s   /as   ../cs   /a/bs   b/cs   ../../arƒ   s   /foo/bar/bats   /x/y/zs   ../../../foo/bar/batr2   s   batr3   s   foo/bar/bats   ../../..s   /xs   ../foo/bar/bats
   ../../../xs   bytesr|   )r   rˆ   r?   r:   r¦   r§   r(   r   r'   r   Ú	TypeError)r   Zreal_getcwdbr¨   r   r   r   Útest_relpath_bytes  s8    
ÿ
ÿz PosixPathTest.test_relpath_bytesc                    sü  ‡ fdd„}‡ fd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                    s8   ˆ   t | ¡|¡ ˆ   t dd„ | D ƒ¡t |¡¡ d S )Nc                 S   s   g | ]}t  |¡‘qS r   ©r   rW   ©Ú.0Úpr   r   r   Ú
<listcomp>8  r4   z@PosixPathTest.test_commonpath.<locals>.check.<locals>.<listcomp>)r'   r(   Ú
commonpathr   rW   )ÚpathsZexpectedr   r   r   Úcheck6  s    ÿz,PosixPathTest.test_commonpath.<locals>.checkc                    s.   ˆ   | tj|¡ ˆ   | tjdd„ |D ƒ¡ d S )Nc                 S   s   g | ]}t  |¡‘qS r   r­   r®   r   r   r   r±   =  r4   zFPosixPathTest.test_commonpath.<locals>.check_error.<locals>.<listcomp>)r¦   r(   r²   )Úexcr³   r   r   r   Úcheck_error:  s    
ÿz2PosixPathTest.test_commonpath.<locals>.check_errorz/usrZusrz
/usr/localz/usr/local/z/usr//localz//usr/localz/usr/./localz/./usr/localr,   z/devz	/usr/lib/z/usr/lib/python3z/usr/libz/usr/lib64/z
/usr/lib64Z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²   r«   )r   r´   r¶   r   r   r   Útest_commonpath5  s\    
ÿ
ÿ
ÿ
ÿ
ÿ
ÿzPosixPathTest.test_commonpath),Ú__name__Ú
__module__Ú__qualname__r   r   r*   r;   rB   rE   rH   rI   rJ   rY   r[   r]   r   Z
skipUnlessr   rS   r^   ZskipIfr`   ri   rk   rm   rv   r‚   r…   r   r‰   rŠ   Úhasattrr   rŒ   rŽ   r—   r˜   r   rŸ   r    r£   r©   r¬   r»   r   r   r   r   r   $   sŽ   
ÿ


'
	
	ÿÿÿ'ÿÿÿÿÿr   c                   @   s   e Zd ZeZg d¢ZdS )ÚPosixCommonTest)r   ÚsamefileÚsameopenfileÚsamestatN)r¼   r½   r¾   r(   Z
pathmoduleZ
attributesr   r   r   r   rÀ   l  s   rÀ   c                   @   s°   e Zd ZeZdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)S )*ÚPathLikeTestsc                 C   s`   t j| _tt jƒ| _|  t j| j¡ t| jddƒ}| d¡ W d   ƒ n1 sR0    Y  d S )NÚxbr   s   test_posixpath.PathLikeTests)	r   r!   Ú	file_namer   Ú	file_pathZ
addCleanupr    rQ   rR   )r   Úfiler   r   r   r   u  s
    zPathLikeTests.setUpc                 C   s   |   || jƒ|| jƒ¡ d S r   )r'   rÇ   rÆ   )r   Úfuncr   r   r   ÚassertPathEqual|  s    zPathLikeTests.assertPathEqualc                 C   s   |   | jj¡ d S r   )rÊ   r?   Únormcaser   r   r   r   Útest_path_normcase  s    z PathLikeTests.test_path_normcasec                 C   s   |   | jj¡ d S r   )rÊ   r?   rG   r   r   r   r   Útest_path_isabs‚  s    zPathLikeTests.test_path_isabsc                 C   s,   |   | j dtdƒd¡| j ddd¡¡ d S )Nr“   Úbr•   )r'   r?   r)   r   r   r   r   r   Útest_path_join…  s    ÿzPathLikeTests.test_path_joinc                 C   s   |   | jj¡ d S r   )rÊ   r?   r:   r   r   r   r   Útest_path_split‰  s    zPathLikeTests.test_path_splitc                 C   s   |   | jj¡ d S r   )rÊ   r?   r=   r   r   r   r   Útest_path_splitextŒ  s    z PathLikeTests.test_path_splitextc                 C   s   |   | jj¡ d S r   )rÊ   r?   Ú
splitdriver   r   r   r   Útest_path_splitdrive  s    z"PathLikeTests.test_path_splitdrivec                 C   s   |   | jj¡ d S r   )rÊ   r?   r   r   r   r   r   Útest_path_basename’  s    z PathLikeTests.test_path_basenamec                 C   s   |   | jj¡ d S r   )rÊ   r?   r   r   r   r   r   Útest_path_dirname•  s    zPathLikeTests.test_path_dirnamec                 C   s   |   | jj¡ d S r   )rÊ   r?   rO   r   r   r   r   Útest_path_islink˜  s    zPathLikeTests.test_path_islinkc                 C   s   |   | jj¡ d S r   )rÊ   r?   rP   r   r   r   r   Útest_path_lexists›  s    zPathLikeTests.test_path_lexistsc                 C   s   |   | jj¡ d S r   )rÊ   r?   rZ   r   r   r   r   Útest_path_ismountž  s    zPathLikeTests.test_path_ismountc                 C   s   |   | jj¡ d S r   )rÊ   r?   rl   r   r   r   r   Útest_path_expanduser¡  s    z"PathLikeTests.test_path_expanduserc                 C   s   |   | jj¡ d S r   )rÊ   r?   Ú
expandvarsr   r   r   r   Útest_path_expandvars¤  s    z"PathLikeTests.test_path_expandvarsc                 C   s   |   | jj¡ d S r   )rÊ   r?   r„   r   r   r   r   Útest_path_normpath§  s    z PathLikeTests.test_path_normpathc                 C   s   |   | jj¡ d S r   )rÊ   r?   r   r   r   r   r   Útest_path_abspathª  s    zPathLikeTests.test_path_abspathc                 C   s   |   | jj¡ d S r   )rÊ   r?   r   r   r   r   r   Útest_path_realpath­  s    z PathLikeTests.test_path_realpathc                 C   s   |   | jj¡ d S r   )rÊ   r?   r   r   r   r   r   Útest_path_relpath°  s    zPathLikeTests.test_path_relpathc                 C   s&   | j  | j| jg¡}|  || j¡ d S r   )r?   r²   rÇ   rÆ   r'   )r   Zcommon_pathr   r   r   Útest_path_commonpath³  s    z"PathLikeTests.test_path_commonpathN)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Ä   q  s*   rÄ   Ú__main__)r   r(   r   r   r   r   r   r   r   r   Ztest.supportr   r	   r`   ÚImportErrorr!   r   r   r   ZTestCaser   Z
CommonTestrÀ   rÄ   r¼   Úmainr   r   r   r   Ú<module>   s,   


    LG