B
    18™\a   ã               @   sŽ   d dl Z d dlZd dlZd dlmZmZ eddgdZeddgdZG dd„ dƒZG d	d
„ d
ee j	ƒZ
G dd„ dee j	ƒZedkrŠe  ¡  dS )é    N)ÚTESTFNÚimport_fresh_moduleÚstatÚ_stat)Úfresh)Úblockedc               @   s`  e Zd ZdZdddddddd	d
dddhZdddddddhZdddddddhZddddd d!d"d#d$d%d&œ
Zd'd(d(d)d*d+d+d,d,d-d-d.d/d0d$d#d ddd1œZd/d'd-d0d2dd3d,d4d5d6dd(d)d d+d7d8œZ	d9d:„ Z
e
Zed;fd<d=„Zd>d?„ Zd@dA„ ZdBdC„ Ze eedDƒdE¡dFdG„ ƒZe eedHƒdI¡dJdK„ ƒZe ejdLkdM¡dNdO„ ƒZdPdQ„ Ze ejdRkdS¡dTdU„ ƒZdS )VÚTestFilemodeNÚ	SF_APPENDÚSF_ARCHIVEDÚSF_IMMUTABLEÚSF_NOUNLINKÚSF_SNAPSHOTÚ	UF_APPENDÚUF_COMPRESSEDÚ	UF_HIDDENÚUF_IMMUTABLEÚ	UF_NODUMPÚUF_NOUNLINKÚ	UF_OPAQUEÚS_IFBLKÚS_IFCHRÚS_IFDIRÚS_IFIFOÚS_IFLNKÚS_IFREGÚS_IFSOCKÚS_ISBLKÚS_ISCHRÚS_ISDIRÚS_ISFIFOÚS_ISLNKÚS_ISREGÚS_ISSOCKr   é   é   é   é   é   é   é   é   é	   )
ÚST_MODEÚST_INOÚST_DEVÚST_NLINKÚST_UIDÚST_GIDÚST_SIZEÚST_ATIMEÚST_MTIMEÚST_CTIMEi   i   i   iÀ  é   é€   é@   é8   é    é   )ÚS_ISUIDÚS_ISGIDÚS_ENFMTÚS_ISVTXÚS_IRWXUÚS_IRUSRÚS_IREADÚS_IWUSRÚS_IWRITEÚS_IXUSRÚS_IEXECÚS_IRWXGÚS_IRGRPÚS_IWGRPÚS_IXGRPÚS_IRWXOÚS_IROTHÚS_IWOTHÚS_IXOTHi @  i €  i    i   i   i   )ÚFILE_ATTRIBUTE_ARCHIVEÚFILE_ATTRIBUTE_COMPRESSEDÚFILE_ATTRIBUTE_DEVICEÚFILE_ATTRIBUTE_DIRECTORYÚFILE_ATTRIBUTE_ENCRYPTEDÚFILE_ATTRIBUTE_HIDDENÚFILE_ATTRIBUTE_INTEGRITY_STREAMÚFILE_ATTRIBUTE_NORMALÚ"FILE_ATTRIBUTE_NOT_CONTENT_INDEXEDÚFILE_ATTRIBUTE_NO_SCRUB_DATAÚFILE_ATTRIBUTE_OFFLINEÚFILE_ATTRIBUTE_READONLYÚFILE_ATTRIBUTE_REPARSE_POINTÚFILE_ATTRIBUTE_SPARSE_FILEÚFILE_ATTRIBUTE_SYSTEMÚFILE_ATTRIBUTE_TEMPORARYÚFILE_ATTRIBUTE_VIRTUALc             C   sL   yt  t¡ W n8 tk
rF   yt  t¡ W n tk
r@   Y nX Y nX d S )N)ÚosÚremover   ÚOSErrorÚrmdir)Úself© re   úR/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_stat.pyÚsetUpL   s    zTestFilemode.setUpTc             C   s2   |rt  |¡j}nt  |¡j}| j |¡}||fS )N)r`   ÚlstatÚst_moder   ÚstatmodÚfilemode)rd   Úfnamerh   ri   Úmodestrre   re   rf   Úget_modeV   s
    zTestFilemode.get_modec             C   s”   t | jd| d¡ ƒ}|  | j |¡|¡ d| }x\| jD ]R}t | j|d ƒ}|d krf||kr:t|ƒ‚q:||kr~|  ||ƒ¡ q:|  ||ƒ¡ q:W d S )NZS_IFÚFZS_IS)	Úgetattrrj   ÚlstripÚassertEqualÚS_IFMTÚformat_funcsÚ
ValueErrorÚ
assertTrueÚassertFalse)rd   ÚnameÚmodeÚfmtÚtestnameÚfuncnameÚfuncre   re   rf   Ú
assertS_IS^   s    zTestFilemode.assertS_ISc          	   C   s”  t tdƒ W d Q R X tjdkr@t td¡ |  ¡ \}}|  |d¡ |  d|¡ |  | j 	|¡| jj
¡ t td¡ |  ¡ \}}|  |d¡ |  d|¡ |  | j 	|¡| jj¡ t td¡ |  ¡ \}}|  |d	¡ |  d|¡ |  | j 	|¡| jj¡ t td
¡ |  ¡ \}}|  d|¡ |  |d¡ |  | j 	|¡d
¡ nPt td¡ |  ¡ \}}|  |d d… d¡ |  d|¡ |  | j |¡| jj¡ d S )NÚwÚposixiÀ  z
-rwx------ZREGr9   z
----rwx---r)   z
-------rwxi$  z
-r--r--r--r%   z-rw)Úopenr   r`   rx   Úchmodrn   rr   r~   rj   ÚS_IMODEr@   rG   rK   rs   r   )rd   ri   rm   re   re   rf   Ú	test_modeo   s@    



zTestFilemode.test_modec             C   sZ   t  t¡ t  td¡ |  ¡ \}}|  d|¡ t jdkrF|  |d¡ n|  |d d¡ d S )NiÀ  ÚDIRr€   z
drwx------r   Úd)r`   Úmkdirr   r‚   rn   r~   rx   rr   )rd   ri   rm   re   re   rf   Útest_directory•   s    

zTestFilemode.test_directoryÚsymlinkzos.symlink not availablec          
   C   sv   yt  t  ¡ t¡ W n4 ttfk
rH } zt t|ƒ¡‚W d d }~X Y n*X |  	¡ \}}|  
|d d¡ |  d|¡ d S )Nr   ÚlZLNK)r`   r‰   Úgetcwdr   rb   ÚNotImplementedErrorÚunittestÚSkipTestÚstrrn   rr   r~   )rd   Úerrri   rm   re   re   rf   Ú	test_linkŸ   s     zTestFilemode.test_linkÚmkfifozos.mkfifo not availablec          
   C   sj   yt  td¡ W n0 tk
r@ } z|  d| ¡ W d d }~X Y nX |  ¡ \}}|  |d¡ |  d|¡ d S )NiÀ  zos.mkfifo(): %sz
prwx------ZFIFO)r`   r’   r   ÚPermissionErrorÚskipTestrn   rr   r~   )rd   Úeri   rm   re   re   rf   Ú	test_fifoª   s     zTestFilemode.test_fifor€   zrequires Posixc             C   sŒ   t j t j¡r>| jt jdd\}}|  |d d¡ |  d|¡ xHdD ]@}t j |¡rD| j|dd\}}|  |d d¡ |  d|¡ P qDW d S )	NF)rh   r   ÚcZCHR)z/dev/sdaz/dev/hdaÚbZBLK)r`   ÚpathÚexistsÚdevnullrn   rr   r~   )rd   ri   rm   Zblockdevre   re   rf   Útest_devices´   s    
zTestFilemode.test_devicesc             C   sò   x0| j  ¡ D ]"\}}t| j|ƒ}|  |||¡ qW x0| j ¡ D ]"\}}t| j|ƒ}|  |||¡ q>W x&| jD ]}t| j|ƒ}|  |t¡ qlW x&| j	D ]}t| j|ƒ}|  |t¡ q”W x8| j
D ].}t| j|ƒ}|  t|ƒ¡ |  |dƒd¡ q¼W d S )Nr   )Ústat_structÚitemsrp   rj   rr   Úpermission_bitsÚ
file_flagsÚassertIsInstanceÚintÚformatsrt   rv   Úcallable)rd   ÚkeyÚvalueÚmodvaluer}   re   re   rf   Útest_module_attributesÂ   s     z#TestFilemode.test_module_attributesÚwin32z-FILE_ATTRIBUTE_* constants are Win32 specificc             C   sN   xHt | j ¡ ƒD ]6\}}|  t| j|ƒ|¡ t| j|ƒ}|  |||¡ qW d S )N)ÚsortedÚfile_attributesrž   rv   Úhasattrrj   rp   rr   )rd   r¥   r¦   r§   re   re   rf   Útest_file_attribute_constantsÔ   s    z*TestFilemode.test_file_attribute_constants)Ú__name__Ú
__module__Ú__qualname__rj   r    r£   rt   r   rŸ   r«   rg   ÚtearDownr   rn   r~   r„   rˆ   r   Ú
skipUnlessr¬   r`   r‘   r–   rx   rœ   r¨   ÚsysÚplatformr­   re   re   re   rf   r   	   s„   

&

r   c               @   s0   e Zd ZeZejdddhB ZejdddhB ZdS )ÚTestFilemodeCStatÚS_IFDOORÚS_IFPORTÚS_IFWHTÚS_ISDOORÚS_ISPORTÚS_ISWHTN)r®   r¯   r°   Úc_statrj   r   r£   rt   re   re   re   rf   rµ   Ý   s   rµ   c               @   s   e Zd ZeZdS )ÚTestFilemodePyStatN)r®   r¯   r°   Úpy_statrj   re   re   re   rf   r½   å   s   r½   Ú__main__)r   r`   r³   Ztest.supportr   r   r¼   r¾   r   ÚTestCaserµ   r½   r®   Úmainre   re   re   rf   Ú<module>   s    U