
    0hh4                     <   S SK r S SKrS SKrS SKrS SKJrJrJr  S SKJ	r	  S SK
Jr  \	" SS/S9r\	" SS/S9r " S	 S
5      r\ R                  " \SL S5       " S S\\ R                   5      5       r " S S\\ R                   5      r\S:X  a  \ R(                  " 5         gg)    N)is_apple	os_helpersocket_helper)import_fresh_module)TESTFNstat_stat)fresh)blockedc                      \ rS rSrSr1 Skr1 Skr1 SkrSSSS	S
SSSSSS.
r0 SS_SS_SS_SS_SS_SS_SS_SS_SS_S S!_S"S!_S#S$_S%S&_S'S(_S)S_S*S_S+S
_SSS,.Er	0 S-S&_S.S_S/S!_S0S(_S1S2_S3S_S4S5_S6S_S7S8_S9S:_S;S<_S=S_S>S_S?S_S@S
_SAS_SBSC_r
SD r\r\SE4SF jrSG r\R"                  SH 5       r\R"                  SI 5       r\R(                  SJ 5       r\R.                  " \" \SK5      SL5      SM 5       r\R.                  " \R6                  SN:H  SO5      SP 5       r\R<                  SQ 5       rSR r SS r!\R.                  " \"RF                  ST:H  SU5      SV 5       r$\R.                  " \"RF                  SW:H  SX5      SY 5       r%SZr&g)[TestFilemode   N>   	SF_APPEND	UF_APPEND	UF_HIDDEN	UF_NODUMP	UF_OPAQUE
UF_TRACKEDSF_ARCHIVEDSF_DATALESSSF_FIRMLINKSF_NOUNLINKSF_SETTABLESF_SNAPSHOTUF_NOUNLINKUF_SETTABLESF_IMMUTABLEUF_DATAVAULTUF_IMMUTABLESF_RESTRICTED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_ISUID   S_ISGID   S_ENFMTS_ISVTX   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_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_VIRTUAL   c                      [         R                  " [        5        g ! [         a/     [         R                  " [        5         g ! [         a      g f = ff = fN)osremover   OSErrorrmdirselfs    7/opt/python-3.13.8/usr/lib/python3.13/test/test_stat.pysetUpTestFilemode.setUpR   sE    	IIf 	  	s&    
AA
AAAATc                     U(       a!  [         R                  " U5      R                  nO [         R                  " U5      R                  nU R                  R                  U5      nX44$ r~   )r   lstatst_moder   statmodfilemode)r   fnamer   r   modestrs        r   get_modeTestFilemode.get_mode\   sH    hhuo--Gggen,,G,,''0    c                    [        U R                  SUR                  S5      -   5      nU R                  U R                  R	                  U5      U5        SU-   nU R
                   Hd  n[        U R                  US 5      nUc  XT:X  a  [        U5      eM/  XT:X  a  U R                  U" U5      5        MM  U R                  U" U5      5        Mf     g )NS_IFFS_IS)	getattrr   lstripassertEqualS_IFMTformat_funcs
ValueError
assertTrueassertFalse)r   namemodefmttestnamefuncnamefuncs          r   
assertS_ISTestFilemode.assertS_ISd   s    dllFT[[-=$=>,,T2C8D=))H4<<48D|'$X..#T
+  d, *r   c                    [        [        S5          S S S 5        [        R                  S:X  GaZ  [        R                  " [        S5        U R                  5       u  pU R                  US5        U R                  SU5        U R                  R                  U5      nU R                  UU R                  R                  5        U R                  U R                  R                  U5      S5        [        R                  " [        S5        U R                  5       u  pU R                  US5        U R                  SU5        U R                  U R                  R                  U5      U R                  R                  5        [        R                  " [        S	5        U R                  5       u  pU R                  US
5        U R                  SU5        U R                  U R                  R                  U5      U R                  R                  5        [        R                  " [        S5        U R                  5       u  pU R                  SU5        U R                  US5        U R                  U R                  R                  U5      S5        g [        R                  " [        S5        U R                  5       u  pU R                  US S S5        U R                  SU5        U R                  U R                  R                  U5      S5        [        R                  " [        S5        U R                  5       u  pU R                  US S S5        U R                  SU5        U R                  U R                  R                  U5      U R                  R                  5        U R                  U R                  R                  U5      S5        g ! , (       d  f       GN= f)NwposixrQ   z
-rwx------REGz
?rwx------r\   z
----rwx---r<   z
-------rwxi$  z
-r--r--r--i@  r8   z-r-z-rwi  )openr   r   r   chmodr   r   r   r   S_IMODErP   r   r[   rb   r   r'   )r   r   r   imodes       r   	test_modeTestFilemode.test_modeu   s   &# 77gHHVU##}}GWl3OOE7+LL((1EU!\\113T\\2259)+ HHVU##}}GWl3OOE7+T\\11':!\\113 HHVU##}}GWl3OOE7+T\\11':!\\113 HHVU##}}GOOE7+Wl3T\\11':EBHHVU##}}GWRa[%0OOE7+T\\11':EBHHVU##}}GWRa[%0OOE7+T\\009!\\113T\\11':EB[ s   O
Oc                 .   [         R                  " [        5        [         R                  " [        S5        U R	                  5       u  pU R                  SU5        [         R                  S:X  a  U R                  US5        g U R                  US   S5        g )NrQ   DIRr   z
drwx------r   d)r   mkdirr   r   r   r   r   r   )r   r   r   s      r   test_directoryTestFilemode.test_directory   sh    

==?w'77gWl3WQZ-r   c                 B    [         R                  " [         R                  " 5       [        5        U R	                  5       u  pU R                  US   S5        U R                  SU5        g ! [        [        4 a$  n[        R                  " [        U5      5      eS nAff = f)Nr   lLNK)r   symlinkgetcwdr   r   r   r   r   NotImplementedErrorunittestSkipTeststr)r   r   r   errs       r   	test_linkTestFilemode.test_link   sz    	,JJryy{F+  $}}GWQZ-OOE7+ ,- 	.##CH--	.s   .A* *B:BBmkfifozos.mkfifo not availablec                    [         R                  S:X  a%  [        R                  R	                  S[
        5      nO[
        nU R                  [        R                  U5         [        R                  " US5        U R                  U5      u  p4U R                  US5        U R                  SU5        g ! [         a  nU R                  SU-  5         S nAN[S nAff = f)Nvxworksz/fifos/rQ   zos.mkfifo(): %sz
prwx------FIFO)sysplatformr   pathjoinr   
addCleanupr   unlinkr   PermissionErrorskipTestr   r   r   )r   	fifo_pather   r   s        r   	test_fifoTestFilemode.test_fifo   s    <<9$Y7II	(()4	1IIi'  ==3,/(	  	1MM+a/00	1s   !B0 0
C:CCr   zrequires Posixc                    [         R                  R                  [         R                  5      (       aG  U R	                  [         R                  SS9u  pU R                  US   S5        U R                  SU5        S Hb  n[         R                  R                  U5      (       d  M)  U R	                  USS9u  pU R                  US   S5        U R                  SU5          g    g )	NF)r   r   cCHR)z/dev/sdaz/dev/hdabBLK)r   r   existsdevnullr   r   r   )r   r   r   blockdevs       r   test_devicesTestFilemode.test_devices   s    77>>"**%%#}}RZZu}EGWQZ-OOE7+0Hww~~h''#'===#G   S1w/ 1r   c                    [         R                   " [         R                  5       nUR                  [        5        U R	                  5       u  p#U R                  US   S5        U R                  SU5        S S S 5        g ! , (       d  f       g = f)Nr   sSOCK)socketAF_UNIXbindr   r   r   r   )r   r   r   r   s       r   test_socketTestFilemode.test_socket   s[    ]]6>>*aFF6N#}}GWQZ-OOFG,	 +**s   AA==
Bc                    U R                   R                  5        H-  u  p[        U R                  U5      nU R	                  X#U5        M/     U R
                  R                  5        H-  u  p[        U R                  U5      nU R	                  X#U5        M/     U R                   H/  n[        U R                  U5      nU R                  U[        5        M1     U R                   H/  n[        U R                  U5      nU R                  U[        5        M1     U R                   HK  n[        U R                  U5      nU R                  [        U5      5        U R	                  U" S5      S5        MM     g )Nr   )stat_structitemsr   r   r   permission_bits
file_flagsassertIsInstanceintformatsr   r   callable)r   keyvaluemodvaluer   s        r   test_module_attributes#TestFilemode.test_module_attributes   s    **002JCt||S1HUc2 3 ..446JCt||S1HUc2 7 ??Ct||S1H!!(C0 # <<Ct||S1H!!(C0   $$C4<<-DOOHTN+T!Wa( %r   c                    U R                  U R                  R                  U R                  R                  -  5        U R                   GH<  nUR                  S5      (       aB  U R                  [        U R                  U5      U R                  R                  -  U S35        M\  [        (       a  U R                  [        L a  US:X  a|  U R                  U R                  R                  U R                  R                  -  S5        U R                  U R                  R                  U R                  R                  -  S5        M  U R                  [        U R                  U5      U R                  R                  -  U S35        GM?     g )NUFz not in UF_SETTABLEr   zSF_DATALESS not in SF_SYNTHETICzSF_DATALESS in SF_SETTABLEz notin SF_SETTABLE)r   r   r   r   r   
startswithr   r   r   c_statr   SF_SYNTHETIC)r   flags     r   test_flags_consistent"TestFilemode.test_flags_consistent   s   11DLL4L4LLMOODt$$d ;dll>V>V V[_Z``sXtudllf49N 8 84<<;T;T TVwx  !9!9DLL<T<T!TVrsd ;dll>V>V V[_Z``rXst $r   win32z-FILE_ATTRIBUTE_* constants are Win32 specificc                     [        U R                  R                  5       5       HS  u  pU R                  [	        U R
                  U5      U5        [        U R
                  U5      nU R                  X#U5        MU     g r~   )sortedfile_attributesr   r   hasattrr   r   r   )r   r   r   r   s       r   test_file_attribute_constants*TestFilemode.test_file_attribute_constants   s]     !!5!5!;!;!=>JCOOGDLL#6<t||S1HUc2 ?r   darwinzmacOS system checkc                 "   U R                  U R                  R                  S5        U R                  U R                  R                  S5        U R                  U R                  R                  S5        U R                  U R                  R
                  S5        U R                  U R                  R                  S5        U R                  U R                  R                  S5        U R                  U R                  R                  S5        U R                  U R                  R                  S5        U R                  U R                  R                  S	5        U R                  [        L as  U R                  U R                  R                  S
5        U R                  U R                  R                  S5        U R                  U R                  R                  S5        O&U R                  U R                  R                  S5        U R                  U R                  R                  S5        U R                  U R                  R                   S5        U R                  U R                  R"                  S5        U R                  U R                  R$                  S5        U R                  U R                  R&                  S5        U R                  U R                  R(                  S5        U R                  U R                  R*                  S5        U R-                  [/        U R                  R0                  [2        5      5        U R                  U R                  R4                  S5        U R                  U R                  R6                  S5        U R                  U R                  R8                  S5        U R                  U R                  R:                  S5        U R                  U R                  R<                  S	5        U R                  U R                  R>                  S5        U R                  U R                  R@                  S5        U R                  [        L a&  U R                  U R                  RB                  S5        U R                  U R                  RD                  S5        U R                  U R                  RF                  S5        U R                  U R                  RH                  S5        U R                  U R                  RJ                  S5        U R                  U R                  RL                  S5        U R                  U R                  RN                  S5        U R                  U R                  RP                  S5        U R                  U R                  RR                  S5        U R                  U R                  RT                  S 5        U R                  U R                  RV                  S5        U R                  U R                  RX                  S5        U R                  U R                  RZ                  S5        U R                  U R                  R\                  S!5        U R                  U R                  R^                  S"5        U R                  U R                  R`                  S#5        U R-                  [c        U R                  S$5      5        U R                  U R                  Rd                  U R                  RF                  5        U R                  U R                  Rf                  U R                  RH                  5        U R                  U R                  Rh                  U R                  RJ                  5        g )%Ni  r6   r7   r9   r=   r^   rY   rV   rn   i   i  ?l        l      r|   rs   i   i   i   i   i   @ru   rq   rk   i `  i   i   i   rQ   rS   r\   r`   r<   rJ   rL   rO   S_ISTXT)5r   r   r   r   r   r   r   r!   r   r   r   r   SF_SUPPORTEDr   r   r   r   r   r    r   r   r   r   
isinstancer   r   r%   r#   r$   r"   r'   r&   r+   r(   rP   rR   rU   rX   r[   r]   r_   ra   rb   rc   rd   re   rI   rK   rN   r   rT   rW   rZ   r   s    r   test_macosx_attribute_values)TestFilemode.test_macosx_attribute_values  s   11:>//<22J?//<//<33Z@00*=22J?//<<<6!T\\66
CT\\55zBT\\66
CT\\55zB11:>22J?//<33Z@11:>11:>11:>DLL$7$7=>--x8--x8--x8--x8--x8--x8..9<<6!T\\118<--x8--x8--x8--x8--x8--x8--x8--x8--x8--x8--x8--x8--x8--x8--x8y9:--t||/C/CD..0D0DE--t||/C/CDr    )'__name__
__module____qualname____firstlineno__r   r   r   r   r   r   r   r   tearDownr   r   r   r   skip_unless_working_chmodr   r   skip_unless_symlinkr   r   
skipUnlessr   r   r   r   r   r   skip_unless_bind_unix_socketr   r   r   r   r   r   r  __static_attributes__r  r   r   r   r      s3   G?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` ((. ). "", #, X.0IJ) K) G+-=> ? //- 0-)$
u 0HJ3J3 13GH8E I8Er   r   zneed _stat extensionc                       \ rS rSr\rSrg)TestFilemodeCStatiD  r  N)r	  r
  r  r  r   r   r  r  r   r   r  r  D  s    Gr   r  c                       \ rS rSr\rSrg)TestFilemodePyStatiI  r  N)r	  r
  r  r  py_statr   r  r  r   r   r  r  I  s    Gr   r  __main__)r   r   r   r   test.supportr   r   r   test.support.import_helperr   test.support.os_helperr   r   r  r   skipIfTestCaser  r  r	  mainr  r   r   <module>r     s     	  
 ; ; : ) 
VG9	5
fwi
8sE sEn	 
4!78h&7&7  9x'8'8  zMMO r   