
    <ey"                     &   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
  eddg          Z eddg	          Z G d
 d          Z G d dee j                  Z G d dee j                  Zedk    r e j                     dS dS )    N)	os_helper)socket_helper)import_fresh_module)TESTFNstat_stat)fresh)blockedc                      e Zd ZdZh dZh dZh dZddddd	d
ddddd
Zi 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+Zi d,d%d-dd.d d/d'd0d1d2dd3d4d5dd6d7d8d9d:d;d<dd=dd>dd?d	d@ddAdBZ	dC Z
e
ZedDfdEZdF Zej        dG             Zej        dH             Zej        dI             Z ej         eedJ          dK          dL             Z ej        ej        dMk    dN          dO             Zej        dP             ZdQ Z ej        e j!        dRk    dS          dT             Z"dS )UTestFilemodeN>   	SF_APPEND	UF_APPEND	UF_HIDDEN	UF_NODUMP	UF_OPAQUESF_ARCHIVEDSF_NOUNLINKSF_SNAPSHOTUF_NOUNLINKSF_IMMUTABLEUF_IMMUTABLEUF_COMPRESSED>
   S_IFBLKS_IFCHRS_IFDIRS_IFIFOS_IFLNKS_IFREGS_IFWHTS_IFDOORS_IFPORTS_IFSOCK>
   S_ISBLKS_ISCHRS_ISDIRS_ISLNKS_ISREGS_ISWHTS_ISDOORS_ISFIFOS_ISPORTS_ISSOCKr                           	   )
ST_MODEST_INOST_DEVST_NLINKST_UIDST_GIDST_SIZEST_ATIMEST_MTIMEST_CTIMES_ISUIDi   S_ISGIDi   S_ENFMTS_ISVTXi   S_IRWXU  S_IRUSR   S_IREADS_IWUSR   S_IWRITES_IXUSR@   S_IEXECS_IRWXG8   S_IRGRP    S_IWGRP   S_IXGRPS_IRWXOS_IROTH)S_IWOTHS_IXOTHFILE_ATTRIBUTE_ARCHIVEFILE_ATTRIBUTE_COMPRESSEDFILE_ATTRIBUTE_DEVICEFILE_ATTRIBUTE_DIRECTORYFILE_ATTRIBUTE_ENCRYPTEDi @  FILE_ATTRIBUTE_HIDDENFILE_ATTRIBUTE_INTEGRITY_STREAMi   FILE_ATTRIBUTE_NORMAL"FILE_ATTRIBUTE_NOT_CONTENT_INDEXEDi    FILE_ATTRIBUTE_NO_SCRUB_DATAi   FILE_ATTRIBUTE_OFFLINEi   FILE_ATTRIBUTE_READONLYFILE_ATTRIBUTE_REPARSE_POINTFILE_ATTRIBUTE_SPARSE_FILEFILE_ATTRIBUTE_SYSTEMFILE_ATTRIBUTE_TEMPORARYFILE_ATTRIBUTE_VIRTUALi   c                     	 t          j        t                     d S # t          $ r0 	 t          j        t                     Y d S # t          $ r Y Y d S w xY ww xY wN)osremover   OSErrorrmdir)selfs    %/usr/lib/python3.11/test/test_stat.pysetUpzTestFilemode.setUpQ   sz    	If 	 	 	         	s&    
AA
AAAATc                     |rt          j        |          j        }nt          j        |          j        }| j                            |          }||fS rl   )rm   lstatst_moder   statmodfilemode)rq   fnameru   rv   modestrs        rr   get_modezTestFilemode.get_mode[   sL     	-huoo-GGgenn,G,''00    c                    t          | j        d|                    d          z             }|                     | j                            |          |           d|z   }| j        D ]s}t          | j        |d           }|||k    rt          |          0||k    r|                      ||                     U|                      ||                     td S )NS_IFFS_IS)	getattrrw   lstripassertEqualS_IFMTformat_funcs
ValueError
assertTrueassertFalse)rq   namemodefmttestnamefuncnamefuncs          rr   
assertS_ISzTestFilemode.assertS_ISc   s    dlFT[[-=-=$=>>,,T22C888D=) 		- 		-H4<488D|x''$X...8##T

++++  d,,,,		- 		-r|   c                 V   t          t          d          5  	 d d d            n# 1 swxY w Y   t          j        dk    rLt          j        t          d           |                                 \  }}|                     |d           |                     d|           |                     | j        	                    |          | j        j
                   t          j        t          d           |                                 \  }}|                     |d           |                     d|           |                     | j        	                    |          | j        j                   t          j        t          d           |                                 \  }}|                     |d	           |                     d|           |                     | j        	                    |          | j        j                   t          j        t          d
           |                                 \  }}|                     d|           |                     |d           |                     | j        	                    |          d
           d S t          j        t          d           |                                 \  }}|                     |d d         d           |                     d|           |                     | j                            |          | j        j                   d S )NwposixrE   z
-rwx------REGrP   z
----rwx---r3   z
-------rwxi$  z
-r--r--r--r/   z-rw)openr   rm   r   chmodr{   r   r   rw   S_IMODErD   rO   rV   r   r   rq   rv   rz   s      rr   	test_modezTestFilemode.test_modet   s	   &# 	 		 	 	 	 	 	 	 	 	 	 	 	 	 	 	7gHVU####}}GWWl333OOE7+++T\11'::!\13 3 3 HVU####}}GWWl333OOE7+++T\11'::!\13 3 3 HVU####}}GWWl333OOE7+++T\11'::!\13 3 3 HVU####}}GWOOE7+++Wl333T\11'::EBBBBBHVU####}}GWWRaR[%000OOE7+++T\0099!\13 3 3 3 3s   $((c                 N   t          j        t                     t          j        t          d           |                                 \  }}|                     d|           t           j        dk    r|                     |d           d S |                     |d         d           d S )NrE   DIRr   z
drwx------r   d)rm   mkdirr   r   r{   r   r   r   r   s      rr   test_directoryzTestFilemode.test_directory   s    

==??w'''7gWl33333WQZ-----r|   c                 d   	 t          j        t          j                    t                     |                                 \  }}|                     |d         d           |                     d|           d S # t          t          f$ r&}t          j
        t          |                    d }~ww xY w)Nr   lLNK)rm   symlinkgetcwdr   r{   r   r   ro   NotImplementedErrorunittestSkipTeststr)rq   rv   rz   errs       rr   	test_linkzTestFilemode.test_link   s    	,Jry{{F+++  $}}GWWQZ---OOE7+++++ ,- 	. 	. 	.#CHH---	.s   +A8 8B/	!B**B/mkfifozos.mkfifo not availablec                    t           j        dk    r&t          j                            dt
                    }nt
          }|                     t          j        |           	 t          j	        |d           n/# t          $ r"}|                     d|z             Y d }~nd }~ww xY w|                     |          \  }}|                     |d           |                     d|           d S )Nvxworksz/fifos/rE   zos.mkfifo(): %sz
prwx------FIFO)sysplatformrm   pathjoinr   
addCleanupr   unlinkr   PermissionErrorskipTestr{   r   r   )rq   	fifo_patherv   rz   s        rr   	test_fifozTestFilemode.test_fifo   s    <9$$Y77III	()444	1Ii'''' 	1 	1 	1MM+a/00000000	1==33,///(((((s   A5 5
B!?BB!r   zrequires Posixc                    t           j                            t           j                  rV|                     t           j        d          \  }}|                     |d         d           |                     d|           dD ]p}t           j                            |          rO|                     |d          \  }}|                     |d         d           |                     d|            d S qd S )	NF)ru   r   cCHR)z/dev/sdaz/dev/hdabBLK)rm   r   existsdevnullr{   r   r   )rq   rv   rz   blockdevs       rr   test_deviceszTestFilemode.test_devices   s    7>>"*%% 	,#}}RZu}EEGWWQZ---OOE7+++0 	 	Hw~~h'' #'===#G#G   S111w///		 	r|   c                 :   t          j         t           j                  5 }|                    t                     |                                 \  }}|                     |d         d           |                     d|           d d d            d S # 1 swxY w Y   d S )Nr   sSOCK)socketAF_UNIXbindr   r{   r   r   )rq   r   rv   rz   s       rr   test_socketzTestFilemode.test_socket   s    ]6>** 	-aFF6NNN#}}GWWQZ---OOFG,,,		- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   A$BBBc                    | j                                         D ]1\  }}t          | j        |          }|                     |||           2| j                                        D ]1\  }}t          | j        |          }|                     |||           2| j        D ]2}t          | j        |          }|                     |t                     3| j	        D ]2}t          | j        |          }|                     |t                     3| j
        D ]X}t          | j        |          }|                     t          |                     |                      |d          d           Yd S )Nr   )stat_structitemsr   rw   r   permission_bits
file_flagsassertIsInstanceintformatsr   r   callable)rq   keyvaluemodvaluer   s        rr   test_module_attributesz#TestFilemode.test_module_attributes   sz   *0022 	3 	3JCt|S11HUHc2222.4466 	3 	3JCt|S11HUHc2222? 	1 	1Ct|S11H!!(C0000< 	1 	1Ct|S11H!!(C0000$ 	) 	)C4<--DOOHTNN+++TT!WWa((((	) 	)r|   win32z-FILE_ATTRIBUTE_* constants are Win32 specificc                    t          | j                                                  D ]Z\  }}|                     t	          | j        |          |           t          | j        |          }|                     |||           [d S rl   )sortedfile_attributesr   r   hasattrrw   r   r   )rq   r   r   r   s       rr   test_file_attribute_constantsz*TestFilemode.test_file_attribute_constants   s     !!5!;!;!=!=>> 	3 	3JCOOGDL#66<<<t|S11HUHc2222	3 	3r|   )#__name__
__module____qualname__rw   r   r   r   r   r   r   rs   tearDownr   r{   r   r   skip_unless_working_chmodr   r   skip_unless_symlinkr   r   
skipUnlessr   rm   r   r   r   r   skip_unless_bind_unix_socketr   r   r   r   r    r|   rr   r   r      s       GK K KJI I IGN N NL 
 
K66 	6 	6	
 	5 	5 	5 	5 	E 	5 	5 	5 	5 	5 	5  	5!" 	5#$ '  O,) ")#T) 	 ) 	#B	)
 	#E) 	 ) 	*5) 	 ) 	-d) 	') 	!$) 	"1) 	') 	%c) 	 )  	#C!)" 	!%#)O&   H#4        - - -" ($3 $3 )($3L (. . )(. ", , #", XX..0IJJ) ) KJ) XG+-=>>  ?> /- - 0/-) ) )$ X0HJ J3 3J J3 3 3r|   r   c                       e Zd ZeZdS )TestFilemodeCStatN)r   r   r   c_statrw   r   r|   rr   r   r      s        GGGr|   r   c                       e Zd ZeZdS )TestFilemodePyStatN)r   r   r   py_statrw   r   r|   rr   r   r      s        GGGr|   r   __main__)r   rm   r   r   test.supportr   r   test.support.import_helperr   test.support.os_helperr   r   r   r   TestCaser   r   r   mainr   r|   rr   <module>r      sV    				  



 " " " " " " & & & & & & : : : : : : ) ) ) ) ) ) 
	VG9	5	5	5

fwi
8
8
8`3 `3 `3 `3 `3 `3 `3 `3F    h&7       x'8    zHMOOOOO r|   