
    0hh                     *   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  S SKJr  S SKJr   \R                    \
" SS9  S r " S	 S
\R&                  5      r\S:X  a  \R,                  " 5         gg! \ a    \R"                  " S5      ef = f)    N)cpython_onlyrequires_subprocessrequires_working_socketrequires_resource)threading_helper)TESTFNzselect.poll not definedT)modulec                 X    / nU  H!  u  p4XA-  (       d  M  UR                  U5        M#     U$ )N)append)readyflagmatchfdmodes        7/opt/python-3.13.8/usr/lib/python3.13/test/test_poll.pyfind_ready_matchingr      s-    E;;LL  L    c                       \ rS rSrS rS r\" 5       \" S5      S 5       5       rS r	\
S 5       r\R                  S 5       r\R                   " \S	5      \R                  S
 5       5       rSrg)	PollTests   c                    [         R                  " 5       nSnSn[        U5      n/ n/ n0 n0 n[        U5       H  n	[        R
                  " 5       u  pUR                  U
5        UR                  U
[         R                  5        UR                  U[         R                  5        UR                  U
5        UR                  U5        XU
'   XU'   M     / nU(       Gak  UR                  5       n[        U[         R                  5      nU(       d  [        S5      e[        R                  " U5      n[        R                  " X5        UR                  5       n[        U[         R                  5      nU(       d  [        S5      e[        R                  " U5      n
[        R                   " X5      nU R#                  [        U5      U5        UR                  U5        [        R$                  " Xz   5        [        R$                  " U
5        UR'                  Xz   5        UR'                  U
5        UR)                  Xz   5        U(       a  GMk  U R#                  X/U-  5        g )N   s    This is a test.zno pipes ready for writingzno pipes ready for reading)selectpolllenrangeospiperegistermodifyPOLLINPOLLOUTr   r   RuntimeErrorrandomchoicewritereadassertEqualclose
unregisterremove)selfp	NUM_PIPESMSGMSG_LENreaderswritersr2ww2rirdwrbufsr   ready_writersready_readersbufs                    r   
test_poll1PollTests.test_poll1!   s    KKM	!c(y!AWWYFBJJrNHHR'JJr6>>*NN2NN2GG " FFHE/v~~FM "#?@@}-BHHRFFHE/v}}EM "#?@@}-B''"&CSXw/KKHHSW"LL#'#LL"NN37#' g* 	uy01r   c                    [         R                  " 5       u  p[         R                  " U5        [         R                  " U5        [        R                  " 5       nUR                  U5        UR	                  5       nU R                  US   U[        R                  45        [        [        S5       nUR                  5       n[        R                  " 5       nUR                  U5        UR	                  5       nU R                  US   S   U5        S S S 5        UR	                  5       nU R                  US   W[        R                  45        [         R                  " [        5        [        R                  " 5       nU R                  [        UR
                  U5        U R                  [        UR                  U5        [        R                  " 5       nU R                  [        UR                  S5        [        R                  " 5       n " S S5      n " S S5      n	U R                  [        UR
                  U" 5       S5        U R                  [        UR
                  U	" 5       S5        g ! , (       d  f       GNc= f)Nr   w   c                       \ rS rSrSrg),PollTests.test_poll_unit_tests.<locals>.Nopeq    N)__name__
__module____qualname____firstlineno____static_attributes__rD   r   r   NoperB   q   s    r   rJ   c                       \ rS rSrS rSrg).PollTests.test_poll_unit_tests.<locals>.Almostt   c                     g)NfilenorD   )r,   s    r   rO   5PollTests.test_poll_unit_tests.<locals>.Almost.filenou   s    r   rD   N)rE   rF   rG   rH   rO   rI   rD   r   r   AlmostrL   t   s     r   rQ   )r   r   r)   r   r   r   r(   POLLNVALopenr   rO   unlinkassertRaises	TypeErrorr*   KeyError)
r,   FDr?   r-   rfr   pollsterrJ   rQ   s
             r   test_poll_unit_testsPollTests.test_poll_unit_testsR   s   	

KKM	

2FFH1FOO45&#!BAJJqMAQqT!Wb)  FFH1FOO45
		& KKM)QZZ3)Q\\15 KKM(ALL!4 ;;=	 		  	  	)X%6%6B)X%6%6!D; s   /AI**
I9walltimec                 |   Sn[         R                  " US[         R                  SS9nU R                  U5        UR                  n[
        R                  " 5       nUR                  U[
        R                  5        S H  nUR                  U5      nU/ :X  a  M  US   u  pxU[
        R                  -  (       a)  UR                  5       n	U	S:w  a  U R                  S5        Md  U[
        R                  -  (       a-  UR                  5       n	U	(       d    g U R                  U	S5        M  U R                  S	U-  5        M     g )
Nz?for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; doneTr   )shellstdoutbufsize)r   i  i  i  i@  i>  rc   rc   rc   rc   rc   rc   rc   rc   rc   r   z6error: pipe seems to be closed, but still returns datas   testing...
z,Unexpected return value from select.poll: %s)
subprocessPopenPIPEenterContextra   r   r   r   r!   POLLHUPreadlinefailr(   )
r,   cmdprocr-   r[   toutfdlistr   flagslines
             r   
test_poll2PollTests.test_poll2~   s     P4
()+$KK;;=1fmm-AD]]4(F"q	IBv~~%zz|3;IIVW&zz|  7		H6QR% Br   c                    [         R                  " 5       nUR                  S5        U R                  [        UR                  S5        SnUS:w  a  U R                  S5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        U R                  [        UR                  SS5        g )N   l               zOverflow must have occurredr   rc   )r   r   r   rU   OverflowErrorrj   
ValueErrorr    )r,   r[   xs      r   
test_poll3PollTests.test_poll3   s    ;;=!-@6II34 	*h&7&7B?-):):AwG*hooq"=-!WEr   c                     SSK JnJnJn  [        R                  " 5       nUR                  S5        U R                  [        UR                  SUS-   5        U R                  [        UR                  SUS-   5        U R                  [        UR                  US-   5        U R                  [        UR                  US-   5        g ! [         a    [
        R                  " S5      ef = f)Nr   )	USHRT_MAXINT_MAXUINT_MAXzrequires _testcapirt   )	_testcapir|   r}   r~   ImportErrorunittestSkipTestr   r   r   rU   rv   r    )r,   r|   r}   r~   r[   s        r   test_poll_c_limitsPollTests.test_poll_c_limits   s    	:>> ;;=! 	-):):Ay1}M-!Y]K-!D-1E  	:##$899	:s   
C !C&c                    [         R                  " 5       u  pU R                  [         R                  U5        U R                  [         R                  U5        / n[	        S5       HJ  n[         R
                  " U5      nU R                  [         R                  U5        UR                  U5        ML     [        R                  " 5       nU H#  nUR                  U[        R                  5        M%     [        R                  " UR                  S9nUR                  5          [        R                  " S5        U H  nUR!                  U5        M     UR                  U[        R"                  5        U R%                  [&        UR                  5        [         R(                  " US5        UR+                  5         g ! [         R(                  " US5        UR+                  5         f = f)N
   )targetg      ?   spam)r   r   
addCleanupr)   r   dupr   r   r   r   r!   	threadingThreadstarttimesleepr*   r"   rU   r#   r&   join)r,   rY   r?   rfdsr5   r   r[   ts           r   test_threaded_pollPollTests.test_threaded_poll   s>   wwy!$!$rABOOBHHb)KKO  ;;=Bb&--0  HMM2		
	JJsO##B' a0lHMM: HHQ FFH HHQ FFHs    A0F8 8)G!z!Threading required for this test.c                 R   S GH   n[         R                  " 5       u  p#[        R                  " 5       nUR	                  U[        R
                  5        [        R                  " UR                  U4S9nUR                  5         UR                  SS9  U R                  UR                  5       5        [         R                  " US5        UR                  5         U R                  UR                  5       5        [         R                  " U5        [         R                  " U5        GM#     g )N)Nirc   g      gg0.+)r   argsg?)timeoutr   )r   r   r   r   r   r!   r   r   r   r   
assertTrueis_aliver&   assertFalser)   )r,   
timeout_msrY   r?   r[   poll_threads         r   !test_poll_blocks_with_negative_ms+PollTests.test_poll_blocks_with_negative_ms   s     AJ 779DA{{}Ha/#**(--zmTKS)OOK0023 HHQ [1134HHQKHHQK# Ar   rD   N)rE   rF   rG   rH   r<   r\   r   r   rq   ry   r   r   r   reap_threadsr   r   
skipUnlessr   r   rI   rD   r   r   r   r      s    /2b'EX z"S # S8F" F F "" #6 $GH"" # Ir   r   __main__)r   rd   r$   r   r   r   r   test.supportr   r   r   r   r   test.support.os_helperr   r   AttributeErrorr   r   TestCaser   rE   mainrD   r   r   <module>r      s    
        * )7
KK t $M!! M` zMMO y  7


5
667s   A9 9B