o
    ±ó®g÷  ã                   @   s  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 zd dlZW n eyK   dZY nw 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 dS )é    N)ÚrealpathÚabspathÚdirnameÚbasename)Útest_genericpath)Úimport_helper)Ú	os_helper)ÚFakePath)Úmockc                 C   s$   	 dt v }d}| t |¡| ƒg| S )Nú\z'ABSTFN is not a posix path - tests fail)ÚABSTFNÚunittestÚskip)ÚtestZfound_backslashÚmsg© r   úI/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_posixpath.pyÚ!skip_if_ABSTFN_contains_backslash   s   r   c                 C   s&   zt  | ¡ W d S  ty   Y d S w ©N)ÚosÚrmdirÚOSError)r   r   r   r   Ú
safe_rmdir!   s
   ÿr   c                   @   sB  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e ejd&kd'¡d(d)„ ƒZd*d+„ Zed,d-„ ƒZed.d/„ ƒZ e e!e"d0ƒd1¡ed2d3„ ƒƒZ#e e!e"d0ƒd1¡ed4d5„ ƒƒZ$e e!e"d0ƒd1¡ed6d7„ ƒƒZ%e e!e"d0ƒd1¡ed8d9„ ƒƒZ&e e!e"d0ƒd1¡ed:d;„ ƒƒZ'e e!e"d0ƒd1¡ed<d=„ ƒƒZ(e e!e"d0ƒd1¡ed>d?„ ƒƒZ)e e!e"d0ƒd1¡ed@dA„ ƒƒZ*e e!e"d0ƒd1¡edBdC„ ƒƒZ+e e!e"d0ƒd1¡edDdE„ ƒƒZ,dFdG„ Z-dHdI„ Z.dJdK„ Z/dS )LÚ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_join1   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'   ó   /)r4   ó    ó   foo)r5   r6   ó   ////foo)ó   ////r6   ó
   //foo//bar)ó   //foor'   )r(   r)   Úsplitr   r   r   r   Ú
test_split?   ó   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   ÚASCIIr4   s   abc/s   abc.def/s	   /abc.def/r5   )r(   r)   ÚsplitextÚbytes)r   ÚpathÚfilenameÚextr   r   r   ÚsplitextTestL   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........)rD   r   r   r   r   Útest_splitexth   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/barr5   r4   r&   r3   s   foo/bar)ÚassertIsr)   Úisabsr   r   r   r   Ú
test_isabsv   r=   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/   r1   r3   r'   r4   r5   r6   r7   r9   )r(   r)   r   r   r   r   r   Útest_basenameƒ   r=   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/   r0   r1   r2   r3   r&   r4   r6   r5   r7   r8   r9   r:   )r(   r)   r   r   r   r   r   Útest_dirname   r=   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 s0w   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    Úwbr6   Tu   í¿¿ó   ÿú ó    )rH   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-   Tr4   )rH   r)   Úismountr   r   r   r   Útest_ismount²   ó   zPosixPathTest.test_ismountc                 C   s’   |   t t¡d¡ zt t¡ |   t t¡d¡ W ttƒ nttƒ w |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ d S )NFu   /í¿¿s   /ÿz/ s   / )rH   r)   r\   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¡ d S t  t¡ w )Nr-   F)r   rV   r   rH   r)   r\   r!   r   r   r   r   Útest_ismount_symlinksÄ   s   z#PosixPathTest.test_ismount_symlinksNzTest requires posix modulec                 C   ó<   t j}dd„ }z|t _|  t t¡d¡ W |t _d S |t _w )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©rA   Úst_inoÚst_devr   r   r   Ú
fake_lstatÓ   s   z?PosixPathTest.test_ismount_different_device.<locals>.fake_lstatT©r   ÚlstatrH   r)   r\   r   ©r   Z
save_lstatri   r   r   r   Útest_ismount_different_deviceÎ   s   z+PosixPathTest.test_ismount_different_devicec                 C   rb   )Nc                 S   sP   d}d}|   t¡r| tkrtdƒ‚| tkrd}d}t d||dddddddf
¡S )Nr   z!Fake [Errno 13] Permission deniedrc   )Ú
startswithr   r   rd   re   rf   r   r   r   ri   å   s   zEPosixPathTest.test_ismount_directory_not_readable.<locals>.fake_lstatTrj   rl   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.   r6   )r(   r)   Ú
expanduserr   r   r   r   Útest_expanduserö   r^   zPosixPathTest.test_expanduserc              
   C   sÖ   t  ¡ ]}d|d< |  t d¡d¡ d|d< |  t d¡d¡ dD ]7}| j|d' ||d< |  t d¡d¡ |  t d¡d¡ |  t d	¡d
¡ W d   ƒ q!1 sSw   Y  q!W d   ƒ d S 1 sdw   Y  d S )Nz/home/victorÚHOMEú~z/home/victor/)r-   r   ú//ú///)Úhomer-   ú~/z~/foor$   )r   ÚEnvironmentVarGuardr(   r)   rp   ZsubTest)r   Úenvrv   r   r   r   Útest_expanduser_home_envvarú   s   
üÿ"øz)PosixPathTest.test_expanduser_home_envvarÚvxworkszno home directory on VxWorksc              
   C   s°  t  d¡}|  t d¡t¡ |  t d¡t¡ t d¡dkr:|  t d¡d t d¡¡ |  t d¡d t d¡¡ |  t d¡t¡ |  t d	¡t¡ |  t d
¡t¡ |  t d¡t¡ t 	¡ l}|d= | 
t ¡ ¡j}| d¡ptd}|  t d¡|¡ tjj|dtd/ tjj|dtd dD ]}|  t |¡|¡ q”W d   ƒ n1 sªw   Y  W d   ƒ n1 s¹w   Y  W d   ƒ d S W d   ƒ d S 1 sÑw   Y  d S )NÚpwdrw   s   ~/rs   r-   ó   ~r4   z~root/z~foo/s   ~root/s   ~foo/rr   Úgetpwuid)Zside_effectÚgetpwnam)rs   z~/.localz
~vstinner/)r   Úimport_moduleZassertIsInstancer)   rp   Ústrr@   r(   r   rx   r~   r   ÚgetuidÚpw_dirÚrstripr
   ZpatchÚobjectÚKeyError)r   r|   ry   rv   rA   r   r   r   Útest_expanduser_pwd
  sB   
þþ
ÿÿþ€ ó"ó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   rE   r-   rt   ru   z///foo/.//bar//r,   z///foo/.//bar//.//..//.//bazz/foo/bazz///..//./foo/.//barr5   ó   .r4   s   //s   ///s   ///foo/.//bar//r3   s   ///foo/.//bar//.//..//.//bazs   /foo/bazs   ///..//./foo/.//bar)r(   r)   Únormpathr   r   r   r   Útest_normpath3  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 )NrE   z./.r-   éd   rˆ   s   ./.r4   )r(   r   r   Úgetcwdr*   Úgetcwdbr   r   r   r   Útest_realpath_curdirG  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 )NrF   z../..r-   r‹   s   ..s   ../..r4   )r(   r   r   r   rŒ   r*   r   r   r   r   r   Útest_realpath_pardirQ  s    z"PosixPathTest.test_realpath_pardirrV   zMissing symlink implementationc              	   C   sB   zt  td t¡ |  ttƒtd ¡ W t t¡ d S t t¡ w ©Nr   )r   rV   r   r(   r   r   r!   r   r   r   r   Útest_realpath_basic[  s   z!PosixPathTest.test_realpath_basicc              	   C   sV   z$t  td t¡ | jtttdd | jtttd dd W t t¡ d S t t¡ w )Nr   T©Ústrictr    )r   rV   r   ÚassertRaisesÚFileNotFoundErrorr   r   r!   r   r   r   r   Útest_realpath_strictf  s
   z"PosixPathTest.test_realpath_strictc              	   C   sH   zt  t td ¡t¡ |  ttƒtd ¡ W t t¡ d S t t¡ w r   )	r   rV   r)   Úrelpathr   r(   r   r   r!   r   r   r   r   Útest_realpath_relatives  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   ƒ n31 sæw   Y  W t 	t¡ t 	td ¡ t 	td ¡ t 	td ¡ t 	td ¡ t 	td ¡ d S W t 	t¡ t 	td ¡ t 	td ¡ t 	td ¡ t 	td ¡ t 	td ¡ d S t 	t¡ t 	td ¡ t 	td ¡ t 	td ¡ t 	td ¡ t 	td ¡ w )Nr   r    ú1/xú1/..ú1/../xú/xÚxÚyú1/../úa/bÚaú../r-   Úc)
r   rV   r   r(   r   r   r   r   Ú
change_cwdr!   r   r   r   r   Útest_realpath_symlink_loops}  sb   ÿÿÿÿÿÿ
ø

ûz)PosixPathTest.test_realpath_symlink_loopsc              
   C   sÂ  z6t  tt¡ | jtttdd t  td td ¡ t  td td ¡ | jtttd dd | jtttd dd | jtttd dd | jtttd dd | jtttd dd t  td td	 ¡ | jtttd
 ttƒ d	 dd | jtttd
 ttƒ d dd t  ttƒd td ¡ | jtttd dd t  dtttƒƒ d ttƒ d td ¡ | jtttd dd t 	ttƒ¡ | jttttƒdd W d   ƒ n31 sÝw   Y  W t 
t¡ t 
td ¡ t 
td ¡ t 
td	 ¡ t 
td ¡ t 
td ¡ d S W t 
t¡ t 
td ¡ t 
td ¡ t 
td	 ¡ t 
td ¡ t 
td ¡ d S t 
t¡ t 
td ¡ t 
td ¡ t 
td	 ¡ t 
td ¡ t 
td ¡ w )NTr’   r   r    r™   rš   r›   r   rž   rŸ   r    r¡   r¢   r-   r£   )r   rV   r   r”   r   r   r   r   r   r¤   r!   r   r   r   r   Ú"test_realpath_symlink_loops_strict§  sb   ÿÿÿÿÿÿ
ø

ûz0PosixPathTest.test_realpath_symlink_loops_strictc              
   C   s˜   z8t  t¡ t  dttƒ td ¡ t  dtd ¡ |  ttd ƒt¡ W t td ¡ t td ¡ t	tƒ d S t td ¡ t td ¡ t	tƒ w )Nr¢   z/selfzself/self/selfz/link)
r   r_   r   rV   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}zlt  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 sQw   Y  W t|d ƒD ]}t 
td|  ¡ q]ttƒ d S t|d ƒD ]}t 
td|  ¡ quttƒ w )Né
   r-   z%dz/%drc   rE   z/0)r   r_   r   ÚrangerV   r*   r(   r   r   r¤   r!   r   )r   ZdepthÚir   r   r   Útest_realpath_deep_recursionà  s"   
*ÿ€þ
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 s3w   Y  W t td ¡ t	td ƒ t	tƒ d S W t td ¡ t	td ƒ t	tƒ d S t td ¡ t	td ƒ t	tƒ w )Nz/yú/kr¡   z/y/a)
r   r_   r   rV   r   r¤   r(   r   r!   r   r   r   r   r   Útest_realpath_resolve_parentsô  s"   
ÿûþ
z+PosixPathTest.test_realpath_resolve_parentsc              
   C   s6  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 sJw   Y  W t 
td ¡ ttd ƒ ttd ƒ ttƒ d S W t 
td ¡ ttd ƒ ttd ƒ ttƒ d S t 
td ¡ ttd ƒ ttd ƒ ttƒ w )Nr¬   z/k/yz/link-yz
/link-y/..)r   r_   r   rV   r(   r   r   r¤   r   r   r!   r   r   r   r   r   Ú(test_realpath_resolve_before_normalizing  s0   
ÿÿùý
z6PosixPathTest.test_realpath_resolve_before_normalizingc              
   C   s   zmt  t¡ t  td ¡ t  ttd ¡ t ttƒ¡" ttƒ}|  t	|d ƒt¡ |  t	|d ƒtd ¡ W d   ƒ n1 sAw   Y  W t 
td ¡ ttd ƒ ttƒ d S W t 
td ¡ ttd ƒ ttƒ d S t 
td ¡ ttd ƒ ttƒ w )Nr¬   Úlinkzlink/k)r   r_   r   rV   r   r¤   r   r   r(   r   r!   r   )r   Úbaser   r   r   Útest_realpath_resolve_first%  s&   
ýùþ
z)PosixPathTest.test_realpath_resolve_firstc                 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¡ W |t _d S |t _w )Nc                   S   ó   dS )Nz/home/user/barr   r   r   r   r   Ú<lambda>:  ó    z,PosixPathTest.test_relpath.<locals>.<lambda>éÿÿÿÿr   r¡   r    z../a/bz../br¢   z/az../cz/a/bzb/cz../../arE   z/foo/bar/batz/x/y/zz../../../foo/bar/batr,   Zbatr-   zfoo/bar/batz../../..rœ   z../foo/bar/batz
../../../x)
r   rŒ   rA   r;   r”   Ú
ValueErrorr)   r—   r(   r   )r   Zreal_getcwdÚcurdirr   r   r   Útest_relpath9  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 _d S |t _w )Nc                   S   r²   )Ns   /home/user/barr   r   r   r   r   r³   T  r´   z2PosixPathTest.test_relpath_bytes.<locals>.<lambda>rµ   r5   ó   as   a/bs   ../a/bs   ../bs   ../s   /as   ../cs   /a/bs   b/cs   ../../arˆ   s   /foo/bar/bats   /x/y/zs   ../../../foo/bar/batr3   s   batr4   s   foo/bar/bats   ../../..s   /xs   ../foo/bar/bats
   ../../../xs   bytesr   )r   r   rA   r;   r”   r¶   r)   r—   r(   r   Ú	TypeError)r   Zreal_getcwdbr·   r   r   r   Útest_relpath_bytesS  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   ó   g | ]}t  |¡‘qS r   ©r   rY   ©Ú.0Úpr   r   r   Ú
<listcomp>t  ó    z@PosixPathTest.test_commonpath.<locals>.check.<locals>.<listcomp>)r(   r)   Ú
commonpathr   rY   )ÚpathsZexpectedr   r   r   Úcheckr  s   ÿz,PosixPathTest.test_commonpath.<locals>.checkc                    s.   ˆ   | tj|¡ ˆ   | tjdd„ |D ƒ¡ d S )Nc                 S   r¼   r   r½   r¾   r   r   r   rÁ   y  rÂ   zFPosixPathTest.test_commonpath.<locals>.check_error.<locals>.<listcomp>)r”   r)   rÃ   )ÚexcrÄ   r   r   r   Úcheck_errorv  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_commonpathq  s\   
ÿ
ÿ
ÿ
ÿ
ÿ
ÿzPosixPathTest.test_commonpath)0Ú__name__Ú
__module__Ú__qualname__r   r   r+   r<   rD   rG   rJ   rK   rL   r[   r]   r`   r   Z
skipUnlessr   rU   ra   ZskipIfrd   rm   ro   rq   rz   ÚsysÚplatformr‡   rŠ   r   rŽ   r   Úhasattrr   r‘   r–   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Ó   ¨  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   sb   t j| _tt jƒ| _|  t j| j¡ t| jddƒ}| d¡ W d   ƒ d S 1 s*w   Y  d S )NÚxbr   s   test_posixpath.PathLikeTests)	r   r"   Ú	file_namer	   Ú	file_pathZ
addCleanupr!   rS   rT   )r   Úfiler   r   r   r   ±  s   "ÿzPathLikeTests.setUpc                 C   s   |   || jƒ|| jƒ¡ d S r   )r(   rÚ   rÙ   )r   Úfuncr   r   r   ÚassertPathEqual¸  s   zPathLikeTests.assertPathEqualc                 C   ó   |   | jj¡ d S r   )rÝ   rA   Únormcaser   r   r   r   Útest_path_normcase»  ó   z PathLikeTests.test_path_normcasec                 C   rÞ   r   )rÝ   rA   rI   r   r   r   r   Útest_path_isabs¾  rá   zPathLikeTests.test_path_isabsc                 C   s,   |   | j dtdƒd¡| j ddd¡¡ d S )Nr¡   Úbr£   )r(   rA   r*   r	   r   r   r   r   Útest_path_joinÁ  s   ÿzPathLikeTests.test_path_joinc                 C   rÞ   r   )rÝ   rA   r;   r   r   r   r   Útest_path_splitÅ  rá   zPathLikeTests.test_path_splitc                 C   rÞ   r   )rÝ   rA   r?   r   r   r   r   Útest_path_splitextÈ  rá   z PathLikeTests.test_path_splitextc                 C   rÞ   r   )rÝ   rA   Ú
splitdriver   r   r   r   Útest_path_splitdriveË  rá   z"PathLikeTests.test_path_splitdrivec                 C   rÞ   r   )rÝ   rA   r   r   r   r   r   Útest_path_basenameÎ  rá   z PathLikeTests.test_path_basenamec                 C   rÞ   r   )rÝ   rA   r   r   r   r   r   Útest_path_dirnameÑ  rá   zPathLikeTests.test_path_dirnamec                 C   rÞ   r   )rÝ   rA   rQ   r   r   r   r   Útest_path_islinkÔ  rá   zPathLikeTests.test_path_islinkc                 C   rÞ   r   )rÝ   rA   rR   r   r   r   r   Útest_path_lexists×  rá   zPathLikeTests.test_path_lexistsc                 C   rÞ   r   )rÝ   rA   r\   r   r   r   r   Útest_path_ismountÚ  rá   zPathLikeTests.test_path_ismountc                 C   rÞ   r   )rÝ   rA   rp   r   r   r   r   Útest_path_expanduserÝ  rá   z"PathLikeTests.test_path_expanduserc                 C   rÞ   r   )rÝ   rA   Ú
expandvarsr   r   r   r   Útest_path_expandvarsà  rá   z"PathLikeTests.test_path_expandvarsc                 C   rÞ   r   )rÝ   rA   r‰   r   r   r   r   Útest_path_normpathã  rá   z PathLikeTests.test_path_normpathc                 C   rÞ   r   )rÝ   rA   r   r   r   r   r   Útest_path_abspathæ  rá   zPathLikeTests.test_path_abspathc                 C   rÞ   r   )rÝ   rA   r   r   r   r   r   Útest_path_realpathé  rá   z PathLikeTests.test_path_realpathc                 C   rÞ   r   )rÝ   rA   r—   r   r   r   r   Útest_path_relpathì  rá   zPathLikeTests.test_path_relpathc                 C   s&   | j  | j| jg¡}|  || j¡ d S r   )rA   rÃ   rÚ   rÙ   r(   )r   Zcommon_pathr   r   r   Útest_path_commonpathï  s   z"PathLikeTests.test_path_commonpathN)rÍ   rÎ   rÏ   r)   rA   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×   ­  s,    r×   Ú__main__)r   r)   rÐ   r   r   r   r   r   r   r   Ztest.supportr   r   Ztest.support.os_helperr	   r
   rd   ÚImportErrorr"   r   r   r   ZTestCaser   Z
CommonTestrÓ   r×   rÍ   Úmainr   r   r   r   Ú<module>   s:    ÿ

     Gÿ