
    gg                       U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	m
Z
 d dlmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZmZ d d	lmZ d dlZd dlZd d
lmZmZ ddlm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z' ddl(m)Z)m*Z* ddl+m,Z, ddl-m.Z.m/Z/m0Z0 erd dl1m2Z2 d dl3m4Z4 ddl5m6Z6 ej7        dk    rdZ8de9d<   neZ8de9d<   de9d<   de9d<   de9d<   ej:        dk    Z;ese;sej7        dk    rd dlm<Z<m=Z=m>Z> nd\  Z<Z=Z>dWd Z? e?d!          Z@ e?d"          ZA e?d#          ZBe;rdXd&ZCndXd'ZCedYd,            ZDedYd-            ZEejF        G                    d.eDeEgd/d0g1          ZHe
d2ee!         f         ZIde9d3<   eHdZd5            ZJeHdZd6            ZKeHdZd7            ZLeHdZd8            ZMeHdZd9            ZN e?d:          ZOeHdZd;            ZPeHdZd<            ZQd[d=ZRd[d>ZSe)d[d?            ZTeHdZd@            ZUd[dAZVeHdZdB            ZWejF        X                    e; dCD          eHdZdE                        ZYejF        X                    e; dCD          eHdZdF                        ZZe*d[dG            Z[d[dHZ\d[dIZ]d\dLZ^ejF        X                    e; dMD          d]dP            Z_d[dQZ`ejF        X                     edR          a                                 dSD          d[dT            Zbd\dUZcd[dVZddS )^    )annotationsN)AsyncIteratorCallable)AbstractAsyncContextManagerasynccontextmanager)partial)Path)Signals)TYPE_CHECKINGAnyNoReturn)mock)MatcherRaisesGroup   )EventProcess_core
fail_aftermove_on_afterrun_processsleepsleep_forever)skip_if_fbsd_pipes_brokenslow)open_process)	MockClockassert_no_checkpointswait_all_tasks_blocked)	FrameType)	TypeAlias)ReceiveStreamwin32r!   
SignalTypeSIGKILLSIGTERMSIGUSR1posix)r%   r&   r'   )NNNcodestrreturn	list[str]c                (    t           j        ddd| z   gS )Nz-u-czimport sys; )sys
executable)r)   s    g/var/www/html/nodeJS/PythonScripts/venv3.11/lib/python3.11/site-packages/trio/_tests/test_subprocess.pypythonr2   B   s    ND$(=>>    zsys.exit(0)zsys.exit(1)z0sys.stdout.buffer.write(sys.stdin.buffer.read())secondsintc                $    dt          |           gS )Nr   )r*   r4   s    r1   SLEEPr8   L   s    W&&r3   c                (    t          d|  d          S )Nzimport time; time.sleep())r2   r7   s    r1   r8   r8   Q   s    ;;;;<<<r3   argsr   kwargsAsyncIterator[Process]c                   K   t          | i | d {V }	 |W V  |                                 |                                 d {V  d S # |                                 |                                 d {V  w xY wN)r   killwait)r;   r<   procs      r1   open_process_then_killrC   U   s      
 t.v........D



		iikk 			iikks   A 0A;c                |  K   t          j                    4 d {V }|                    dd           |                    t	          t
          g| R i |           d {V }t          |t                    sJ |}|W V  |j        	                                 d d d           d {V  d S # 1 d {V swxY w Y   d S )NcheckF)
r   open_nursery
setdefaultstartr   r   
isinstancer   cancel_scopecancel)r;   r<   nurseryvaluerB   s        r1   run_process_in_nurseryrN   b   s^     
 !## & & & & & & &w'5)))mmGK$I$$I$I$I&$I$IJJJJJJJJ%)))))



##%%%& & & & & & & & & & & & & & & & & & & & & & & & & & & & & &s   A<B++
B58B5background_processr   zrun_process in nursery)ids.BackgroundProcessTypeNonec                f  K    | t                     4 d {V }|                                 d {V  d d d           d {V  n# 1 d {V swxY w Y   t          |t                    sJ |j        J |j        dk    sJ t          |          dt            dk    sJ  | t                    4 d {V }|                                 d {V  d d d           d {V  n# 1 d {V swxY w Y   |j        dk    sJ t          |          d                    t          d          k    sJ d S )Nr   <trio.Process : exited with status 0>   <trio.Process {!r}: {}>exited with status 1)		EXIT_TRUErA   rI   r   _pidfd
returncoderepr
EXIT_FALSEformatrO   rB   s     r1   
test_basicr`   |   sm     !!),,       iikk                          dG$$$$$;?a::L)LLLLLLL!!*--       iikk                          ?a::299       s#   A
AA8C%%
C/2C/c                  K   t          j        dd          5   | t                    4 d {V }|j        J |                                 d {V  d d d           d {V  n# 1 d {V swxY w Y   t          |t                    sJ |j        J |j        dk    sJ t          |          dt           dk    sJ  | t                    4 d {V }|                                 d {V  d d d           d {V  n# 1 d {V swxY w Y   |j        dk    sJ t          |          d
                    t          d	          k    sJ 	 d d d            d S # 1 swxY w Y   d S )
N#trio._subprocess.can_try_pidfd_openFnewr   rT   rU   rV   rW   rX   )r   patchrY   rZ   rA   rI   r   r[   r\   r]   r^   r_   s     r1   test_basic_no_pidfdrf      s     	9u	E	E	E 
 
%%i00 	 	 	 	 	 	 	D;&&&))++	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 $((((({"""!####DzzPiPPPPPPP%%j11 	 	 	 	 	 	 	T))++	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!####Dzz6=="
 
 
 
 
 
 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
sY   E$A&E&
A0	0E3A0	4A$ED3E
D	ED	>EE#&E#c                  K    | t          d                    4 d {V }|j        J dt          |          v sJ |                                 |j                                         |j        J dt          |          v sJ |j        J |j        J 	 d d d           d {V  d S # 1 d {V swxY w Y   d S )N'  runningexited)r8   r[   r\   r@   _procrA   rZ   )rO   ps     r1   test_auto_update_returncoderm      s_      "!%++.. ( ( ( ( ( ( (!|###DGG####		|'''477""""x|''''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (s   A8B--
B7:B7c                f  K    | t          d                    4 d {V }t          j                    4 d {V }|                    |j                   |                    |j                   |                    |j                   t                       d {V  |j                                         d d d           d {V  n# 1 d {V swxY w Y   t          j                    4 d {V }|                    |j                   |                    |j                   |                    |j                   t                       d {V  |                                 d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  d S # 1 d {V swxY w Y   d S )N
   )	r8   r   rF   
start_soonrA   r   rJ   rK   r@   rO   rB   rL   s      r1   test_multi_waitrr      s2     !!%)),,       %'' 	* 	* 	* 	* 	* 	* 	*7ty)))ty)))ty)))(********* '')))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* %'' 	 	 	 	 	 	 	7ty)))ty)))ty)))(*********IIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                             sZ   F A<C	7F 	
C	F C	F 3A7E<*F <
F	F 	F	
F  
F*-F*c                  K   t          j        dd          5   | t          d                    4 d {V }t          j                    4 d {V }|                    |j                   |                    |j                   |                    |j                   t                       d {V  |j        	                                 d d d           d {V  n# 1 d {V swxY w Y   t          j                    4 d {V }|                    |j                   |                    |j                   |                    |j                   t                       d {V  |
                                 d d d           d {V  n# 1 d {V swxY w Y   d d d           d {V  n# 1 d {V swxY w Y   d d d            d S # 1 swxY w Y   d S )Nrb   Frc   ro   )r   re   r8   r   rF   rp   rA   r   rJ   rK   r@   rq   s      r1   test_multi_wait_no_pidfdrt      s     	9u	E	E	E  %%eBii00 	 	 	 	 	 	 	D)++ . . . . . . .w""49---""49---""49---,.........$++---. . . . . . . . . . . . . . . . . . . . . . . . . . . )++       w""49---""49---""49---,.........		                          	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	                 s~   GF6A<C F6 
C**F6-C*.F6
A7FF6
FF6 F!F6$G6
G 	 GG 	GGGzbdata = sys.stdin.buffer.read(); sys.stdout.buffer.write(data); sys.stderr.buffer.write(data[::-1])c           
       K    | t           t          j        t          j        t          j                  4 d {V 	 ddfd}dd
}j        J j        J t          j                    4 d {V }t          j                    dz   |j        _	        |
                    |           |
                    |j                   |
                    |j        d d d                    d d d           d {V  n# 1 d {V swxY w Y   |j        j        rJ                                  d {V dk    sJ 	 d d d           d {V  d S # 1 d {V swxY w Y   d S )Nstdinstdoutstderrs+   the quick brown fox jumps over the lazy dogr+   rR   c                    K   j         J j                                         d {V  j                                          d {V  d S r?   )rw   send_allaclose)msgrB   s   r1   
feed_inputztest_pipes.<locals>.feed_input   si      :)))*%%c**********##%%%%%%%%%%%r3   streamr"   expectedbytesc                V   K   t                      }| 2 3 d {V }||z  }6 ||k    sJ d S r?   )	bytearray)r   r   seenchunks       r1   check_outputz test_pipes.<locals>.check_output   s^      ;;D%       e  &8######s    g      >@r   r+   rR   )r   r"   r   r   r+   rR   )+COPY_STDIN_TO_STDOUT_AND_BACKWARD_TO_STDERR
subprocessPIPErx   ry   r   rF   current_timerJ   deadlinerp   cancelled_caughtrA   )rO   r~   r   rL   r}   rB   s       @@r1   
test_pipesr      s     !!3o	   & & & & & & & &
 
<	& 	& 	& 	& 	& 	& 	&
	$ 	$ 	$ 	$ {&&&{&&&%'' 	E 	E 	E 	E 	E 	E 	E7,1,>,@,@4,GG )z***|T[#>>>|T[#ddd)DDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E '8888YY[[      A%%%%%=& & & & & & & & & & & & & & & & & & & & & & & & & & & & & &s6   9E7A7D .E 
D
	
ED
	1E
E Ec                  K    | t          d          t          j        t          j        t          j                  4 d {V 	 t          rdnddfd
}j        J j        J j        J t          d          5  j                            d           d {V  t          d           d {V  j                            dz              d {V   |dd           d {V  j                            dz   dz   z              d {V   |dd           d {V   |dd           d {V  j                            dz              d {V   |dd           d {V  j                            d           d {V  t          d          5 } |dd           d {V  d d d            n# 1 swxY w Y   |j        sJ j                                       d {V   |dd           d {V  j                                         d {V  j                            d           d {V dk    sJ j                            d           d {V dk    sJ                                  d {V  d d d            n# 1 swxY w Y   d d d           d {V  n# 1 d {V swxY w Y   j        dk    sJ d S )Nzidx = 0
while True:
    line = sys.stdin.readline()
    if line == '': break
    request = int(line.strip())
    print(str(idx * 2) * request)
    print(str(idx * 2 + 1) * request * 2, file=sys.stderr)
    idx += 1
rv      
s   
idxr5   requestr+   rR   c                D  K   t          j                    4 d {V }dfd}j        J j        J |                    |j        || d	z             |                    |j        |d	z  | d	z  d
z              d d d           d {V  d S # 1 d {V swxY w Y   d S )Nr   r"   countr5   digitr+   rR   c                @  K   |dk    r^|                      |           d {V }||                                 t          |          z  k    sJ |t          |          z  }|dk    ^|dk    sJ |                      t                               d {V k    sJ d S )Nr   )receive_someencodelen)r   r   r   resultnewlines       r1   	drain_onez3test_interactive.<locals>.expect.<locals>.drain_one%  s      
  !))'-':':5'A'A!A!A!A!A!A!A%U**;*;*=*=F*KLLLLV,  !)) !A::::!'!4!4S\\!B!BBBBBBBgMMMMMMr3   r   rV   )r   r"   r   r5   r   r5   r+   rR   )r   rF   rx   ry   rp   )r   r   rL   r   r   rB   s       r1   expectz test_interactive.<locals>.expect"  s     )++ U U U U U U Uw
N 
N 
N 
N 
N 
N {...{...""9dk7C!GLLL""9dk7Q;aRSTTT#U U U U U U U U U U U U U U U U U U U U U U U U U U U U U Us   AB
BB   s   12g?s   345r   i90  s   100s   200rV   d   r         0   s   999999   i?B r3   )r   r5   r   r5   r+   rR   )r2   r   r   r(   rw   rx   ry   r   r{   r   r   r   r|   r   rA   r[   )rO   r   scoper   rB   s      @@r1   test_interactiver     s      "!		
 		
 o   ; ; ; ; ; ; ; ; 
 -%%g	U 	U 	U 	U 	U 	U 	U( z%%%{&&&{&&&]] 	 	*%%e,,,,,,,,,***%%fw&6777777777&E"""""""""*%%fw&6&?'&IJJJJJJJJJ&C..       &C..       *%%dWn555555555&A,,*%%i000000000s## #ufQll"""""""# # # # # # # # # # # # # # #))))*%%g.........&F#########*##%%%%%%%%%11!44444444;;;;11!44444444;;;;))++'	 	 	 	 	 	 	 	 	 	 	 	 	 	 	Q; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;z ?as\   =J2DJF>2J>GJGCJ	J2J	J2J	J22
J<?J<c                   K   t          d t          d          D                       } t          t          | dd           d {V }|j        t          k    sJ |j        dk    sJ |j        | k    sJ |j        dk    sJ t          t          d           d {V }|j        t          k    sJ |j        dk    sJ |j        dk    sJ |j        J t          t          | dd           d {V }|j        t          k    sJ |j        dk    sJ |j        | k    sJ |j        | d d d         k    sJ t          j
        t                    5  t          t          d	
           d {V  d d d            n# 1 swxY w Y   d}t          j
        t          |          5  t          t          t          j        
           d {V  d d d            n# 1 swxY w Y   t          j
        t          |          5  t          t          t          j                   d {V  d d d            n# 1 swxY w Y   t          j
        t          |                    ddd                    5  t          t          t          j                   d {V  d d d            n# 1 swxY w Y   t          j
        t          d          5  t          t          dt          j                   d {V  d d d            n# 1 swxY w Y   t          j
        t          d          5  t          t          dd            d {V  d d d            d S # 1 swxY w Y   d S )Nc              3  @   K   | ]}t          j        d d          V  dS )r      N)randomrandint).0_s     r1   	<genexpr>ztest_run.<locals>.<genexpr>R  s.      >>A3''>>>>>>r3   i   T)rw   capture_stdoutcapture_stderrr   r3   r   r   zoh no, it's textrw   z^stdout=subprocess\.PIPE is only valid with nursery\.start, since that's the only way to access the pipe(; use nursery\.start or pass the data you want to write directly)*$match)rx   rx   ry   rV   )ry   z.^can't specify both stdout and capture_stdout$)r   rx   z.^can't specify both stderr and capture_stderr$)r   ry   )r   ranger   CATr;   r[   rx   ry   r   pytestraisesUnicodeError
ValueErrorr   r   replaceDEVNULL)datar   pipe_stdout_errors      r1   test_runr   Q  s     >>u>>>>>D	        F ;#!!!!=D    =Cs4888888888F;#!!!!=C=   3	        F ;EEEEE!!!!=D    =D2J&&&& 
|	$	$ 9 9#%788888888889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 H	z):	;	;	; 6 6#Z_55555555556 6 6 6 6 6 6 6 6 6 6 6 6 6 6	z):	;	;	; 7 7#jo66666666667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	''(A>>
 
 
 7 7 #jo6666666666	7 7 7 7 7 7 7 7 7 7 7 7 7 7 7
 
?
 
 
 O O #d:;MNNNNNNNNNN	O O O O O O O O O O O O O O O
 
?
 
 
 A A #d4@@@@@@@@@@	A A A A A A A A A A A A A A A A A Asl   
E33E7:E7'GGG4'H''H+.H+"'JJJ;(K//K36K3M  MMc                   K   t          d          } t          j        t          j                  5 }t          | t          j        d           d {V  d d d            n# 1 swxY w Y   |j        j        | k    sJ |j        j	        dk    sJ |j        j
        dk    sJ |j        j        J t          | ddd           d {V }|j        | k    sJ |j        dk    sJ |j
        dk    sJ |j	        dk    sJ d S )	Nz/sys.stderr.buffer.write(b'test\n'); sys.exit(1)T)rw   r   rV   s   test
F)r   r   rE   r3   )r2   r   r   r   CalledProcessErrorr   r   rM   cmdr[   ry   rx   r;   )r   excinfor   s      r1   test_run_checkr     s     
C
D
DC	z4	5	5 N#Z%7MMMMMMMMMMN N N N N N N N N N N N N N N=####=#q((((=9,,,,='''	        F ;#=C=I%%%%!!!!!!s   #AA#&A#c                    K   t          t          j        ddgddz             d {V } | j        dk    sJ | j        | j        cxu rn J d S )Nr.   zimport sys; sys.stdin.close()   xi   r   r   )r   r/   r0   r[   rx   ry   )r   s    r1   test_run_with_broken_piper     s      	>?Vm        F !!!!=FM11111111111r3   c                   K    | t           t          j        t          j        t          j                  4 d {V 	 }|j        J |j        J |j        J |j                            d           d {V  |j                                         d {V  g }	 |j        	                    d           d {V }|dk    rn|
                    |           =d                    |          dk    sJ 	 d d d           d {V  n# 1 d {V swxY w Y   |j        dk    sJ t          t           ddt          j                   d {V }|j        dk    sJ |j        dk    sJ |j        J  | t          t          j        t          j        	          4 d {V 	 }|j        J |j        J |j                                         d {V  |                                 d {V  d d d           d {V  n# 1 d {V swxY w Y   |j        dk    sJ t$          r^	 t'          j                    \  }} | t           t          j        |t          j                  4 d {V 	 }t'          j        |           |j        J |j        J |j        J |j                            d           d {V  |j                                         d {V  |                                 d {V dk    sJ t'          j        |d
          dk    sJ t'          j        |d
          dk    sJ 	 d d d           d {V  n# 1 d {V swxY w Y   t'          j        |           d S # t'          j        |           w xY wd S )Nrv   s   1234T   r3   s   12344321r   )rw   r   ry   )rw   ry   i   )r   r   r   STDOUTstdiorx   ry   r{   send_eofr   appendjoinr[   r   r   rw   r|   rA   r(   ospipecloseread)rO   rB   outputr   r   rws          r1   test_stderr_stdoutr     s     !!3o 	   / / / / / / / /
 
z%%%{&&&{"""j!!'*********j!!#########	!*11"55555555E||MM%   		!
 xx;.....%/ / / / / / / / / / / / / / / / / / / / / / / / / / /& ?a 3 	        F !!!!=K''''=    "!o            
{"""{"""j!!!!!!!!!iikk                           ?a 	799DAq)); o!(	   / / / / / / / /
 z))){***{***j))'222222222j'')))))))))!YY[[((((((A----wq$'';6666wq$''3...../ / / / / / / / / / / / / / / / / / / / / / / / / / /  HQKKKKKBHQKKKK) sW   B6D
DDAG::
HH!AM% &CL>,M% >
MM% MM% %M;c                 2  K   t          j        t                    5 } t          dgd           d {V  d d d            n# 1 swxY w Y   dt	          | j                  v sJ dt	          | j                  v sJ t          rt          j        t                    5 } t          dgd           d {V  d d d            n# 1 swxY w Y   t          j        t                    5 } t          dd           d {V  d d d            d S # 1 swxY w Y   d S d S )	Nlszutf-8)encodingzunbuffered byte streamsz&the 'encoding' option is not supportedT)shellF)r   r   	TypeErrorr   r*   rM   r(   )r   s    r1   test_errorsr     s     	y	!	! 5WD6G44444444445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 %GM(:(:::::3s7=7I7IIIII 2]9%% 	3vT2222222222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3]9%% 	2t51111111111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	22 2s5   AAACCC%D

DDc                   K   d
 fd} |t           j        t                     d {V   |t           j        t                     d {V  t
          st          st          j        dk    r |d	 t                     d {V  d S d S )Nsend_itCallable[[Process], None]signumsignal.Signals | Noner+   rR   c                  K   t          d          5 } t          d                    4 d {V } | |           |                                 d {V  d d d           d {V  n# 1 d {V swxY w Y   d d d            n# 1 swxY w Y   |j        rJ t          r|J |j        | k    sJ d S |j        dk    sJ d S )N      ?  r   )r   r8   rA   r   r(   r[   )r   r   r   rB   rO   s       r1   test_one_signalz%test_signals.<locals>.test_one_signal  s      3 	"5))%++66 " " " " " " "$iikk!!!!!!!" " " " " " " " " " " " " " " " " " " " " " " " " " "	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" )))) 	(%%%?vg------?a''''''s4   B&A*B*
A4	4B7A4	8BBBr#   c                6    |                      t                    S r?   )send_signalr'   rB   s    r1   <lambda>ztest_signals.<locals>.<lambda>  s    4+;+;G+D+D r3   )r   r   r   r   r+   rR   )
r   r@   r%   	terminater&   r   r(   r/   platformr'   )rO   r   s   ` r1   test_signalsr     s      ( ( ( ( ( ( /',
0
00000000
/'+W
5
55555555  Oe O(?(?oDDgNNNNNNNNNNN )@(?r3   zPOSIX specific)reasonc                  K   t           rt          j        dk    rd S t          j        t          j        t          j                  }	  | t          d                    4 d {V }t          j                    4 d {V }|	                    |j
                   t                       d {V  |                                 t          j                    dz   |j        _        d d d           d {V  n# 1 d {V swxY w Y   |j        j        rJ |j        dk    sJ 	 d d d           d {V  n# 1 d {V swxY w Y   t          j        t          j        |           d S # t          j        t          j        |           w xY w)Nr#   r   r   r   )r   r/   r   signalSIGCHLDSIG_IGNr8   r   rF   rp   rA   r   r@   r   rJ   r   r   r[   rO   old_sigchldrB   rL   s       r1   test_wait_reapable_failsr     s       00-??K3 &%eDkk22 	( 	( 	( 	( 	( 	( 	(d)++ K K K K K K Kw""49---,.........		050B0D0Ds0J$-	K K K K K K K K K K K K K K K K K K K K K K K K K K K
 +<<<<?a'''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	fnk22222fnk2222sU   E$ $D2>A#C3!D23
C=	=D2 C=	D2 E$ 2
D<<E$ ?D< E$ $!Fc                r  K   t           rt          j        dk    rd S t          j        dd          5  t          j        t
          j        t
          j                  }	  | t          d                    4 d {V }t          j
                    4 d {V }|                    |j                   t                       d {V  |                                 t          j                    dz   |j        _        d d d           d {V  n# 1 d {V swxY w Y   |j        j        rJ |j        dk    sJ 	 d d d           d {V  n# 1 d {V swxY w Y   t          j        t
          j        |           n$# t          j        t
          j        |           w xY w	 d d d            d S # 1 swxY w Y   d S )Nr#   rb   Frc   r   r   r   )r   r/   r   r   re   r   r   r   r8   r   rF   rp   rA   r   r@   r   rJ   r   r   r[   r   s       r1   !test_wait_reapable_fails_no_pidfdr   1  s     
  00	9u	E	E	E 7 7mFNFNCC	7 *)%++66 , , , , , , ,$ -// O O O O O O O7&&ty1110222222222IIKKK494F4H4H34NG(1	O O O O O O O O O O O O O O O O O O O O O O O O O O O
 #/@@@@!+++++, , , , , , , , , , , , , , , , , , , , , , , , , , , M&.+6666FM&.+666667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7sr   *F,E:;E	A#D
8E	

DE	DE	7E:	
E	E:E	E: F,:!FF,,F03F0c                    ddl m}  t          r"t          j        dk    st          j        dk    rd S | j                            d          st          j        d           ddl	m
} dt          j        d	d
g          dfd}t          j        t          j        |          }	 t          j        d            |j                                       d          dk    sJ 	 j        (                                                                  t          j        t          j        |           d S # j        (                                                                  t          j        t          j        |           w xY w)Nr   )wait_child_exitingr#   darwinwaitidzwaitid only)sync_wait_reapableFr   3600sigr5   frameFrameType | Noner+   rR   c                4    d                                  d S NT)r@   )r   r   	got_alarmsleepers     r1   on_alarmz#test_waitid_eintr.<locals>.on_alarm`  s    	r3   rV   )timeouti)r   r5   r   r   r+   rR   )_subprocess_platformr   r   r/   r   
__module__endswithr   skip_subprocess_platform.waitidr   r   Popenr   SIGALRMalarmpidrA   r[   r@   )r   r   r  old_sigalrmr  r  s       @@r1   test_waitid_eintrr  J  s    :99999 #,'11S\X5M5M(11(;; #M"""
      I011G      
 -99K
3Q7;'''||A|&&",,,,,% LLNNNLLNNNfnk22222 % LLNNNLLNNNfnk2222s   %A D6 6AFc            	     f  K   dd	fd} t          j                    4 d {V }|                    t          t          t          d          |                      t                       d {V  |j                                         d d d           d {V  n# 1 d {V swxY w Y   sJ d S )
NFrB   r   r+   rR   c                   K   d|                                   	 t                       d {V  | j        J d S # | j        J w xY wr  )r   r   r[   )rB   custom_deliver_cancel_calleds    r1   custom_deliver_cancelz9test_custom_deliver_cancel.<locals>.custom_deliver_cancelv  sl      '+$	///!!!!!!!?.....4?.......s	   : Arh   deliver_cancelrB   r   r+   rR   	r   rF   rp   r   r   r8   r   rJ   rK   )r  rL   r  s     @r1   test_custom_deliver_cancelr  s  sb     #( 	/ 	/ 	/ 	/ 	/ 	/ !## & & & & & & &wKt=RSSS	
 	
 	
 %&&&&&&&&&##%%%& & & & & & & & & & & & & & & & & & & & & & & & & & & ('''''s   A%B
B&)B&c                     d
ddfd} t          t          t          t          d                              5  t          j        | d	           d d d            d S # 1 swxY w Y   d S )NrB   r   r+   rR   c                L   K   |                                   t          d          )Nfoo)r   r   r   s    r1   r  z6test_bad_deliver_cancel.<locals>.custom_deliver_cancel  s$      r3   c            	     P  K   t          j                    4 d {V } |                     t          t          t          d                               t                       d {V  | j                                         d d d           d {V  d S # 1 d {V swxY w Y   d S )Nrh   r  r  )rL   r  s    r1   do_stuffz)test_bad_deliver_cancel.<locals>.do_stuff  s7     %'' 	* 	* 	* 	* 	* 	* 	*7U4[[AVWWW   )********* '')))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   A%B
B"Bz^foo$T)strict_exception_groupsr  r   )r   r   r   r   run)r  r  s    @r1   test_bad_deliver_cancelr!    s           * * * * * * 
[W!=!=>>	?	? : :	(D9999: : : : : : : : : : : : : : : : : :s   AA#&A#monkeypatchpytest.MonkeyPatchc                  K   t           j        d
fd}|                     t           d|           t          j        t
          d          5  t          j                    4 d {V }|                    t          t          d	                     t                       d {V  |j                                         d d d           d {V  n# 1 d {V swxY w Y   d d d            d S # 1 swxY w Y   d S )Nselfr   r+   r   c                8     |            t          d          )Nwhoops)OSError)r%  original_terminates    r1   broken_terminatez>test_warn_on_failed_cancel_terminate.<locals>.broken_terminate  s"    4   hr3   r   z
.*whoops.*r   rh   )r%  r   r+   r   )r   r   setattrr   warnsRuntimeWarningr   rF   rp   r   r8   r   rJ   rK   )r"  r*  rL   r)  s      @r1   $test_warn_on_failed_cancel_terminater.    s      *            .>???	nL	9	9	9 * *%'' 	* 	* 	* 	* 	* 	* 	*7{E$KK888(********* '')))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	** * * * * * * * * * * * * * * * * *s7   C-'AC=C-
C	C-C	C--C14C1z
posix onlyautojump_clockr   c                  K   |                     t          dd            t          j        t          d          5  t          j                    4 d {V }|                    t          t          d                     t                       d {V  |j                                         d d d           d {V  n# 1 d {V swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   c                     d S r?    )r;   s    r1   r   z8test_warn_on_cancel_SIGKILL_escalation.<locals>.<lambda>  s    D r3   z.*ignored SIGTERM.*r   rh   )r+  r   r   r,  r-  r   rF   rp   r   r8   r   rJ   rK   )r/  r"  rL   s      r1   &test_warn_on_cancel_SIGKILL_escalationr3    s     
 .@.@AAA	n,A	B	B	B * *%'' 	* 	* 	* 	* 	* 	* 	*7{E$KK888(********* '')))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	** * * * * * * * * * * * * * * * * *s6   CAB=+C=
C	C
C	CC"Cc                 ~  K   t          t          j                  5  t          j                    4 d {V } |                     t          t                     d {V }t          |t                    sJ |}d d d           d {V  n# 1 d {V swxY w Y   d d d            n# 1 swxY w Y   |j
        dk    sJ d S )NrV   )r   r   r   r   rF   rH   r   r]   rI   r   r[   )rL   rM   rB   s      r1    test_run_process_background_failr5    s     	Z2	3	3 " "%'' 	" 	" 	" 	" 	" 	" 	"7!--Z@@@@@@@@EeW-----!D	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"" " " " " " " " " " " " " " "
 ?as5   B%A B6B%
B	B%B	B%%B),B)/dev/fdz,requires a way to iterate through open filesc                 &  K   t          j                     t          t          d                                                    } t          t                     d {V  t          t          d                                                    | k    sJ t          j        t          j
                  5  t          t                     d {V  d d d            n# 1 swxY w Y   t          t          d                                                    | k    sJ t          j        t                    5  t          dg           d {V  d d d            n# 1 swxY w Y   t          t          d                                                    | k    sJ d S )Nr6  z	/dev/fd/0)gccollectsetSyncPathiterdirr   rY   r   r   r   r   r]   PermissionError)starting_fdss    r1   test_for_leaking_fdsr?    s     
 JLLLx	**224455L
i
 
        x	""**,,--====	z4	5	5 & &*%%%%%%%%%& & & & & & & & & & & & & & &x	""**,,--====		'	' ) );-((((((((() ) ) ) ) ) ) ) ) ) ) ) ) ) )x	""**,,--======s$   0CCC/EEEc                   K   d
d}|                      t          j        d|           t          t          t                    5  t          t          d	           d {V  d d d            d S # 1 swxY w Y   d S )Nr;   objectr<   r+   r*   c                 
   K   dS )Noopsr2  )r;   r<   s     r1   very_broken_openz9test_run_process_internal_error.<locals>.very_broken_open  s      vr3   r   Tr   )r;   rA  r<   rA  r+   r*   )r+  trio_subprocessr   AttributeErrorr   rY   )r"  rD  s     r1   test_run_process_internal_errorrH    s          (.:JKKK	^^	4	4 : :)D9999999999: : : : : : : : : : : : : : : : : :s   A,,A03A0c                   K   d d	fd} t          t          d                     d {V }t          j                    4 d {V }|                    | |           t                       d {V  t          t                    sJ |                                 t                      5  |j
                                         |                                 d d d            n# 1 swxY w Y   t          d          5                                   d {V  d d d            n# 1 swxY w Y                                   s
J d            	 d d d           d {V  d S # 1 d {V swxY w Y   d S )
NrB   r   r+   rR   c                   K   t                      |                                  d {V                                   d S r?   )r   rA   r:  )rB   noticed_exits    r1   wait_and_tellz7test_subprocess_pidfd_unnotified.<locals>.wait_and_tell  sH      wwiikkr3   rh   r   z,child task wasn't woken after poll, DEADLOCKr  )r   r8   r   rF   rp   r   rI   r   r   r   rk   rA   pollr   is_set)rL  rB   rL   rK  s      @r1    test_subprocess_pidfd_unnotifiedrO    s     L      eDkk********D!## U U U U U U Uw=$///$&&&&&&&&&,....."$$ 	 	JOOIIKKK		 	 	 	 	 	 	 	 	 	 	 	 	 	 	
 1 	& 	& ##%%%%%%%%%	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& 	& ""$$TT&TTTTTU U U U U U U U U U U U U U U U U U U U U U U U U U U U U Us[   A$E#+.C%E#%C)	)E#,C)	-E#?D&E#&D*	*E#-D*	.!E##
E-0E-)r)   r*   r+   r,   )r4   r5   r+   r,   )r;   r   r<   r   r+   r=   )rO   rQ   r+   rR   r   )r"  r#  r+   rR   )r/  r   r"  r#  r+   rR   )e
__future__r   r8  r   r   r   r   r/   collections.abcr   r   
contextlibr   r   	functoolsr   pathlibr	   r;  r
   typingr   r   r   unittestr   r   rE  trio.testingr   r    r   r   r   r   r   r   r   r   _core._tests.tutilr   r   lowlevelr   testingr   r   r   typesr    typing_extensionsr!   _abcr"   r   r$   __annotations__namer(   r%   r&   r'   r2   rY   r]   r   r8   rC   rN   markparametrizebackground_process_paramrQ   r`   rf   rm   rr   rt   r   r   r   r   r   r   r   r   r   skipifr   r   r  r  r!  r.  r3  r5  existsr?  rH  rO  r2  r3   r1   <module>rf     sU   " " " " " " " 				 				       



 3 3 3 3 3 3 3 3 G G G G G G G G       $ $ $ $ $ $               
         - - - - - - - -	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 A @ @ @ @ @ @ @ # # # # # # N N N N N N N N N N %++++++$$$$$$<7 J     #J####            
7 1% 1CLG$;$;00000000000 0GWg? ? ? ? F=!!	VM""
f?@@ =' ' ' ' '
= = = = 	 	 	 	 
& 
& 
& 
& ";2234	12 3    $,(*$         " 
 
 
 
& ( ( ( (    &    ( /5f*/ / + & & & &D I  I  I  I X6A 6A 6A 6Ar" " " "* 2 2 2 2 B B B BJ2 2 2 2 O O O O: I&6773 3 3  873( I&6777 7 7  877. %3 %3 %3 %3P( ( ( (0: : : :$* * * *  Il33
* 
* 
* 43
*        ""$$$9   > > >	 > : : : :U U U U U Ur3   