o
    HXîh]W  ã                   @   sÀ   	 d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 d dl
mZ ddd„ZG d	d
„ d
ƒZG dd„ deejƒZG dd„ deƒZG dd„ dejƒZedkr^e ¡  dS dS )é    N)Ú	os_helper)Úwarnings_helper)Úassert_python_ok)ÚFakePathó   fooc                 C   s<   t | ddƒ}| |¡ W d   ƒ d S 1 sw   Y  d S )NÚxbr   )ÚopenÚwrite)ÚfilenameÚdataÚfp© r   ú?/opt/python-3.10.19/usr/lib/python3.10/test/test_genericpath.pyÚcreate_file   s   "ÿr   c                   @   s¾   e Zd Zg d¢Zg Zdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ Z	e
 eedƒd¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zejdd„ ƒZdd„ Zdd„ Zdd„ Zejd d!„ ƒZd"d#„ Zd$d%„ Zd&S )'ÚGenericTest)ÚcommonprefixÚgetsizeÚgetatimeÚgetctimeÚgetmtimeÚexistsÚisdirÚisfilec              	   C   sV   | j | j D ]"}|  t¡ t| j|ƒƒ  |  d | jj|¡¡‚1 s#w   Y  qd S )Nz!{}.{}() did not raise a TypeError)	Úcommon_attributesÚ
attributesÚassertRaisesÚ	TypeErrorÚgetattrÚ
pathmoduleZfailÚformatÚ__name__)ÚselfÚattrr   r   r   Útest_no_argument   s   ÿþÿzGenericTest.test_no_argumentc              	   C   sˆ  | j j}|  |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dgƒd¡ g d¢}|D ]7}|D ]2}|||gƒ}|  | |¡¡ |  | |¡¡ ||krÀt|ƒ}|  |||d … |||d … ¡ qŽqŠd S )NÚ z/home/swenson/spamz/home/swen/spamz
/home/swenz/home/swen/eggsz/home/swen/zhome:swenson:spamzhome:swen:spamz	home:swenz:home:swen:spamz:home:swen:eggsz:home:swen:s   /home/swenson/spams   /home/swen/spams
   /home/swens   /home/swen/eggss   /home/swen/s   home:swenson:spams   home:swen:spams	   home:swens   :home:swen:spams   :home:swen:eggss   :home:swen:)r$   ÚabcZXbcdZXbZXYZabcdZaXcZabdÚabZaXZabcXé   )r   r   ÚassertEqualÚ
assertTrueÚ
startswithÚlenZassertNotEqual)r!   r   ZtestlistÚs1Ús2ÚpÚnr   r   r   Útest_commonprefix!   s‚   þ
þ
þ
þ
þ
þ
þ
þ
þ
þ
þ
þ
þ$€úÿzGenericTest.test_commonprefixc                 C   s^   t j}|  t j|¡ t|dƒ |  | j |¡d¡ t 	|¡ t|dƒ |  | j |¡d¡ d S )Ns   Helloé   s   Hello World!é   )
r   ÚTESTFNÚ
addCleanupÚunlinkr   r(   r   r   ÚosÚremove)r!   r
   r   r   r   Útest_getsized   s   


zGenericTest.test_getsizec                 C   s´   t j}|  t j|¡ t|dƒ t|ddƒ}| d¡ W d   ƒ n1 s%w   Y  t|ddƒ}| ¡ }W d   ƒ n1 s?w   Y  |  |d¡ |  	| j
 |¡| j
 |¡¡ d S )Nr   r&   r   ó   barÚrbs   foobar)r   r3   r4   r5   r   r   r	   Úreadr(   ZassertLessEqualr   r   r   )r!   r
   Úfr   r   r   r   Útest_filetimeo   s   
ÿ
ÿ

þzGenericTest.test_filetimec                 C   sp  t j}t |¡}|  t j|¡ |  | j |¡d¡ |  | j |¡d¡ t	|ƒ |  | j |¡d¡ |  | j |¡d¡ |  | j |d ¡d¡ |  | j |d ¡d¡ |  | j |d ¡d¡ |  | j |d ¡d¡ | jt
ur¶|  | j |¡d¡ |  | j |¡d¡ |  | j |d ¡d¡ |  | j |d ¡d¡ |  | j |d ¡d¡ |  | j |d ¡d¡ d S d S )NFTõ   í¿¿ó   ÿú ó    )r   r3   r6   Úfsencoder4   r5   ÚassertIsr   r   r   ÚgenericpathÚlexists©r!   r
   Z	bfilenamer   r   r   Útest_exists   s(   

ùzGenericTest.test_existsÚpipezrequires os.pipe()c              	   C   sd   t  ¡ \}}z|  | j |¡¡ W t  |¡ t  |¡ nt  |¡ t  |¡ w |  | j |¡¡ d S ©N)r6   rH   r)   r   r   ÚcloseÚassertFalse)r!   ÚrÚwr   r   r   Útest_exists_fdœ   s   

ÿzGenericTest.test_exists_fdc              	   C   s4  t j}t |¡}|  | j |¡d¡ |  | j |¡d¡ |  | j |d ¡d¡ |  | j |d ¡d¡ |  | j |d ¡d¡ |  | j |d ¡d¡ zt|ƒ |  | j |¡d¡ |  | j |¡d¡ W t  |¡ nt  |¡ w z!t 	|¡ |  | j |¡d¡ |  | j |¡d¡ W t  
|¡ d S t  
|¡ w ©NFr>   r?   r@   rA   T)r   r3   r6   rB   rC   r   r   r   r5   ÚmkdirÚrmdirrF   r   r   r   Ú
test_isdir¦   ó$   

zGenericTest.test_isdirc              	   C   s4  t j}t |¡}|  | j |¡d¡ |  | j |¡d¡ |  | j |d ¡d¡ |  | j |d ¡d¡ |  | j |d ¡d¡ |  | j |d ¡d¡ zt|ƒ |  | j |¡d¡ |  | j |¡d¡ W t  |¡ nt  |¡ w z!t 	|¡ |  | j |¡d¡ |  | j |¡d¡ W t  
|¡ d S t  
|¡ w rO   )r   r3   r6   rB   rC   r   r   r   r5   rP   rQ   rF   r   r   r   Útest_isfile¿   rS   zGenericTest.test_isfilec                 C   sx   t j}t jd }|  t j|¡ |  t j|¡ t|ƒ |  | j ||¡¡ t|ƒ |  | j ||¡¡ |  	t
| jj¡ d S ©NÚ2)r   r3   r4   r5   r   r)   r   ÚsamefilerK   r   r   )r!   Zfile1Zfile2r   r   r   Útest_samefileØ   s   
zGenericTest.test_samefilec                 C   s|   t j}t jd }|  t j|¡ |  t j|¡ t|ƒ |||ƒ |  | j ||¡¡ t 	|¡ t|ƒ |  
| j ||¡¡ d S rU   )r   r3   r4   r5   r   r)   r   rW   r6   r7   rK   ©r!   ÚfuncÚtest_fn1Útest_fn2r   r   r   Ú_test_samefile_on_link_funcæ   s   


z'GenericTest._test_samefile_on_link_funcc                 C   ó   |   tj¡ d S rI   )r]   r6   Úsymlink©r!   r   r   r   Útest_samefile_on_symlinkõ   ó   z$GenericTest.test_samefile_on_symlinkc              
   C   óH   z	|   tj¡ W d S  ty# } z|  d| ¡ W Y d }~d S d }~ww ©Nzos.link(): %s)r]   r6   ÚlinkÚPermissionErrorÚskipTest©r!   Úer   r   r   Útest_samefile_on_linkù   ó   €ÿz!GenericTest.test_samefile_on_linkc                 C   s’   t j}t jd }|  t j|¡ |  t j|¡ t|ƒ t |¡}|  | j 	|t |¡¡¡ t|ƒ t |¡}|  
| j 	||¡¡ |  t| jj	¡ d S rU   )r   r3   r4   r5   r   r6   Ústatr)   r   ÚsamestatrK   r   r   )r!   r[   r\   Zstat1Zstat2r   r   r   Útest_samestatÿ   s   


zGenericTest.test_samestatc                 C   s˜   t jd }t jd }|  t j|¡ |  t j|¡ t|ƒ |||ƒ |  | j t 	|¡t 	|¡¡¡ t 
|¡ t|ƒ |  | j t 	|¡t 	|¡¡¡ d S )NÚ1rV   )r   r3   r4   r5   r   r)   r   rm   r6   rl   r7   rK   rY   r   r   r   Ú_test_samestat_on_link_func  s   


ÿ

ÿz'GenericTest._test_samestat_on_link_funcc                 C   r^   rI   )rp   r6   r_   r`   r   r   r   Útest_samestat_on_symlink  rb   z$GenericTest.test_samestat_on_symlinkc              
   C   rc   rd   )rp   r6   re   rf   rg   rh   r   r   r   Útest_samestat_on_link#  rk   z!GenericTest.test_samestat_on_linkc              	   C   s®   t j}|  t j|¡ t|ƒ t|ddƒ9}| ¡ }t|ddƒ}| ¡ }|  | j 	||¡¡ W d   ƒ n1 s8w   Y  W d   ƒ d S W d   ƒ d S 1 sPw   Y  d S )Nr:   r   )
r   r3   r4   r5   r   r   Úfilenor)   r   Úsameopenfile)r!   r
   Úfp1Úfd1Úfp2Úfd2r   r   r   Útest_sameopenfile)  s   þþ"þzGenericTest.test_sameopenfileN)r    Ú
__module__Ú__qualname__r   r   r#   r0   r8   r=   rG   ÚunittestÚ
skipUnlessÚhasattrr6   rN   rR   rT   rX   r]   r   Zskip_unless_symlinkra   rj   rn   rp   rq   rr   ry   r   r   r   r   r      s.    C
	

r   c                   @   s   e Zd ZeZdd„ ZdS )ÚTestGenericTestc              
   C   sP  t jD ]¢}|dkr
qt| j|ƒ}| j|d‡ |dv r,|dƒ |dƒ |dƒ |dƒ nj|  ttf¡ |dƒ W d   ƒ n1 sBw   Y  |  ttf¡ |dƒ W d   ƒ n1 s]w   Y  |  	t
d¡ |dƒ W d   ƒ n1 sww   Y  |  	t
d¡ |dƒ W d   ƒ n1 s‘w   Y  W d   ƒ n1 s w   Y  qd S )	Nr   )r"   )r   r   r   u   /tmpí¿¿abcdss
   /tmpÿabcdsz
/tmp abcdss
   /tmp abcdszembedded null)r   r   r   r   ZsubTestr   ÚOSErrorÚUnicodeEncodeErrorÚUnicodeDecodeErrorÚassertRaisesRegexÚ
ValueError)r!   r"   rZ   r   r   r   Útest_invalid_paths;  s4   


ÿ
ÿ
ÿ
ÿ€ó€ûz"TestGenericTest.test_invalid_pathsN)r    rz   r{   rD   r   r…   r   r   r   r   r   5  s    r   c                   @   sˆ   e Zd Zejg d¢ Zdd„ Zdd„ Zdd„ Ze 	e
jd¡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 )Ú
CommonTest)ÚcurdirÚpardirÚextsepÚsepÚpathsepÚdefpathÚaltsepÚdevnullÚnormcaseÚ
splitdriveÚ
expandvarsÚnormpathÚabspathÚjoinÚsplitÚsplitextÚisabsÚbasenameÚdirnamerE   ÚislinkÚismountÚ
expanduserr’   Úrealpathc                 C   s|   | j j}dD ]}||ƒ}|  |||ƒ¡ q|  |dƒd¡ |  |dƒd¡ d dddg tdƒddhfD ]	}|  t||¡ q2d S )N)z	FoO/./BaRs	   FoO/./BaRr$   ó    Tr   g      @Úo)r   r   r(   Ú	bytearrayr   r   )r!   r   r.   Úpathr   r   r   Útest_normcase_  s   ÿzCommonTest.test_normcasec                 C   sl   | j j}|  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |d	ƒd
¡ |  |dƒd¡ d S )Nú/foo/bar)r$   r£   úfoo:bar)r$   r¤   ú:foo:bar)r$   r¥   ó   /foo/bar)rž   r¦   ó   foo:bar)rž   r§   ó   :foo:bar)rž   r¨   )r   r   r(   )r!   r   r   r   r   Útest_splitdrivem  s   zCommonTest.test_splitdrivec                 C   s¶  | j j}t ¡ É}| ¡  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ƒd¡ |  |dƒd¡ |  |dƒd¡ |  |dƒd¡ |  |d ƒd!¡ |  |d"ƒd¡ |  |d#ƒd#¡ W d   ƒ d S 1 sÔw   Y  d S )$NZbarÚfooZbaz1z{fooZbaz2z{foo}z$foo barzbar barz	${foo}barZbarbarz	$[foo]barz$bar barz$?barz$foo}barzbar}barz${fooz${{foo}}zbaz1}z$foo$fooz$bar$barr   s   $foo bars   bar bars	   ${foo}bars   barbars	   $[foo]bars   $bar bars   $?bars   $foo}bars   bar}bars   ${foos   ${{foo}}s   baz1}s   $foo$foos   $bar$bar)r   r‘   r   ÚEnvironmentVarGuardÚclearr(   )r!   r‘   Úenvr   r   r   Útest_expandvarsx  s:   
"åzCommonTest.test_expandvarszneed os_helper.FS_NONASCIIc                    sL  ˆj j‰ ‡ ‡fdd„}t ¡ }| ¡  tj}||d< d| ||< |||ƒ |dd| ƒ |dd| ƒ |d	| d
| ƒ |d| d| ƒ |dd| ƒ |t |¡t |¡ƒ |dt d| ¡ƒ |dt d| ¡ƒ |t d	| ¡t d
| ¡ƒ |t d| ¡t d| ¡ƒ |dt d| ¡ƒ W d   ƒ d S 1 sŸw   Y  d S )Nc                    s   ˆ  ˆ | ƒ|¡ d S rI   )r(   )ÚvalueZexpected©r‘   r!   r   r   Úcheckš  s   z2CommonTest.test_expandvars_nonascii.<locals>.checkZspamZhamz	$spam barz%s barz
${spam}barz%sbarz${%s}barzham%sbarz
$bar%s barz	$spam}barz%s}bars	   $spam bars
   ${spam}bars	   $spam}bar)r   r‘   r   r«   r¬   ÚFS_NONASCIIr6   rB   )r!   r±   r­   Znonasciir   r°   r   Útest_expandvars_nonascii—  s0   

ÿÿ"íz#CommonTest.test_expandvars_nonasciic                 C   sÐ   |   d| j d¡¡ t ¡  t dt¡ |   d| j d¡¡ W d   ƒ n1 s)w   Y  tjdkr5dnd}t ¡ # t dt¡ dd|ddfD ]}|  	| j |¡t
¡ qIW d   ƒ d S 1 saw   Y  d S )	Nrª   Úignorer   Úwin32rž   s   fòòs   /foos   C:\)ÚassertInr   r“   ÚwarningsÚcatch_warningsÚsimplefilterÚDeprecationWarningÚsysÚplatformÚassertIsInstanceÚbytes)r!   Zundecodable_pathr¡   r   r   r   Útest_abspath±  s   
þ
ÿ"þzCommonTest.test_abspathc                 C   sb   |   d| j d¡¡ t ¡  t dt¡ |   d| j d¡¡ W d   ƒ d S 1 s*w   Y  d S )Nrª   r´   r   )r¶   r   r   r·   r¸   r¹   rº   r`   r   r   r   Útest_realpathÀ  s
   
"þzCommonTest.test_realpathc                 C   s"   dD ]}|   | j |¡t¡ qd S )N)r$   Ú.ú/ú\z///foo/.//bar//)r½   r   r’   Ústr)r!   r¡   r   r   r   Útest_normpath_issue5827Æ  s   ÿz"CommonTest.test_normpath_issue5827c              	   C   s˜   | j j}dD ]
}|  ||ƒt¡ qd}zt |¡ W n ttfy&   Y d S w t 	|¡ dD ]
}|  ||ƒt¡ q/W d   ƒ d S 1 sEw   Y  d S )N)r$   Zfuuu   fÃ¹Ã¹z/fuuzU:\u   Ã§wÃ°)
r   r“   r½   rÄ   r6   rB   ÚAttributeErrorr   r   Útemp_cwd)r!   r“   r¡   Zunicwdr   r   r   Útest_abspath_issue3426Ë  s   þÿ"ÿz!CommonTest.test_abspath_issue3426c              	   C   s¬   t jrtjdvrt j}nt jrt j}n|  d¡ t ¡ 0 t dt	¡ t  
|¡ |  ¡  W d   ƒ n1 s7w   Y  W d   ƒ d S W d   ƒ d S 1 sOw   Y  d S )N)rµ   Údarwinzneed os_helper.TESTFN_NONASCIIr´   )r   ZTESTFN_UNDECODABLEr»   r¼   ZTESTFN_NONASCIIrg   r·   r¸   r¹   rº   rÇ   r¿   )r!   Únamer   r   r   Útest_nonascii_abspathÝ  s   



ÿþ"þz CommonTest.test_nonascii_abspathc              	   C   sæ  t jdtfddà d}|  t|¡ | j dd¡ W d   ƒ n1 s$w   Y  |  t|¡ | j dd¡ W d   ƒ n1 sAw   Y  |  td¡ | j dd¡ W d   ƒ n1 s^w   Y  |  td¡ | j dd¡ W d   ƒ n1 s{w   Y  |  td¡ | j d¡ W d   ƒ n1 s—w   Y  |  td	¡ | j g ¡ W d   ƒ n1 s³w   Y  |  td
¡ | j tdƒtdƒ¡ W d   ƒ n1 sÔw   Y  W d   ƒ d S W d   ƒ d S 1 sìw   Y  d S )Nr$   T©Úquietú.Can't mix strings and bytes in path componentsó   bytesrÄ   Úinté*   Úlistr    r   r9   )r   Úcheck_warningsÚBytesWarningrƒ   r   r   r”   r    ©r!   Úerrmsgr   r   r   Útest_join_errorsï  s4   ÿÿÿÿÿÿÿñ"ñzCommonTest.test_join_errorsc              	   C   sz  t jdttffdd¨ d}|  t|¡ | j dd¡ W d   ƒ n1 s&w   Y  |  t|¡ | j dd¡ W d   ƒ n1 sCw   Y  |  td¡ | j dd¡ W d   ƒ n1 s`w   Y  |  td¡ | j dd¡ W d   ƒ n1 s}w   Y  |  td	¡ | j td
ƒtdƒ¡ W d   ƒ n1 sžw   Y  W d   ƒ d S W d   ƒ d S 1 s¶w   Y  d S )Nr$   TrÌ   rÎ   rÏ   rÄ   rÐ   rÑ   r    r   r9   )	r   rÓ   rÔ   rº   rƒ   r   r   Úrelpathr    rÕ   r   r   r   Útest_relpath_errors  s,   ÿÿÿÿÿÿõ"õzCommonTest.test_relpath_errorsc                 C   s   t ddd| jj ƒ d S )Nz-Sz-czimport )r   r   r    r`   r   r   r   Útest_import  s   zCommonTest.test_importN)r    rz   r{   r   r   r¢   r©   r®   r|   r}   r   r²   r³   r¿   rÀ   rÅ   rÈ   rË   r×   rÙ   rÚ   r   r   r   r   r†   T  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S )ÚPathLikeTestsc                 C   s4   t j| _tt jƒ| _|  t j| j¡ t| jdƒ d S )Ns   test_genericpath.PathLikeTests)r   r3   Ú	file_namer   Ú	file_pathr4   r5   r   r`   r   r   r   ÚsetUp  s   zPathLikeTests.setUpc                 C   s   |   || jƒ|| jƒ¡ d S rI   )r(   rÝ   rÜ   )r!   rZ   r   r   r   ÚassertPathEqual  ó   zPathLikeTests.assertPathEqualc                 C   ó   |   tjj¡ d S rI   )rß   r6   r¡   r   r`   r   r   r   Útest_path_exists"  ó   zPathLikeTests.test_path_existsc                 C   rá   rI   )rß   r6   r¡   r   r`   r   r   r   Útest_path_isfile%  rã   zPathLikeTests.test_path_isfilec                 C   rá   rI   )rß   r6   r¡   r   r`   r   r   r   Útest_path_isdir(  rã   zPathLikeTests.test_path_isdirc                 C   s"   |   tj | j| jg¡| j¡ d S rI   )r(   r6   r¡   r   rÝ   rÜ   r`   r   r   r   Útest_path_commonprefix+  s   ÿz$PathLikeTests.test_path_commonprefixc                 C   rá   rI   )rß   r6   r¡   r   r`   r   r   r   Útest_path_getsize/  rã   zPathLikeTests.test_path_getsizec                 C   rá   rI   )rß   r6   r¡   r   r`   r   r   r   Útest_path_getmtime2  rã   z PathLikeTests.test_path_getmtimec                 C   rá   rI   )rß   r6   r¡   r   r`   r   r   r   Útest_path_getctime5  rã   z PathLikeTests.test_path_getctimec                 C   s   |   tj | j| j¡¡ d S rI   )r)   r6   r¡   rW   rÝ   rÜ   r`   r   r   r   Útest_path_samefile8  rà   z PathLikeTests.test_path_samefileN)r    rz   r{   rÞ   rß   râ   rä   rå   ræ   rç   rè   ré   rê   r   r   r   r   rÛ     s    rÛ   Ú__main__)r   )rD   r6   r»   r|   r·   Ztest.supportr   r   Ztest.support.script_helperr   Ztest.support.os_helperr   r   r   ZTestCaser   r†   rÛ   r    Úmainr   r   r   r   Ú<module>   s*    
  " D%ÿ