
     f[                    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j4        dk    rdZ5de6d<   neZ5de6d<   de6d<   de6d<   de6d<   ej7        dk    Z8ese8sej4        dk    rd dlm9Z9m:Z:m;Z; nd\  Z9Z:Z;dWdZ< e<d          Z= e<d           Z> e<d!          Z?e8rdXd$Z@ndXd%Z@dYd*ZAe	dZd/            ZBe	dZd0            ZCejD        E                    d1eBeCgd2d3g4          ZFed5ee         f         ZGde6d6<   eFd[d8            ZHeFd[d9            ZIeFd[d:            ZJ e<d;          ZKeFd[d<            ZLeFd[d=            ZMd\d>ZNd\d?ZOe&d\d@            ZPeFd[dA            ZQd\dBZReFd[dC            ZSejD        T                    e8 dDE          eFd[dF                        ZUe'd\dG            ZVd\dHZWd\dIZXd]dLZYejD        T                    e8 dME          d^dP            ZZd\dQZ[ejD        T                     edR          \                                 dSE          d\dT            Z]d]dUZ^d\dVZ_dS )_    )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&   )NNNcodestrreturn	list[str]c                (    t           j        ddd| z   gS )Nz-u-czimport sys; )sys
executable)r(   s    ^/var/www/api.educacionweb.es/myenv/lib/python3.11/site-packages/trio/_tests/test_subprocess.pypythonr1   C   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)   r3   s    r0   SLEEPr7   M   s    W&&r2   c                (    t          d|  d          S )Nzimport time; time.sleep())r1   r6   s    r0   r7   r7   R   s    ;;;;<<<r2   procr   sigboolc                l    t           st          st          j        dk    r| j        | k    S | j        dk    S )Nr"   r   )r   r'   r.   platform
returncode)r:   r;   s     r0   
got_signalr@   V   s9     $e $(?(?3$&&!##r2   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)rA   rB   r:   s      r0   open_process_then_killrH   ]   s      t.v........D



		iikk 			iikks   A 0A;c                J  K   t          j                    4 d {V }|                    dd           |                    t	          t
          g| R i |           d {V }|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   cancel_scopecancel)rA   rB   nurseryr:   s       r0   run_process_in_nurseryrQ   g   sA     !## & & & & & & &w'5)))%mmGK,Q$,Q,Q,Q&,Q,QRRRRRRRR



##%%%	& & & & & & & & & & & & & & & & & & & & & & & & & & & & & &s   A#B
BB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   z<trio.Process z: exited with status 0>   z<trio.Process {!r}: {}>zexited with status 1)		EXIT_TRUErG   
isinstancer   _pidfdr?   repr
EXIT_FALSEformat)rR   r:   s     r0   
test_basicr^   y   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          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)r7   r?   r[   rF   _procrG   rZ   )rR   ps     r0   test_auto_update_returncodere      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
   )	r7   r   rK   
start_soonrG   r   rN   rO   rF   )rR   r:   rP   s      r0   test_multi_waitri      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*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*   rU   c                    K   j         J j                                         d {V  j                                          d {V  d S rE   )rl   send_allaclose)msgr:   s   r0   
feed_inputztest_pipes.<locals>.feed_input   si      :)))*%%c**********##%%%%%%%%%%%r2   streamr!   expectedbytesc                V   K   t                      }| 2 3 d {V }||z  }6 ||k    sJ d S rE   )	bytearray)rt   ru   seenchunks       r0   check_outputz test_pipes.<locals>.check_output   s^      ;;D%       e  &8######s    g      >@r   r*   rU   )rt   r!   ru   rv   r*   rU   )+COPY_STDIN_TO_STDOUT_AND_BACKWARD_TO_STDERR
subprocessPIPErm   rn   r   rK   current_timerN   deadlinerh   cancelled_caughtrG   )rR   rs   r{   rP   rr   r:   s       @@r0   
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
rk      
s   
idxr4   requestr*   rU   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 )Nrt   r!   countr4   digitr*   rU   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)rt   r   r   resultnewlines       r0   	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Mr2   r   rW   )rt   r!   r   r4   r   r4   r*   rU   )r   rK   rm   rn   rh   )r   r   rP   r   r   r:   s       r0   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   200rW   d   r         0   s   999999   i?B r2   )r   r4   r   r4   r*   rU   )r1   r   r   r'   rl   rm   rn   r   rp   r   r   r   rq   r   rG   r?   )rR   r   scoper   r:   s      @@r0   test_interactiver      s      "!		
 		
 o   9 9 9 9 9 9 9 9 
 -%%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;;;;))++'	 	 	 	 	 	 	 	 	 	 	 	 	 	 	M9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9v ?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     r0   	<genexpr>ztest_run.<locals>.<genexpr>#  s.      >>A3''>>>>>>r2   i   T)rl   capture_stdoutcapture_stderrr   r2   r   r|   zoh no, it's textrl   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)rm   rm   rn   rW   )rn   z.^can't specify both stdout and capture_stdout$)r   rm   z.^can't specify both stderr and capture_stderr$)r   rn   )rv   ranger   CATrA   r?   rm   rn   r~   pytestraisesUnicodeError
ValueErrorr   r   replaceDEVNULL)datar   pipe_stdout_errors      r0   test_runr   "  s     >>u>>>>>D4T        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	+33HhJJ
 
 
 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)rl   r   rW   s   test
F)r   r   rJ   r2   )r1   r   r   r   CalledProcessErrorr   r   valuecmdr?   rn   rm   rA   )r   excinfor   s      r0   test_run_checkr   W  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,,,,='''DU        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.   r/   r?   rm   rn   )r   s    r0   test_run_with_broken_piper   i  s      	>?tf}        F !!!!=FM11111111111r2   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 )Nrk   s   1234T   r2   s   12344321r   )rl   r   rn   )rl   rn   i   )r~   r   r   STDOUTstdiorm   rn   rp   send_eofr   appendjoinr?   r   r   rl   rq   rG   r'   ospipecloseread)rR   r:   outputrz   r   rws          r0   test_stderr_stdoutr   r  s     !!3o 	   / / / / / / / /
 
z%%%{&&&{"""j!!'*********j!!#########	!*11"55555555E||MM%   		!
 xx;.....%/ / / / / / / / / / / / / / / / / / / / / / / / / / /& ?a 3 	        F !!!!=K''''=    "!:?:+<          	{"""{"""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)   r   r'   )r   s    r0   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*   rU   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   r7   rG   r   r'   r?   )r   r   r   r:   rR   s       r0   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 rE   )send_signalr&   r:   s    r0   <lambda>ztest_signals.<locals>.<lambda>  s    4+;+;G+D+D r2   )r   r   r   r   r*   rU   )
r   rF   r$   	terminater%   r   r'   r.   r>   r&   )rR   r   s   ` r0   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 )@(?r2   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_IGNr7   r   rK   rh   rG   r   rF   r   rN   r   r   r?   )rR   old_sigchldr:   rP   s       r0   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                    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   3600r;   r4   frameFrameType | Noner*   rU   c                4    d                                  d S NT)rF   )r;   r   	got_alarmsleepers     r0   on_alarmz#test_waitid_eintr.<locals>.on_alarm  s    	r2   rW   )timeouti)r;   r4   r   r   r*   rU   )_subprocess_platformr   r   r.   r>   
__module__endswithr   skip_subprocess_platform.waitidr   r   Popenr   SIGALRMalarmpidrG   r?   rF   )r   r   r   old_sigalrmr   r   s       @@r0   test_waitid_eintrr    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 )
NFr:   r   r*   rU   c                   K   d|                                   	 t                       d {V  | j        J d S # | j        J w xY wr   )r   r   r?   )r:   custom_deliver_cancel_calleds    r0   custom_deliver_cancelz9test_custom_deliver_cancel.<locals>.custom_deliver_cancel#  sl      '+$	///!!!!!!!?.....4?.......s	   : Ar`   deliver_cancelr:   r   r*   rU   	r   rK   rh   r   r   r7   r   rN   rO   )r  rP   r  s     @r0   test_custom_deliver_cancelr
     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 )Nr:   r   r*   rU   c                L   K   |                                   t          d          )Nfoo)r   r   r   s    r0   r  z6test_bad_deliver_cancel.<locals>.custom_deliver_cancel9  s$      r2   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 )Nr`   r  r	  )rP   r  s    r0   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    @r0   test_bad_deliver_cancelr  8  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    r0   broken_terminatez>test_warn_on_failed_cancel_terminate.<locals>.broken_terminateM  s"    4   hr2   r   z
.*whoops.*r   r`   )r  r   r*   r   )r   r   setattrr   warnsRuntimeWarningr   rK   rh   r   r7   r   rN   rO   )r  r  rP   r  s      @r0   $test_warn_on_failed_cancel_terminater  J  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 rE    )rA   s    r0   r   z8test_warn_on_cancel_SIGKILL_escalation.<locals>.<lambda>^  s    D r2   z.*ignored SIGTERM.*r   r`   )r  r   r   r  r  r   rK   rh   r   r7   r   rN   rO   )r   r  rP   s      r0   &test_warn_on_cancel_SIGKILL_escalationr$  Z  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                 L  K   t          t          j                  5  t          j                    4 d {V } |                     t          t                     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        dk    sJ d S )NrW   )	r   r   r   r   rK   rM   r   r\   r?   )rP   r:   s     r0    test_run_process_background_failr&  i  s     	Z2	3	3 I I%'' 	I 	I 	I 	I 	I 	I 	I7")--Z"H"HHHHHHHD	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	II I I I I I I I I I I I I I I ?as4   B'A/B/
A9	9B<A9	=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 )Nr'  z	/dev/fd/0)gccollectsetSyncPathiterdirr   rX   r   r   r   r   r\   PermissionError)starting_fdss    r0   test_for_leaking_fdsr0  p  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 )NrA   objectrB   r*   r)   c                 
   K   dS )Noopsr#  )rA   rB   s     r0   very_broken_openz9test_run_process_internal_error.<locals>.very_broken_open  s      vr2   r   Tr   )rA   r2  rB   r2  r*   r)   )r  trio_subprocessr   AttributeErrorr   rX   )r  r5  s     r0   test_run_process_internal_errorr9    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 )
Nr:   r   r*   rU   c                   K   t                      |                                  d {V                                   d S rE   )r   rG   r+  )r:   noticed_exits    r0   wait_and_tellz7test_subprocess_pidfd_unnotified.<locals>.wait_and_tell  sH      wwiikkr2   r`   r   z,child task wasn't woken after poll, DEADLOCKr  )r   r7   r   rK   rh   r   rY   r   r   r   rc   rG   pollr   is_set)r=  r:   rP   r<  s      @r0    test_subprocess_pidfd_unnotifiedr@    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+   )r3   r4   r*   r+   )r:   r   r;   r#   r*   r<   )rA   r	   rB   r	   r*   rC   )rR   rT   r*   rU   r}   )r  r  r*   rU   )r   r   r  r  r*   rU   )`
__future__r   r)  r   r   r   r   r.   
contextlibr   	functoolsr   pathlibr   r,  r   typingr   r	   r
   r   r   r   r   r6  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&   r1   rX   r\   r   r7   r@   rH   rQ   markparametrizebackground_process_paramrT   r^   re   ri   r~   r   r   r   r   r   r   r   r   skipifr   r  r
  r  r  r$  r&  existsr0  r9  r@  r#  r2   r0   <module>rU     s   " " " " " " " 				 				       



 * * * * * *       $ $ $ $ $ $                        - - - - - - - -	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 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    $,C1DW1M,M#N  N N N N      ( ( ( (    & /5f*/ / + & & & &D G  G  G  G T2A 2A 2A 2Aj" " " "$ 2 2 2 2 @ @ @ @F2 2 2 2 O O O O8 I&6773 3 3  873( %3 %3 %3 %3P( ( ( (0: : : :$* * * *  Il33	* 	* 	* 43	*        ""$$$9   > > >	 > : : : :U U U U U Ur2   