
    /hh\"                        S r SSKrSSKrSSKr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JrJr  SSKJr  SSKJrJrJr  \" S5      r " S S5      rS	 rS
 r " S S\R0                  5      r\S:X  a  \R6                  " 5         gg)z%Test program for the fcntl C module.
    N)cpython_onlyget_pagesizeis_applerequires_subprocessverbose)import_module)TESTFNunlinkmake_bad_fdfcntlc                        \ rS rSrS rS rSrg)BadFile   c                     Xl         g Nfn)selfr   s     8/opt/python-3.13.8/usr/lib/python3.13/test/test_fcntl.py__init__BadFile.__init__   s        c                     U R                   $ r   r   r   s    r   filenoBadFile.fileno   s    wwr   r   N)__name__
__module____qualname____firstlineno__r   r   __static_attributes__ r   r   r   r      s    r   r   c                     [        U S5      n [        R                  X!5        UR	                  5         g ! [         a     Nf = f! UR	                  5         f = fNwb+)openr   lockfBlockingIOErrorclosefnamecmdfs      r   try_lockf_on_other_process_failr.      sJ    UEAA 	
	   	
	s    4 
AA  AA Ac                     [        U S5      n[        R                  X!5        [        R                  U[        R                  5        UR	                  5         g r$   )r&   r   r'   LOCK_UNr)   r*   s      r   try_lockf_on_other_processr1   %   s5    UEA	KK	KK5==!GGIr   c                      \ rS rSrS rS r\S 5       rS rS r	S r
\S 5       r\R                  " \R                   " 5       R#                  S	5      =(       a    \R$                  " 5       S
:H  =(       d    \R$                  " 5       S:H  S5      S 5       rS r\R                  " \R$                  " 5       S:H  S5      \" 5       S 5       5       r\R                  " \R$                  " 5       S:H  S5      \" 5       S 5       5       r\S 5       r\R                  " \R                  S:g  S5      S 5       r\R6                  " \" \S5      =(       a	    \" \S5      S5      S 5       r\R6                  " \" \S5      S5      S 5       rSr g) 	TestFcntl+   c                     S U l         g r   r-   r   s    r   setUpTestFcntl.setUp-   s	    r   c                     U R                   (       a5  U R                   R                  (       d  U R                   R                  5         [        [        5        g r   )r-   closedr)   r
   r	   r   s    r   tearDownTestFcntl.tearDown0   s'    66$&&--FFLLNvr   c            
      &    [         R                    Sn [        R                  R                  S5      (       d  [        (       aU  [        R                  " S5      S:X  a  SnSnOSnSn[        R                  " X-   U-   S-   S	S	S	[        R                  S	5      nO[        R                  R                  S
5      (       a+  [        R                  " SS	S	S	[        R                  S	S	5      nOp[        R                  S;   a,  [        R                  " S[        R                  S	S	S	S	S	S	5      nO0[        R                  " SU -   S-   [        R                  S	S	S	S	S	5      nU(       a   [        (       a  [        S[        U5      5        U$ ! [         a    Sn  GN{f = f)Nqqll)netbsdfreebsdopenbsdl   ilxxxxhhr   gnukfreebsdqqihhi)zhp-uxB	unixware7hhllliizstruct.pack: )osO_LARGEFILEAttributeErrorsysplatform
startswithr   structcalcsizepackr   F_WRLCKr   printrepr)	start_lenoff_tpid_tlockdatas       r   get_lockdataTestFcntl.get_lockdata5   s<   	NN I LL##$DEExs#q({{5=5#84#?Aq#(==!5H\\$$]33{{8Q1emmQJH\\44{{9emmQ1aANH{{4	>$#6q!QPQSTUHwotH~65  	I	s   F   FFc                     [        [        S5      U l        [        R                  U R                  R	                  5       [        R
                  [        R                  5      n[        (       a  [        SU5        U R                  5       n[        R                  U R                  R	                  5       [        R                  U5      n[        (       a  [        S[        U5      5        U R                  R                  5         g Nwbz#Status from fcntl with O_NONBLOCK: z!String from fcntl with F_SETLKW: )r&   r	   r-   r   r   F_SETFLrL   
O_NONBLOCKr   rV   r\   F_SETLKWrW   r)   r   rvr[   s      r   test_fcntl_filenoTestFcntl.test_fcntl_filenoU   s    fd#[[%--G77<$$&[[%..(C75tBx@r   c                    [        [        S5      U l        [        R                  U R                  [        R                  [
        R                  5      n[        (       a  [        SU5        U R                  5       n[        R                  U R                  [        R                  U5      n[        (       a  [        S[        U5      5        U R                  R                  5         g r_   )r&   r	   r-   r   ra   rL   rb   r   rV   r\   rc   rW   r)   rd   s      r   test_fcntl_file_descriptor$TestFcntl.test_fcntl_file_descriptora   s    fd#[[>77<$$&[[:75tBx@r   c                 :   U R                  [        5         [        R                  S[        R                  [        R
                  5        S S S 5        U R                  [        5         [        R                  [        S5      [        R                  [        R
                  5        S S S 5        U R                  [        5         [        R                  S[        R                  [        R
                  5        S S S 5        U R                  [        5         [        R                  [        S5      [        R                  [        R
                  5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = f)Nspam)assertRaises
ValueErrorr   ra   rL   rb   r   	TypeErrorr   s    r   test_fcntl_bad_fileTestFcntl.test_fcntl_bad_filem   s    z*KKEMM2==9 +z*KKU]]BMMB +y)KKr}}= *y)KKF *) +***))))s/   4E'=E*4E;=F
E'*
E8;
F	
Fc                    [        S5      nUR                  nUR                  nU R                  [        5         [
        R                  US-   [
        R                  [        R                  5        S S S 5        U R                  [        5         [
        R                  [        US-   5      [
        R                  [        R                  5        S S S 5        U R                  [        5         [
        R                  US-
  [
        R                  [        R                  5        S S S 5        U R                  [        5         [
        R                  [        US-
  5      [
        R                  [        R                  5        S S S 5        g ! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       N= f! , (       d  f       g = fN	_testcapi   )
r   INT_MAXINT_MINrn   OverflowErrorr   ra   rL   rb   r   )r   ru   rw   rx   s       r   test_fcntl_bad_file_overflow&TestFcntl.test_fcntl_bad_file_overfloww   s	   !+.	####}-KK!U]]BMMB .}-KK!,emmR]]K .}-KK!U]]BMMB .}-KK!,emmR]]K .- .-------s1   7FA F*7F*>A F;
F
F'*
F8;
G	armLinuxAndroidz6this platform returns EINVAL for F_NOTIFY DN_MULTISHOTc                     [         R                  n[         R                  n[
        R                  " [
        R                  R                  [
        R                  R                  [        5      5      [
        R                  5      n  [         R                  UW[         R                  5        [         R                  UWW5        [
        R                   " U5        g ! [         a    U R	                  S5         Nf = f! [         a9  nUR                  [        R                  :X  a  U R	                  S5         S nANS nAff = f! [
        R                   " U5        f = f)Nz$F_NOTIFY or DN_MULTISHOT unavailablez*F_NOTIFY not available by this environment)r   F_NOTIFYDN_MULTISHOTrN   skipTestrL   r&   pathdirnameabspathr	   O_RDONLY	DN_DELETEOSErrorerrnoEINVALr)   )r   r,   flagsfdexcs        r   test_fcntl_64_bitTestFcntl.test_fcntl_64_bit   s    	B..C&&E WWRWW__RWW__V%<=r{{K	PBU__5 KKC'HHRL  	BMM@A	B  P99,MM"NOP
 HHRLsA    C %C; ,E C87C8;
D>/D94E 9D>>E Ec                 ,   [        [        S5      U l        U R                  R                  5       n[        R                  U[        R                  5        [        R                  U[        R                  5        [        R                  U R                  [        R                  [        R                  -  5        [        R                  U R                  [        R                  5        [        R                  U[        R                  5        [        R                  U[        R                  5        U R                  [        [        R
                  S[        R                  5        U R                  [        [        R
                  S[        R                  5        g )Nr%   rl   rm   )r&   r	   r-   r   r   flockLOCK_SHr0   LOCK_NBLOCK_EXrn   ro   rp   )r   r   s     r   
test_flockTestFcntl.test_flock   s    fe$FEMM*FEMM*DFFEMMEMM9:DFFEMM*FEMM*FEMM**ekk2u}}E)U[[&%--Hr   AIXzAIX returns PermissionErrorc                    [        [        S5      U l        [        R                  [        R
                  -  n[        R                  U R                  U5        [        R                  " S5      nUR                  [        [        U4S9nUR                  5         UR                  5         [        R                  U R                  [        R                  5        U R                  UR                  S5        g Nr%   spawn)targetargsr   )r&   r	   r-   r   r   r   r'   multiprocessingget_contextProcessr.   startjoinr0   assertEqualexitcoder   r,   mpps       r   test_lockf_exclusiveTestFcntl.test_lockf_exclusive   s     fe$mmemm+DFFC ((1JJ=VSMJR			DFFEMM*Q'r   c                    [        [        S5      U l        [        R                  [        R
                  -  n[        R                  U R                  U5        [        R                  " S5      nUR                  [        [        U4S9nUR                  5         UR                  5         [        R                  U R                  [        R                  5        U R                  UR                  S5        g r   )r&   r	   r-   r   r   r   r'   r   r   r   r1   r   r   r0   r   r   r   s       r   test_lockf_shareTestFcntl.test_lockf_share   s     fe$mmemm+DFFC ((1JJ8}JM			DFFEMM*Q'r   c                     [        S5      nU R                  [        [        R                  UR
                  S-   [        R                  5        g rt   )r   rn   ry   r   r   rw   r   )r   ru   s     r   test_flock_overflowTestFcntl.test_flock_overflow   s6    !+.	-i6G6G6I--	)r   darwinz$F_GETPATH is only available on macosc           	      R   [        [        S5      U l        [        R                  R                  [        5      R                  S5      n[        R                  U R                  R                  5       [        R                  [        [        U5      5      5      nU R                  X5        g )Nr`   zutf-8)r&   r	   r-   rL   r   r   encoder   r   	F_GETPATHbyteslenr   )r   expectedress      r   test_fcntl_f_getpathTestFcntl.test_fcntl_f_getpath   sd    fd#77??6*11':kk$&&--/5??E#h-<PQ'r   F_SETPIPE_SZF_GETPIPE_SZzAF_SETPIPE_SZ and F_GETPIPE_SZ are not available on all platforms.c                 <   [         R                  " 5       u  p [        R                  U[        R                  5      nUS-  n[	        5       nXE:  a  [
        R                  " S5      e[        R                  U[        R                  U5        U R                  [        R                  U[        R                  5      U5        [         R                  " U5        [         R                  " U5        g ! [         R                  " U5        [         R                  " U5        f = f)N   z+default pipesize too small to perform test.)
rL   piper   r   r   unittestSkipTestr   r   r)   )r   test_pipe_rtest_pipe_wpipesize_defaultpipesizepagesize_defaults         r   test_fcntl_f_pipesizeTestFcntl.test_fcntl_f_pipesize   s     $&779 	"${{;8J8JK'1,H+~*''AC CKKU%7%7BU[[e6H6HI%' HH[!HH[! HH[!HH[!s   B'C- -.DF_DUPFDzneed fcntl.F_DUPFDc                 h   [        5       nU R                  [        5         [        R                  U[        R                  S5        S S S 5        U R                  [        5         [        R                  U[        R                  S5        S S S 5        g ! , (       d  f       NR= f! , (       d  f       g = f)Nr   s                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   )r   rn   r   r   r   )r   r   s     r   test_bad_fdTestFcntl.test_bad_fd   sl     ]w'KKEMM1- (w'KKEMM<8 (' ('''s   &B#&B#
B #
B1r6   N)!r   r   r   r    r7   r;   staticmethodr\   rf   ri   rq   r   rz   r   skipIfrP   machinerQ   systemr   r   r   r   r   r   rO   r   
skipUnlesshasattrr   r   r   r!   r"   r   r   r3   r3   +   s   
  >

G L L __					&	&u	-	N(//2Cw2N 	*??	)@B	B(I __X__&%/1NO	(  P	( __X__&%/1NO	(  P	( ) )
 __S\\X-/UV( W( ~&I75.+IKM"M"" 	24HI9 J9r   r3   __main__)__doc__r   r   rP   rL   rR   rO   r   test.supportr   r   r   r   r   test.support.import_helperr   test.support.os_helperr	   r
   r   r   r   r.   r1   TestCaser3   r   mainr"   r   r   <module>r      s       	  
   5 > > 	g C9!! C9L zMMO r   