a 5êdg1!ã@s¢ddlZddlZddlZddlZddlmZddlmZmZeddgdZeddgdZ Gdd „d ƒZ Gd d „d e ej ƒZ Gd d „d e ej ƒZ edkrže ¡dS)éN)Ú socket_helper)ÚTESTFNÚimport_fresh_moduleÚstatÚ_stat)Zfresh)Zblockedc@sFeZdZdZhd£Zhd£Zhd£Zddddd d d d d ddœ Zddddddddddddddd d d dddœZddddddddddddddd dd d!œZ d"d#„Z e Z e d$fd%d&„Z d'd(„Zd)d*„Zd+d,„Ze eed-ƒd.¡d/d0„ƒZe eed1ƒd2¡d3d4„ƒZe ejd5kd6¡d7d8„ƒZejd9d:„ƒZd;d<„Ze ejd=kd>¡d?d@„ƒZdS)AÚ TestFilemodeN> Ú SF_SNAPSHOTÚ SF_IMMUTABLEÚ UF_APPENDÚ UF_COMPRESSEDÚ UF_IMMUTABLEÚ SF_NOUNLINKÚ UF_HIDDENÚ UF_NODUMPÚ SF_ARCHIVEDÚ UF_NOUNLINKÚ SF_APPENDÚ UF_OPAQUE> ÚS_IFBLKÚS_IFLNKÚS_IFCHRÚS_IFSOCKÚS_IFPORTÚS_IFDIRÚS_IFIFOÚS_IFDOORÚS_IFWHTÚS_IFREG> ÚS_ISLNKÚS_ISDOORÚS_ISWHTÚS_ISDIRÚS_ISPORTÚS_ISBLKÚS_ISSOCKÚS_ISCHRÚS_ISFIFOÚS_ISREGrééééééééé ) ÚST_MODEÚST_INOÚST_DEVÚST_NLINKÚST_UIDÚST_GIDÚST_SIZEÚST_ATIMEÚST_MTIMEÚST_CTIMEiiiéÀéé€é@é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 iii)Ú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 CsHzt t¡Wn4tyBzt t¡Wnty<Yn0Yn0dS©N)ÚosÚremoverÚOSErrorÚrmdir)Úself©rlú*/usr/local/lib/python3.9/test/test_stat.pyÚsetUpNs  zTestFilemode.setUpTcCs2|rt |¡j}n t |¡j}|j |¡}||fSrf)rgÚlstatÚst_moderÚstatmodÚfilemode)rkZfnamerorpÚmodestrrlrlrmÚget_modeXs   zTestFilemode.get_modecCst|jd| d¡ƒ}| |j |¡|¡d|}|jD]R}t|j|dƒ}|durd||kr8t|ƒ‚q8||kr|| ||ƒ¡q8| ||ƒ¡q8dS)NZS_IFÚFZS_IS) ÚgetattrrqÚlstripÚ assertEqualÚS_IFMTÚ format_funcsÚ ValueErrorÚ assertTrueZ assertFalse)rkÚnameÚmodeÚfmtZtestnameÚfuncnameÚfuncrlrlrmÚ assertS_IS`s zTestFilemode.assertS_IScCs¨ttdƒWdƒn1s 0YtjdkrTt td¡| ¡\}}| |d¡| d|¡| |j  |¡|jj ¡t td¡| ¡\}}| |d¡| d|¡| |j  |¡|jj ¡t td¡| ¡\}}| |d ¡| d|¡| |j  |¡|jj ¡t td ¡| ¡\}}| d|¡| |d ¡| |j  |¡d ¡nPt td¡| ¡\}}| |dd …d ¡| d|¡| |j  |¡|jj¡dS)NÚwÚposixr;z -rwx------ZREGr?z ----rwx---r.z -------rwxi$z -r--r--r--r*z-rw)Úopenrrgr}Úchmodrtrxr‚rqÚS_IMODErFrMrQryr©rkrprsrlrlrmÚ test_modeqsH      ÿ    ÿ    ÿ       ÿzTestFilemode.test_modecCsZt t¡t td¡| ¡\}}| d|¡tjdkrF| |d¡n| |dd¡dS)Nr;ÚDIRr„z drwx------rÚd)rgÚmkdirrr†rtr‚r}rxrˆrlrlrmÚtest_directory—s     zTestFilemode.test_directoryÚsymlinkzos.symlink not availablec Csxzt t ¡t¡Wn6ttfyJ}zt t|ƒ¡‚WYd}~n2d}~00|  ¡\}}|  |dd¡|  d|¡dS)NrÚlZLNK) rgrŽÚgetcwdrriÚNotImplementedErrorÚunittestZSkipTestÚstrrtrxr‚)rkÚerrrprsrlrlrmÚ test_link¡s$ zTestFilemode.test_linkÚmkfifozos.mkfifo not availablec Cslzt td¡Wn2tyB}z| d|¡WYd}~n d}~00| ¡\}}| |d¡| d|¡dS)Nr;zos.mkfifo(): %sz prwx------ZFIFO)rgr–rÚPermissionErrorZskipTestrtrxr‚)rkÚerprsrlrlrmÚ test_fifo¬s$  zTestFilemode.test_fifor„zrequires PosixcCsŠtj tj¡r>|jtjdd\}}| |dd¡| d|¡dD]B}tj |¡rB|j|dd\}}| |dd¡| d|¡q†qBdS) NF)rorÚcZCHR)z/dev/sdaz/dev/hdaÚbZBLK)rgÚpathÚexistsÚdevnullrtrxr‚)rkrprsZblockdevrlrlrmÚ test_devices¶s   zTestFilemode.test_devicescCsbt tj¡B}| t¡| ¡\}}| |dd¡| d|¡Wdƒn1sT0YdS)NrÚsZSOCK)ÚsocketÚAF_UNIXÚbindrrtrxr‚)rkr rprsrlrlrmÚ test_socketÄs   zTestFilemode.test_socketcCsÞ|j ¡D]"\}}t|j|ƒ}| |||¡q |j ¡D]"\}}t|j|ƒ}| |||¡q8|jD]}t|j|ƒ}| |t¡qb|j D]}t|j|ƒ}| |t¡q†|j D].}t|j|ƒ}|  t |ƒ¡| |dƒd¡qªdS)Nr) Ú stat_structÚitemsrvrqrxÚpermission_bitsÚ file_flagsZassertIsInstanceÚintÚformatsrzr|Úcallable)rkÚkeyÚvalueÚmodvaluerrlrlrmÚtest_module_attributesÌs         z#TestFilemode.test_module_attributesÚwin32z-FILE_ATTRIBUTE_* constants are Win32 specificcCsJt|j ¡ƒD]6\}}| t|j|ƒ|¡t|j|ƒ}| |||¡qdSrf)ÚsortedÚfile_attributesr¦r|Úhasattrrqrvrx)rkr¬r­r®rlrlrmÚtest_file_attribute_constantsÞs z*TestFilemode.test_file_attribute_constants) Ú__name__Ú __module__Ú __qualname__rqr¨rªrzr¥r§r²rnZtearDownrrtr‚r‰rr’Z skipUnlessr³rgr•r™r}rŸrZskip_unless_bind_unix_socketr¤r¯ÚsysÚplatformr´rlrlrlrmr söíï&      ÿrc@seZdZeZdS)ÚTestFilemodeCStatN)rµr¶r·Úc_statrqrlrlrlrmrºçsrºc@seZdZeZdS)ÚTestFilemodePyStatN)rµr¶r·Úpy_statrqrlrlrlrmr¼ësr¼Ú__main__)r’rgr¡r¸Z test.supportrrrr»r½rZTestCaserºr¼rµÚmainrlrlrlrmÚs ]