a ze1!@sddlZddlZddlZddlZddlmZddlmZmZeddgdZeddgdZ Gdd d Z Gd d d e ej Z Gd d d e ej Z edkredS)N) socket_helper)TESTFNimport_fresh_modulestat_stat)Zfresh)Zblockedc@sFeZdZdZhdZhdZhdZddddd d d d d dd Zddddddddddddddd d d dddZddddddddddddddd dd d!Z d"d#Z e Z e d$fd%d&Z d'd(Zd)d*Zd+d,Zeeed-d.d/d0Zeeed1d2d3d4Zeejd5kd6d7d8Zejd9d:Zd;d<Zeejd=kd>d?d@ZdS)A TestFilemodeN> SF_NOUNLINK UF_NODUMP SF_IMMUTABLE SF_SNAPSHOT UF_IMMUTABLE UF_OPAQUE SF_ARCHIVED UF_HIDDEN UF_APPEND SF_APPEND UF_COMPRESSED UF_NOUNLINK> S_IFREGS_IFPORTS_IFDIRS_IFDOORS_IFBLKS_IFIFOS_IFLNKS_IFWHTS_IFSOCKS_IFCHR> S_ISWHTS_ISFIFOS_ISDOORS_ISLNKS_ISBLKS_ISREGS_ISCHRS_ISPORTS_ISSOCKS_ISDIRr ) ST_MODEST_INOST_DEVST_NLINKST_UIDST_GIDST_SIZEST_ATIMEST_MTIMEST_CTIMEiii@8 )S_ISUIDS_ISGIDS_ENFMTS_ISVTXS_IRWXUS_IRUSRS_IREADS_IWUSRS_IWRITES_IXUSRS_IEXECS_IRWXGS_IRGRPS_IWGRPS_IXGRPS_IRWXOS_IROTHS_IWOTHS_IXOTHi@ii iii)FILE_ATTRIBUTE_ARCHIVEFILE_ATTRIBUTE_COMPRESSEDFILE_ATTRIBUTE_DEVICEFILE_ATTRIBUTE_DIRECTORYFILE_ATTRIBUTE_ENCRYPTEDFILE_ATTRIBUTE_HIDDENFILE_ATTRIBUTE_INTEGRITY_STREAMFILE_ATTRIBUTE_NORMAL"FILE_ATTRIBUTE_NOT_CONTENT_INDEXEDFILE_ATTRIBUTE_NO_SCRUB_DATAFILE_ATTRIBUTE_OFFLINEFILE_ATTRIBUTE_READONLYFILE_ATTRIBUTE_REPARSE_POINTFILE_ATTRIBUTE_SPARSE_FILEFILE_ATTRIBUTE_SYSTEMFILE_ATTRIBUTE_TEMPORARYFILE_ATTRIBUTE_VIRTUALc CsHzttWn4tyBzttWnty<Yn0Yn0dSN)osremoverOSErrorrmdir)selfrlB/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_stat.pysetUpNs  zTestFilemode.setUpTcCs2|rt|j}n t|j}|j|}||fSrf)rglstatst_moderstatmodfilemode)rkZfnamerorpmodestrrlrlrmget_modeXs   zTestFilemode.get_modecCst|jd|d}||j||d|}|jD]R}t|j|d}|durd||kr8t|q8||kr||||q8|||q8dS)NZS_IFFZS_IS) getattrrqlstrip assertEqualS_IFMT format_funcs ValueError assertTrueZ assertFalse)rknamemodefmtZtestnamefuncnamefuncrlrlrm assertS_IS`s zTestFilemode.assertS_IScCsttdWdn1s 0YtjdkrTttd|\}}||d|d|||j ||jj ttd|\}}||d|d|||j ||jj ttd|\}}||d |d|||j ||jj ttd |\}}|d|||d ||j |d nPttd|\}}||dd d |d|||j ||jjdS)Nwposixr;z -rwx------ZREGr?z ----rwx---r.z -------rwxi$z -r--r--r--r*z-rw)openrrgr}chmodrtrxrrqS_IMODErFrMrQryrrkrprsrlrlrm test_modeqsH                     zTestFilemode.test_modecCsZttttd|\}}|d|tjdkrF||dn||dddS)Nr;DIRrz drwx------rd)rgmkdirrrrtrr}rxrrlrlrmtest_directorys     zTestFilemode.test_directorysymlinkzos.symlink not availablec CsxztttWn6ttfyJ}ztt|WYd}~n2d}~00| \}}| |dd| d|dS)NrlZLNK) rgrgetcwdrriNotImplementedErrorunittestZSkipTeststrrtrxr)rkerrrprsrlrlrm test_links$ zTestFilemode.test_linkmkfifozos.mkfifo not availablec CslzttdWn2tyB}z|d|WYd}~n d}~00|\}}||d|d|dS)Nr;zos.mkfifo(): %sz prwx------ZFIFO)rgrrPermissionErrorZskipTestrtrxr)rkerprsrlrlrm test_fifos$  zTestFilemode.test_fiforzrequires PosixcCstjtjr>|jtjdd\}}||dd|d|dD]B}tj|rB|j|dd\}}||dd|d|qqBdS) NF)rorcZCHR)z/dev/sdaz/dev/hdabZBLK)rgpathexistsdevnullrtrxr)rkrprsZblockdevrlrlrm test_devicess   zTestFilemode.test_devicescCsbttjB}|t|\}}||dd|d|Wdn1sT0YdS)NrsZSOCK)socketAF_UNIXbindrrtrxr)rkrrprsrlrlrm test_sockets   zTestFilemode.test_socketcCs|jD]"\}}t|j|}||||q |jD]"\}}t|j|}||||q8|jD]}t|j|}||tqb|j D]}t|j|}||tq|j D].}t|j|}| t |||ddqdS)Nr) stat_structitemsrvrqrxpermission_bits file_flagsZassertIsInstanceintformatsrzr|callable)rkkeyvaluemodvaluerrlrlrmtest_module_attributess         z#TestFilemode.test_module_attributeswin32z-FILE_ATTRIBUTE_* constants are Win32 specificcCsJt|jD]6\}}|t|j||t|j|}||||qdSrf)sortedfile_attributesrr|hasattrrqrvrx)rkrrrrlrlrmtest_file_attribute_constantss z*TestFilemode.test_file_attribute_constants) __name__ __module__ __qualname__rqrrrzrrrrnZtearDownrrtrrrrZ skipUnlessrrgrrr}rrZskip_unless_bind_unix_socketrrsysplatformrrlrlrlrmr s&      rc@seZdZeZdS)TestFilemodeCStatN)rrrc_statrqrlrlrlrmrsrc@seZdZeZdS)TestFilemodePyStatN)rrrpy_statrqrlrlrlrmrsr__main__)rrgrrZ test.supportrrrrrrZTestCaserrrmainrlrlrlrms ]