
    #)f[                       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	 d dl
mZ d dlmZ d dlmZ d dlmZmZmZmZmZ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,m-Z- erd dl.m/Z/ d dl0m1Z1 d	dl2m3Z3 ejh                  dk(  rdZ5de6d<   neZ5de6d<   de6d<   de6d<   de6d<   ejn                  dk(  Z8ese8sejh                  dk7  rd dlm9Z9m:Z:m;Z; nd\  Z9Z:Z;dDdZ< e<d      Z= e<d      Z> e<d      Z?e8rdEdZ@ndEdZ@dFd ZAe	dGd!       ZBe	dGd"       ZCej                  j                  d#eBeCgd$d%g&      ZFed'ee   f   ZGde6d(<   eFdHd)       ZHeF	 	 	 	 dHd*       ZIeFdHd+       ZJ e<d,      ZKeFdHd-       ZLeFdHd.       ZMdId/ZNdId0ZOe&dId1       ZPeFdHd2       ZQdId3ZReFdHd4       ZSej                  j                  e8 d56      eFdHd7              ZUe'dId8       ZVdId9ZWdId:ZXdJd;ZYej                  j                  e8 d<6      	 	 	 	 	 	 dKd=       ZZdId>Z[ej                  j                   ed?      j                          d@6      dIdA       Z]dJdBZ^dIdCZ_y)L    )annotationsN)asynccontextmanager)partial)Path)Signals)TYPE_CHECKINGAnyAsyncContextManagerAsyncIteratorCallableNoReturn)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&   )NNNc                0    t         j                  ddd| z   gS )Nz-u-czimport sys; )sys
executable)codes    X/var/www/html/flask-app/venv/lib/python3.12/site-packages/trio/_tests/test_subprocess.pypythonr.   C   s    NND$(=>>    zsys.exit(0)zsys.exit(1)z0sys.stdout.buffer.write(sys.stdin.buffer.read())c                    dt        |       gS )Nr   )strsecondss    r-   SLEEPr4   M   s    W&&r/   c                     t        d|  d      S )Nzimport time; time.sleep())r.   r2   s    r-   r4   r4   R   s    0	;<<r/   c                ~    t         st        st        j                  dk7  r| j                  | k(  S | j                  dk7  S )Nr"   r   )r   r'   r*   platform
returncode)procsigs     r-   
got_signalr<   V   s2    e(?3$&&!##r/   c                   K   t        | i | d {   }	 | |j                          |j                          d {    y 7 37 # |j                          |j                          d {  7   w xY wwN)r   killwait)argskwargsr:   s      r-   open_process_then_killrC   ]   s`     t.v..D
		iik /
 	 			iiksB   A7AA7A	 #A7A A7A7	$A4-A0.A44A7c                R  K   t        j                         4 d {   }|j                  dd       |j                  t	        t
        g| i |       d {   }| |j                  j                          d d d       d {    y 7 p7 67 	# 1 d {  7  sw Y   y xY ww)NcheckF)r   open_nursery
setdefaultstartr   r   cancel_scopecancel)rA   rB   nurseryr:   s       r-   run_process_in_nurseryrL   g   s     !!# & &w'5)%mmGK,Q$,Q&,QRR
##%	& & &R& & & &sV   B'BB'8BB#B;B'BB'BB'B$BB$ B'background_processr   zrun_process in nursery)ids.BackgroundProcessTypec                h  K    | t               4 d {   }|j                          d {    d d d       d {    t        t              sJ |j                  J |j
                  dk(  sJ t        |      dt          dk(  sJ  | t              4 d {   }|j                          d {    d d d       d {    |j
                  dk(  sJ t        |      dj                  t        d      k(  sJ y 7 7 7 # 1 d {  7  sw Y   xY w7 }7 g7 Y# 1 d {  7  sw Y   ixY ww)Nr   z<trio.Process z: exited with status 0>   z<trio.Process {!r}: {}>zexited with status 1)		EXIT_TRUEr@   
isinstancer   _pidfdr9   repr
EXIT_FALSEformat)rM   r:   s     r-   
test_basicrX   y   s    !),  iik dG$$;;??a:>)4KLLL!*-  iik ??a:299*         s   D2C<D2DC>DD2D AD2DD2D1D2D6D2D;D2>D D2DD	DD2DD2D/#D&$D/+D2c                  K    | t        d            4 d {   }|j                  J dt        |      v sJ |j                          |j                  j                          |j                  J dt        |      v sJ |j                  J |j                  J d d d       d {    y 7 7 # 1 d {  7  sw Y   y xY ww)N'  runningexited)r4   r9   rU   r?   _procr@   rT   )rM   ps     r-   test_auto_update_returncoder_      s      "%+. ( (!||##DG##		||''47""xx||''( ( ( ( ( ( (sE   CB.CBB2C(B0)C0C2C8B;9C Cc                  K    | t        d            4 d {   }t        j                         4 d {   }|j                  |j                         |j                  |j                         |j                  |j                         t                d {    |j                  j                          d d d       d {    t        j                         4 d {   }|j                  |j                         |j                  |j                         |j                  |j                         t                d {    |j                          d d d       d {    d d d       d {    y 7 `7 F7 7 # 1 d {  7  sw Y   xY w7 7 V7 8# 1 d {  7  sw Y   HxY w7 ?# 1 d {  7  sw Y   y xY ww)N
   )	r4   r   rF   
start_soonr@   r   rI   rJ   r?   )rM   r:   rK   s      r-   test_multi_waitrc      sl    !%),  %%' 	* 	*7tyy)tyy)tyy)(***  '')	* 	* %%' 	 	7tyy)tyy)tyy)(***IIK	 	  	* +		* 	* 	* 	*	 +		 	 	 	   s   G	E8G	F4E;F4AFE>F7F4F F4F F4#AFFFF4"F#F4'G	2F23G	;F4>F F4F	F	F	F4FF4F/	#F&$F/	+F42G	4G:F=;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 {   ddfd}d	d}j                  J j                  J t        j                         4 d {   }t        j                         dz   |j                  _	        |j                  |       |j                  |j                         |j                  |j                  d d d          d d d       d {    j                  j                  rJ j                          d {   dk(  sJ d d d       d {    y 7 7 7 O# 1 d {  7  sw Y   _xY w7 67 ## 1 d {  7  sw Y   y xY ww)
Nstdinstdoutstderrs+   the quick brown fox jumps over the lazy dogc                    K   j                   J j                   j                          d {    j                   j                          d {    y 7 '7 wr>   )rf   send_allaclose)msgr:   s   r-   
feed_inputztest_pipes.<locals>.feed_input   sK     ::))**%%c*****##%%% +%s!   -AA!AAAAc                V   K   t               }| 2 3 d {   }||z  }7 
6 ||k(  sJ y wr>   )	bytearray)streamexpectedseenchunks       r-   check_outputz test_pipes.<locals>.check_output   s;     ;D%  ev8###s   )  ) 	)g      >@r   returnNone)rp   r!   rq   bytesrw   rx   )+COPY_STDIN_TO_STDOUT_AND_BACKWARD_TO_STDERR
subprocessPIPErg   rh   r   rF   current_timerI   deadlinerb   cancelled_caughtr@   )rM   rm   rt   rK   rl   r:   s       @@r-   
test_pipesr      sY    !3oo	 & &
 
<	&
	$ {{&&{{&&%%' 	E 	E7,1,>,>,@4,GG  )z*|T[[#>|T[[#dd)D	E 	E ''888YY[ A%%=& & &,	E 	E 	E 	E 	E !=& & & &s   ?FEFAE;	E
E;A8E"E;E /E; E7	E;
FE9FE; E;"E4	(E+)E4	0E;9F;FFF	Fc                L  K    | t        d      t        j                  t        j                  t        j                        4 d {   t        rdnddfd}j                  J j
                  J j                  J t        d      5  j                  j                  d       d {    t        d       d {    j                  j                  d	z          d {     |d
d       d {    j                  j                  dz   dz   z          d {     |dd       d {     |dd       d {    j                  j                  dz          d {     |dd
       d {    j                  j                  d       d {    t        d      5 } |dd
       d {    d d d        j                  sJ j                  j                         d {     |dd       d {    j                  j                          d {    j
                  j                  d       d {   dk(  sJ j                  j                  d       d {   dk(  sJ j                          d {    d d d        d d d       d {    j                  d
k(  sJ y 7 |7 7 7 7 7 7 7 7 l7 ^7 >7 $# 1 sw Y   $xY w7 7 7 7 7 7 i# 1 sw Y   hxY w7 _# 1 d {  7  sw Y   oxY ww)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
re      
s   
c                ~  K   t        j                         4 d {   }	 	 	 	 	 	 	 	 dfd}j                  J j                  J |j	                  |j                  || dz         |j	                  |j                  |dz  | dz  dz          d d d       d {    y 7 7 # 1 d {  7  sw Y   y xY ww)Nc                  K   |dkD  rO| j                  |       d {   }|| j                         t        |      z  k(  sJ |t        |      z  }|dkD  rO|dk(  sJ | j                  t                     d {   k(  sJ y 7 i7 w)Nr   )receive_someencodelen)rp   countdigitresultnewlines       r-   	drain_onez3test_interactive.<locals>.expect.<locals>.drain_one   s       !)'-':':5'A!A%UG*;*;*=F*KLLV,  !) !A:%!'!4!4S\!BBgMMM	 "B Cs'   BB9B$B<B	=B	Br   rQ   )rp   r!   r   intr   r   rw   rx   )r   rF   rg   rh   rb   )idxrequestrK   r   r   r:   s       r-   expectz test_interactive.<locals>.expect   s     ))+ U UwN)N25N>ANN {{..{{..""9dkk7C!GL""9dkk7Q;aRSTU U U U U U UsE   B=B$B=A3B(B=B&B=&B=(B:.B1/B:6B=   s   12g?s   345r   i90  s   100s   200rQ   d   r         0   s   999999   i?B r/   )r   r   r   r   rw   rx   )r.   r{   r|   r'   rf   rg   rh   r   rj   r   r   r   rk   r   r@   r9   )rM   r   scoper   r:   s      @@r-   test_interactiver      s     "		
 oo 9 9 
 %g	U$ zz%%{{&&{{&&] 	**%%e,,,***%%fw&6777E"""**%%fw&6&?'&IJJJC.  C.  **%%dWn555A,**%%i000s# #uQl""#)))**%%g...F###**##%%%11!44;;11!44;;))+'	M9 9v ??aw9N -7"J  50"# # /#%44'	 	M9 9 9 9s  AL$K	L$ALL2K3LK
%L+K,L<K=+L(K)L9K:L
K%L0K1LK"L$K"%L4K(K%
K(4L:K5;LK7!L-K9."LK;'L8K=9LK?LL"L$-L.L$L
LLLLLLLL"L%K((K2-	L7L9L;L=L?LL
	LL$L!LL!L$c                   K   t        d t        d      D              } t        t        | dd       d {   }|j                  t        k(  sJ |j
                  dk(  sJ |j                  | k(  sJ |j                  dk(  sJ t        t        d       d {   }|j                  t        k(  sJ |j
                  dk(  sJ |j                  dk(  sJ |j                  J t        t        | dd       d {   }|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 {    d d d        d}t        j                  t        |      5  t        t        t        j                  
       d {    d d d        t        j                  t        |      5  t        t        t        j                         d {    d d d        t        j                  t        |j                  ddd            5  t        t        t        j                         d {    d d d        t        j                  t        d      5  t        t        dt        j                          d {    d d d        t        j                  t        d      5  t        t        dd        d {    d d d        y 7 7 p7 7 # 1 sw Y   xY w7 X# 1 sw Y   XxY w7 # 1 sw Y   xY w7 # 1 sw Y   xY w7 # 1 sw Y   xY w7 b# 1 sw Y   y xY ww)Nc              3  H   K   | ]  }t        j                  d d        yw)r      N)randomrandint).0_s     r-   	<genexpr>ztest_run.<locals>.<genexpr>#  s     >A3'>s    "i   T)rf   capture_stdoutcapture_stderrr   r/   r   ru   zoh no, it's textrf   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)rg   rg   rh   rQ   )rh   z.^can't specify both stdout and capture_stdout$)r   rg   z.^can't specify both stderr and capture_stderr$)r   rh   )ry   ranger   CATrA   r9   rg   rh   rz   pytestraisesUnicodeError
ValueErrorr{   r|   replaceDEVNULL)datar   pipe_stdout_errors      r-   test_runr   "  s    >u>>D4T F ;;#!!==D  ==Cs488F;;#!!==C==  3	 F ;;EEE!!==D  ==D2J&& 
|	$ 9#%78889 H	z):	; 6#Z__5556	z):	; 7#joo6667	+33HhJ
 7 #joo6667 
>
 O #d:;M;MNNN	O
 
>
 A #d4@@@	A AW 9 	99 9
 	66 6 	77 7
 	77 7 	O	O O 	A	A As2  2M%LA M%LAM%5L6A+M%!L6L7L;%M% #LLL#M%+#L.L+L.4M%#L=*L;+L=/#M%$M6M	7M;#M%M4M5M9
M%M%M%LLM%LL(#M%+L..L83M%;L==MM%	MMM%MM"M%c                 j  K   t        d      } t        j                  t        j                        5 }t        | t        j                  d       d {    d d d        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 {   }|j                  | k(  sJ |j                  dk(  sJ |j                  dk(  sJ |j                  dk(  sJ y 7 # 1 sw Y   xY w7 Ww)	Nz/sys.stderr.buffer.write(b'test\n'); sys.exit(1)T)rf   r   rQ   s   test
F)r   r   rE   r/   )r.   r   r   r{   CalledProcessErrorr   r   valuecmdr9   rh   rg   rA   )r   excinfor   s      r-   test_run_checkr   W  s    
C
DC	z44	5 N#Z%7%7MMMN==##==##q((==9,,==''DU F ;;#==C==I%%!!! 	NN Ns<   /D3 D%D#D%BD3D1A	D3#D%%D.*D3c                    K   t        t        j                  ddgddz         d {   } | j                  dk(  sJ | j                  | j
                  cxu rJ  J y 7 6w)Nr)   zimport sys; sys.stdin.close()   xi   r   r   )r   r*   r+   r9   rg   rh   )r   s    r-   test_run_with_broken_piper   i  s^     	>?tf} F !!==FMM11111	s   %A A7A c                  K    | t         t        j                  t        j                  t        j                        4 d {   }|j                  J |j
                  J |j                  J |j                  j                  d       d {    |j                  j                          d {    g }	 |j                  j                  d       d {   }|dk(  rn|j                  |       ;dj                  |      dk(  sJ d d d       d {    j                  dk(  sJ t        t         ddt        j                         d {   }|j                  dk(  sJ |j
                  dk(  sJ |j                  J  | t        t        j                  t        j                  	      4 d {   }|j
                  J |j                  J |j                  j!                          d {    |j#                          d {    d d d       d {    |j                  dk(  sJ t$        rJ	 t'        j(                         \  }} | t         t        j                  |t        j                        4 d {   }t'        j*                  |       |j                  J |j
                  J |j                  J |j                  j                  d       d {    |j                  j!                          d {    |j#                          d {   dk(  sJ t'        j,                  |d
      dk(  sJ t'        j,                  |d
      dk(  sJ d d d       d {    t'        j*                  |       y y 7 ?7 7 7 7 x# 1 d {  7  sw Y   xY w7 W7 7 7 7 # 1 d {  7  sw Y   xY w7 M7 7 7 7 n# 1 d {  7  sw Y   ~xY w# t'        j*                         w xY ww)Nre   s   1234T   r/   s   12344321r   )rf   r   rh   )rf   rh   i   )rz   r{   r|   STDOUTstdiorg   rh   rj   send_eofr   appendjoinr9   r   r   rf   rk   r@   r'   ospipecloseread)rM   r:   outputrs   r   rws          r-   test_stderr_stdoutr   r  s[    !3oo  	 / /
 
zz%%{{&&{{""jj!!'***jj!!###**11"55E|MM% 	 
 xx;..%/ /& ??a 3  	 F !!==K''==   ":??:+<+<  	{{""{{""jj!!!iik  ??a	779DAq); oo!((	 / /
 zz)){{**{{**jj))'222jj'')))!YY[(A--wwq$';66wwq$'3../ /  HHQK) W/ 	+# 6/ / / /,
 	"   / 3)(/ / / /  HHQKs  ?PN PA	NN!N0N1%NN	2N	PN9PN%A#P2N(3P6:N40N+1N4N.	N4PN1P6AO* =O
>O* AOO !OOOO?OO* $O%O* )PNN	NPN"NN"	P(P+N4.N41P4O:N=;OP
O* OOOO* O'OO'#O* *PPc                    K   t        j                  t              5 } t        dgd       d {    d d d        dt	         j
                        v sJ dt	        | j
                        v sJ t        rpt        j                  t              5 } t        dgd       d {    d d d        t        j                  t              5 } t        dd       d {    d d d        y y 7 # 1 sw Y   xY w7 S# 1 sw Y   RxY w7 *# 1 sw Y   y xY ww)	Nlszutf-8)encodingzunbuffered byte streamsz&the 'encoding' option is not supportedT)shellF)r   r   	TypeErrorr   r1   r   r'   )r   s    r-   test_errorsr     s     	y	! 5WD6G4445 %GMM(:::3s7==7III]]9% 	3vT222	3]]9% 	2t5111	2 	2 	 	55 5 3	3 	3 2	2 	2s   DC&C$C&ADC4C2C4#!DDD D
D$C&&C/+D2C44C=9D DDDc                *   K   	 	 	 	 	 	 d fd} |t         j                  t               d {     |t         j                  t               d {    t
        st        st        j                  dk7  r |d t               d {    y y 7 ^7 =7 
w)Nc                  K   t        d      5 } t        d            4 d {   } | |       |j                          d {    d d d       d {    d d d        j                  rJ t        r|J j
                  | k(  sJ y j
                  dk7  sJ y 7 y7 [7 M# 1 d {  7  sw Y   ]xY w# 1 sw Y   axY ww)N      ?  r   )r   r4   r@   r   r'   r9   )send_itsignumr   r:   rM   s       r-   test_one_signalz%test_signals.<locals>.test_one_signal  s      3 	"5)%+6 " "$iik!!" "	" )))%%??vg---??a'''"!" " " "	" 	"st   CB:BB:B%B!B%
B:B#B:ACB:!B%#B:%B7	+B.,B7	3B::C?Cr"   c                ,    | j                  t              S r>   )send_signalr&   r:   s    r-   <lambda>ztest_signals.<locals>.<lambda>  s    4+;+;G+D r/   )r   zCallable[[Process], None]r   zsignal.Signals | Nonerw   rx   )
r   r?   r$   	terminater%   r   r'   r*   r8   r&   )rM   r   s   ` r-   test_signalsr     s     (*(4I(	( ',,
000
'++W
555 e(?DgNNN )@ 15 	Os3   +BB"BB4BBBBBzPOSIX specific)reasonc                n  K   t         rt        j                  dk(  ry t        j                  t        j                  t        j
                        }	  | t        d            4 d {   }t        j                         4 d {   }|j                  |j                         t                d {    |j                          t        j                         dz   |j                  _        d d d       d {    j                  j                   rJ |j"                  dk(  sJ d d d       d {    t        j                  t        j                  |       y 7 7 7 7 h# 1 d {  7  sw Y   xxY w7 F# 1 d {  7  sw Y   VxY w# t        j                  t        j                  |       w xY ww)Nr"   r   r   r   )r   r*   r8   signalSIGCHLDSIG_IGNr4   r   rF   rb   r@   r   r?   r}   rI   r~   r   r9   )rM   old_sigchldr:   rK   s       r-   test_wait_reapable_failsr     sO     0--?K3 &eDk2 	( 	(d))+ K Kw""499-,...		050B0B0Ds0J$$-	K K
 ++<<<??a''	( 	( 	fnnk2	(K.K K K K	( 	( 	( 	( 	fnnk2s   AF5F %E&F )E7EE7)E /E0:E *E75E6-E7#F .E5/F 3%F5F E7E E7 E2	&E)'E2	.E75F 7F	=F >F	F &F22F5c                 ,   ddl m}  t        r't        j                  dk(  st        j                  dk(  ry | j
                  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                          j#                  d      dk(  sJ 	 j$                   j'                          j#                          t        j                  t        j                  |       y # j$                   j'                          j#                          t        j                  t        j                  |       w xY w)Nr   )wait_child_exitingr"   darwinwaitidzwaitid only)sync_wait_reapableFr   3600c                *    dj                          y NT)r?   )r;   frame	got_alarmsleepers     r-   on_alarmz#test_waitid_eintr.<locals>.on_alarm  s    	r/   rQ   )timeouti)r;   r   r   zFrameType | Nonerw   rx   )_subprocess_platformr   r   r*   r8   
__module__endswithr   skip_subprocess_platform.waitidr   r{   Popenr   SIGALRMalarmpidr@   r9   r?   )r   r   r   old_sigalrmr   r   s       @@r-   test_waitid_eintrr     s    :#,,'1S\\X5M((11(;M"
 I01G
 --9K
3Q7;;'||A|&",,,% LLNLLNfnnk2 % LLNLLNfnnk2s   1>E AFc            	     b  K   ddfd} t        j                         4 d {   }|j                  t        t        t        d      |              t                d {    |j                  j                          d d d       d {    sJ y 7 o7 57 # 1 d {  7  sw Y   xY ww)NFc                   K   d| j                          	 t                d {    | j                  J y 7 # | j                  J w xY wwr   )r   r   r9   )r:   custom_deliver_cancel_calleds    r-   custom_deliver_cancelz9test_custom_deliver_cancel.<locals>.custom_deliver_cancel#  sM     '+$	//!!??... "??...s%   A: 8: A: A

ArZ   deliver_cancelr:   r   rw   rx   	r   rF   rb   r   r   r4   r   rI   rJ   )r   rK   r   s     @r-   test_custom_deliver_cancelr     s     #( 	/ !!# & &wKt=RS	
 %&&&##%& & (''& 	'	& & & &sV   !B/BB/8B B!B?B/
B
B/BB/B, B#!B,(B/c                     dddfd} t        t        t        t        d                  5  t        j                  | d       d d d        y # 1 sw Y   y xY w)Nc                @   K   | j                          t        d      w)Nfoo)r   r   r   s    r-   r   z6test_bad_deliver_cancel.<locals>.custom_deliver_cancel9  s     s   c            	     J  K   t        j                         4 d {   } | j                  t        t        t        d                   t                d {    | j                  j                          d d d       d {    y 7 k7 17 	# 1 d {  7  sw Y   y xY ww)NrZ   r   r  )rK   r   s    r-   do_stuffz)test_bad_deliver_cancel.<locals>.do_stuff=  s     %%' 	* 	*7U4[AVW )***  '')	* 	* 	* +		* 	* 	* 	*sV   B#BB#8BB
B7B#BB#
BB#B BB B#z^foo$T)strict_exception_groupsr  rv   )r   r   r   r   run)r	  r   s    @r-   test_bad_deliver_cancelr  8  sF     * 
[W!=>	? :		(D9: : :s   AAc                  K   t         j                  dfd}| j                  t         d|       t        j                  t
        d      5  t        j                         4 d {   }|j                  t        t        d             t                d {    |j                  j                          d d d       d {    d d d        y 7 h7 97 # 1 d {  7  sw Y   !xY w# 1 sw Y   y xY ww)Nc                *     |        t        d      )Nwhoops)OSError)selforiginal_terminates    r-   broken_terminatez>test_warn_on_failed_cancel_terminate.<locals>.broken_terminateM  s    4 hr/   r   z
.*whoops.*r   rZ   )r  r   rw   r   )r   r   setattrr   warnsRuntimeWarningr   rF   rb   r   r4   r   rI   rJ   )monkeypatchr  rK   r  s      @r-   $test_warn_on_failed_cancel_terminater  J  s      **  .>?	nL	9 *%%' 	* 	*7{E$K8(***  '')	* 	** *	**	* 	* 	* 	** *sx   A	C5C)%C&C))-CCC5C) CC)	C5C)CC)C&	CC&	"C))C2.C5z
posix onlyc                  K   |j                  t        dd        t        j                  t        d      5  t        j                         4 d {   }|j                  t        t        d             t                d {    |j                  j                          d d d       d {    d d d        y 7 h7 97 # 1 d {  7  sw Y   !xY w# 1 sw Y   y xY ww)Nr   c                      y r>    )rA   s    r-   r   z8test_warn_on_cancel_SIGKILL_escalation.<locals>.<lambda>^  s    r/   z.*ignored SIGTERM.*r   rZ   )r  r   r   r  r  r   rF   rb   r   r4   r   rI   rJ   )autojump_clockr  rK   s      r-   &test_warn_on_cancel_SIGKILL_escalationr  Z  s      .@A	n,A	B *%%' 	* 	*7{E$K8(***  '')	* 	** *	**	* 	* 	* 	** *sv   4CCB8C-B> B:B>C*B<+C/	C8C:B><C>C	CC	CCCc                 ^  K   t        t        j                        5  t        j                         4 d {   } | j                  t        t               d {   }d d d       d {    d d d        j                  dk(  sJ y 7 P7 07 "# 1 d {  7  sw Y   2xY w# 1 sw Y   6xY ww)NrQ   )	r   r{   r   r   rF   rH   r   rV   r9   )rK   r:   s     r-    test_run_process_background_failr  i  s     	Z22	3 I%%' 	I 	I7")--Z"HHD	I 	II ??a	IH	I 	I 	I 	II Iss   B-B!BB!BBBB!'B
(B!,B-B!B
B!B	BB	B!!B*&B-/dev/fdz,requires a way to iterate through open filesc                   K   t        j                          t        t        d      j	                               } t        t               d {    t        t        d      j	                               | k(  sJ t        j                  t        j                        5  t        t               d {    d d d        t        t        d      j	                               | k(  sJ t        j                  t              5  t        dg       d {    d d d        t        t        d      j	                               | k(  sJ y 7 7 # 1 sw Y   xY w7 D# 1 sw Y   CxY ww)Nr   z	/dev/fd/0)gccollectsetSyncPathiterdirr   rR   r   r   r{   r   rV   PermissionError)starting_fdss    r-   test_for_leaking_fdsr)  p  s    
 JJLx	*2245L
i
   x	"**,-==	z44	5 &*%%%&x	"**,-==		' );-((()x	"**,-=== ! 	&& &
 	)) )sh   A	ED?AEE-E.E2AE:E
EE1EEEEEEEc                   K   dd}| j                  t        j                  d|       t        t        t              5  t        t        d       d {    d d d        y 7 # 1 sw Y   y xY ww)Nc                    K   yw)Noopsr  )rA   rB   s     r-   very_broken_openz9test_run_process_internal_error.<locals>.very_broken_open  s	     s   r   Tr   )rA   objectrB   r.  rw   r1   )r  trio_subprocessr   AttributeErrorr   rR   )r  r-  s     r-   test_run_process_internal_errorr2    s]      ((.:JK	^^	4 :)D999: :9: :s.   :A-A!AA!	A-A!!A*&A-c                   K   d dfd} t        t        d             d {   }t        j                         4 d {   }|j	                  | |       t                d {    t        t              sJ |j                          t               5  |j                  j                          |j                          d d d        t        d      5  j                          d {    d d d        j                         sJ d       d d d       d {    y 7 7 7 # 1 sw Y   cxY w7 F# 1 sw Y   ExY w7 %# 1 d {  7  sw Y   y xY ww)Nc                v   K   t               | j                          d {    j                          y 7 wr>   )r   r@   r$  )r:   noticed_exits    r-   wait_and_tellz7test_subprocess_pidfd_unnotified.<locals>.wait_and_tell  s.     wiik 	s   979rZ   r   z,child task wasn't woken after poll, DEADLOCKr  )r   r4   r   rF   rb   r   rS   r   r   r   r]   r@   pollr   is_set)r6  r:   rK   r5  s      @r-    test_subprocess_pidfd_unnotifiedr9    s/    L eDk**D!!# U Uw=$/$&&&,.."$ 	JJOOIIK		
 1 	& ##%%%	& ""$T&TTU U U +U&	 	 &	& 	&U U U Us    EDE DE D>$D %0D>+D" D>D0'D.(D0,D>ED<EE D>"D+	'D>.D00D9	5D><E>EEEE)r,   r1   rw   	list[str])r3   r   rw   r:  )r:   r   r;   r#   rw   bool)rA   r	   rB   r	   rw   zAsyncIterator[Process])rM   rO   rw   rx   rv   )r  pytest.MonkeyPatchrw   rx   )r  r   r  r<  rw   rx   )`
__future__r   r"  r   r   r   r{   r*   
contextlibr   	functoolsr   pathlibr   r%  r   typingr   r	   r
   r   r   r   r   r/  trio.testingr   r    r   r   r   r   r   r   r   r   _core._tests.tutilr   r   lowlevelr   testingr   r   r   typesr   typing_extensionsr    _abcr!   r8   r#   __annotations__namer'   r$   r%   r&   r.   rR   rV   r   r4   r<   rC   rL   markparametrizebackground_process_paramrO   rX   r_   rc   rz   r   r   r   r   r   r   r   r   skipifr   r   r  r  r  r  r  existsr)  r2  r9  r  r/   r-   <module>rQ     s9   " 	 	    
 *  $     -	 	 	 A # N N+$<<7 J	 #J	#	 	 	 
7%CLLG$;00 0GWg? =!	M"
?@'
=$   & & ";;2234	12 3   $,C1DW1M,M#N y N    (-(	( (  & /5*/ + & &D G  G T2Aj"$ 2 2 @ @F2 O O8 I&673  83( %3 %3P(0:$*  Il3	*	*,>	*		* 4	*  ""$$9  >	> :Ur/   