
    daf#                        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$                          yy)    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j4                  dMk(  dN      dO        Zej:                  dP        ZdQ Z ej,                  e jB                  dRk(  dS      dT        Z"y)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               y # t        $ r- 	 t        j                  t               Y y # t        $ r Y Y y w xY ww xY wN)osremover   OSErrorrmdir)selfs    )/root/Python-3.12.4/Lib/test/test_stat.pysetUpzTestFilemode.setUpQ   sE    	IIf 	  	s&    	AA	A
AAATc                     |r t        j                  |      j                  }nt        j                  |      j                  }| j                  j                  |      }||fS rl   )rm   lstatst_moder   statmodfilemode)rq   fnameru   rv   modestrs        rr   get_modezTestFilemode.get_mode[   sJ    hhuo--Gggen,,G,,''0    c                    t        | j                  d|j                  d      z         }| j                  | j                  j	                  |      |       d|z   }| j
                  D ]`  }t        | j                  |d       }|||k(  rt        |      -||k(  r| j                   ||             J| j                   ||             b y )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    dllFT[[-=$=>,,T2C8D=)) 		-H4<<48D|x'$X..8#T
+  d,		-r|   c                 N   t        t        d      5  	 d d d        t        j                  dk(  r-t        j                  t        d       | j                         \  }}| j                  |d       | j                  d|       | j                  | j                  j                  |      | j                  j                         t        j                  t        d       | j                         \  }}| j                  |d       | j                  d|       | j                  | j                  j                  |      | j                  j                         t        j                  t        d       | j                         \  }}| j                  |d	       | j                  d|       | j                  | j                  j                  |      | j                  j                         t        j                  t        d
       | j                         \  }}| j                  d|       | j                  |d       | j                  | j                  j                  |      d
       y t        j                  t        d       | j                         \  }}| j                  |d d d       | j                  d|       | j                  | j                  j                  |      d
       t        j                  t        d       | j                         \  }}| j                  |d d d       | j                  d|       | j                  | j                  j                  |      | j                  j                         | j                  | j                  j                  |      d       y # 1 sw Y   xY w)NwposixrE   z
-rwx------REGrP   z
----rwx---r3   z
-------rwxi$  z
-r--r--r--i@  r/   z-r-z-rwi  )openr   rm   r   chmodr{   r   r   rw   S_IMODErD   rO   rV   r   r   rq   rv   rz   s      rr   	test_modezTestFilemode.test_modet   s   &# 		77gHHVU##}}GWWl3OOE7+T\\11':!\\113 HHVU##}}GWWl3OOE7+T\\11':!\\113 HHVU##}}GWWl3OOE7+T\\11':!\\113 HHVU##}}GWOOE7+Wl3T\\11':EBHHVU##}}GWWRa[%0OOE7+T\\11':EBHHVU##}}GWWRa[%0OOE7+T\\009!\\113T\\11':EBU	 	s   NN$c                 *   t        j                  t               t        j                  t        d       | j	                         \  }}| j                  d|       t         j                  dk(  r| j                  |d       y | j                  |d   d       y )NrE   DIRr   z
drwx------r   d)rm   mkdirr   r   r{   r   r   r   r   s      rr   test_directoryzTestFilemode.test_directory   sj    

==?w'77gWl3WQZ-r|   c                 <   	 t        j                  t        j                         t               | j	                         \  }}| j                  |d   d       | j                  d|       y # 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|    	,JJryy{F+  $}}GWWQZ-OOE7+ ,- 	.##CH--	.s   ,A) )B8BBmkfifozos.mkfifo not availablec                    t         j                  dk(  r%t        j                  j	                  dt
              }nt
        }| j                  t        j                  |       	 t        j                  |d       | j                  |      \  }}| j                  |d       | j                  d|       y # t        $ r}| j                  d|z         Y d }~[d }~ww xY w)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7II	(()4	1IIi'  ==3,/(	  	1MM+a/00	1s    B/ /	C8CCr   zrequires Posixc                    t         j                  j                  t         j                        rK| j	                  t         j                  d      \  }}| j                  |d   d       | j                  d|       dD ]`  }t         j                  j                  |      s#| j	                  |d      \  }}| j                  |d   d       | j                  d|        y  y )	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    77>>"**%#}}RZZu}EGWWQZ-OOE7+0 	Hww~~h'#'===#G   S1w/	r|   c                    t        j                   t         j                        5 }|j                  t               | j	                         \  }}| j                  |d   d       | j                  d|       d d d        y # 1 sw Y   y xY w)Nr   sSOCK)socketAF_UNIXbindr   r{   r   r   )rq   r   rv   rz   s       rr   test_socketzTestFilemode.test_socket   sf    ]]6>>* 	-aFF6N#}}GWWQZ-OOFG,		- 	- 	-s   AA==Bc                    | j                   j                         D ].  \  }}t        | j                  |      }| j	                  |||       0 | j
                  j                         D ].  \  }}t        | j                  |      }| j	                  |||       0 | j                  D ].  }t        | j                  |      }| j                  |t               0 | j                  D ].  }t        | j                  |      }| j                  |t               0 | j                  D ]J  }t        | j                  |      }| j                  t        |             | j	                   |d      d       L y )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   sA   **002 	3JCt||S1HUHc2	3 ..446 	3JCt||S1HUHc2	3 ?? 	1Ct||S1H!!(C0	1 << 	1Ct||S1H!!(C0	1 $$ 	)C4<<-DOOHTN+T!Wa(	)r|   win32z-FILE_ATTRIBUTE_* constants are Win32 specificc                     t        | j                  j                               D ]T  \  }}| j                  t	        | j
                  |      |       t        | j
                  |      }| j                  |||       V y rl   )sortedfile_attributesr   r   hasattrrw   r   r   )rq   r   r   r   s       rr   test_file_attribute_constantsz*TestFilemode.test_file_attribute_constants   sf     !!5!5!;!;!=> 	3JCOOGDLL#6<t||S1HUHc2	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JIG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  -" ((+C )+CZ ((. ). "", #, XX.0IJ) K) XG+-=> ? //- 0-)$ X0HJ3J3r|   r   c                       e Zd ZeZy)TestFilemodeCStatN)r   r   r   c_statrw   r   r|   rr   r   r      s    Gr|   r   c                       e Zd ZeZy)TestFilemodePyStatN)r   r   r   py_statrw   r   r|   rr   r   r      s    Gr|   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      s     	  
 " & : ) 
VG9	5
fwi
8g3 g3Th&7&7 x'8'8  zHMMO r|   