
    EgcW                       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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l,m-Z- ddl.m/Z/ ej0        dk    rdZ1de2d<   neZ1de2d<   de2d<   de2d<   de2d<   ej3        dk    Z4ese4sej0        dk    rd dlm5Z5m6Z6m7Z7 nd\  Z5Z6Z7dTdZ8 e8d          Z9 e8d          Z: e8d           Z;e4rdUd#Z<ndUd$Z<dVd)Z=e	dWd.            Z>e	dWd/            Z?ej@        A                    d0e>e?gd1d2g3          ZBed4ee         f         ZCde2d5<   eBdXd7            ZDeBdXd8            ZEeBdXd9            ZF e8d:          ZGeBdXd;            ZHeBdXd<            ZIdYd=ZJdYd>ZKe"dYd?            ZLeBdXd@            ZMdYdAZNeBdXdB            ZOej@        P                    e4 dCD          eBdXdE                        ZQe#dYdF            ZRdYdGZSdZdJZTej@        P                    e4 dKD          d[dN            ZUdYdOZVej@        P                     edP          W                                 dQD          dYdR            ZXdYdSZYdS )\    )annotationsN)asynccontextmanager)partial)Path)Signals)TYPE_CHECKINGAnyAsyncContextManagerAsyncIteratorCallableNoReturn   )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    P/var/www/sysmax/venv/lib/python3.11/site-packages/trio/_tests/test_subprocess.pypythonr/   @   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'   r1   s    r.   SLEEPr5   J   s    W&&r0   c                (    t          d|  d          S )Nzimport time; time.sleep())r/   r4   s    r.   r5   r5   O   s    ;;;;<<<r0   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)r8   r9   s     r.   
got_signalr>   S   s9     $e $(?(?3$&&!##r0   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@   r8   s      r.   open_process_then_killrF   Z   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)r?   r@   nurseryr8   s       r.   run_process_in_nurseryrO   d   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_TRUErE   
isinstancer   _pidfdr=   repr
EXIT_FALSEformat)rP   r8   s     r.   
test_basicr\   v   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)r5   r=   rY   rD   _procrE   rX   )rP   ps     r.   test_auto_update_returncoderc      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
   )	r5   r   rI   
start_soonrE   r   rL   rM   rD   )rP   r8   rN   s      r.   test_multi_waitrg      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(   rS   c                    K   j         J j                                         d {V  j                                          d {V  d S rC   )rj   send_allaclose)msgr8   s   r.   
feed_inputztest_pipes.<locals>.feed_input   si      :)))*%%c**********##%%%%%%%%%%%r0   streamr   expectedbytesc                V   K   t                      }| 2 3 d {V }||z  }6 ||k    sJ d S rC   )	bytearray)rr   rs   seenchunks       r.   check_outputz test_pipes.<locals>.check_output   s^      ;;D%       e  &8######s    g      >@r   r(   rS   )rr   r   rs   rt   r(   rS   )+COPY_STDIN_TO_STDOUT_AND_BACKWARD_TO_STDERR
subprocessPIPErk   rl   r   rI   current_timerL   deadlinerf   cancelled_caughtrE   )rP   rq   ry   rN   rp   r8   s       @@r.   
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
ri      
s   
idxr2   requestr(   rS   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 )Nrr   r   countr2   digitr(   rS   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)rr   r   r   resultnewlines       r.   	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Mr0   r   rU   )rr   r   r   r2   r   r2   r(   rS   )r   rI   rk   rl   rf   )r   r   rN   r   r   r8   s       r.   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   200rU   d   r         0   s   999999   i?B r0   )r   r2   r   r2   r(   rS   )r/   r}   r~   r%   rj   rk   rl   r   rn   r   r   r   ro   r   rE   r=   )rP   r   scoper   r8   s      @@r.   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     r.   	<genexpr>ztest_run.<locals>.<genexpr>   s.      >>A3''>>>>>>r0   i   T)rj   capture_stdoutcapture_stderrr   r0   )r   rz   zoh no, it's textrj   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)rk   rk   rl   rU   )rl   z.^can't specify both stdout and capture_stdout$)r   rk   z.^can't specify both stderr and capture_stderr$)r   rl   )rt   ranger   CATr?   r=   rk   rl   r|   pytestraisesUnicodeError
ValueErrorr}   r~   replaceDEVNULL)datar   pipe_stdout_errors      r.   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)rj   r   rU   s   test
F)r   r   rH   r0   )r/   r   r   r}   CalledProcessErrorr   r   valuecmdr=   rl   rk   r?   )r   excinfor   s      r.   test_run_checkr   T  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=   rk   rl   )r   s    r.   test_run_with_broken_piper   f  s      	>?tf}        F !!!!=FM11111111111r0   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 )Nri   s   1234T   r0   s   12344321r   )rj   r   rl   )rj   rl   i   )r|   r}   r~   STDOUTstdiork   rl   rn   send_eofr   appendjoinr=   r   r   rj   ro   rE   r%   ospipecloseread)rP   r8   outputrx   r   rws          r.   test_stderr_stdoutr   o  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    r.   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(   rS   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   r5   rE   r   r%   r=   )r   r   r   r8   rP   s       r.   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 rC   )send_signalr$   )r8   s    r.   <lambda>ztest_signals.<locals>.<lambda>  s    4+;+;G+D+D r0   )r   r   r   r   r(   rS   )
r   rD   r"   	terminater#   r   r%   r,   r<   r$   )rP   r   s   ` r.   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 )@(?r0   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_IGNr5   r   rI   rf   rE   r   rD   r   rL   r   r   r=   )rP   old_sigchldr8   rN   s       r.   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   3600r9   r2   frameFrameType | Noner(   rS   c                4    d                                  d S NT)rD   )r9   r   	got_alarmsleepers     r.   on_alarmz#test_waitid_eintr.<locals>.on_alarm
  s    	r0   rU   )timeouti)r9   r2   r   r   r(   rS   )_subprocess_platformr   r   r,   r<   
__module__endswithr   skip_subprocess_platform.waitidr   r}   Popenr   SIGALRMalarmpidrE   r=   rD   )r   r   r   old_sigalrmr   r   s       @@r.   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 )
NFr8   r   r(   rS   c                   K   d|                                   	 t                       d {V  | j        J d S # | j        J w xY wr   )r   r   r=   )r8   custom_deliver_cancel_calleds    r.   custom_deliver_cancelz9test_custom_deliver_cancel.<locals>.custom_deliver_cancel   sl      '+$	///!!!!!!!?.....4?.......s	   : Ar^   )deliver_cancelr8   r   r(   rS   )	r   rI   rf   r   r   r5   r   rL   rM   )r  rN   r   s     @r.   test_custom_deliver_cancelr    sb     #( 	/ 	/ 	/ 	/ 	/ 	/ !## & & & & & & &wKt=RSSS	
 	
 	
 %&&&&&&&&&##%%%& & & & & & & & & & & & & & & & & & & & & & & & & & & ('''''s   A%B
B&)B&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    r.   broken_terminatez>test_warn_on_failed_cancel_terminate.<locals>.broken_terminate8  s"    4   hr0   r   z
.*whoops.*r   r^   )r  r   r(   r   )r   r   setattrr   warnsRuntimeWarningr   rI   rf   r   r5   r   rL   rM   )r  r  rN   r  s      @r.   $test_warn_on_failed_cancel_terminater  5  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 rC    )r?   s    r.   r   z8test_warn_on_cancel_SIGKILL_escalation.<locals>.<lambda>I  s    D r0   z.*ignored SIGTERM.*r   r^   )r  r   r   r  r  r   rI   rf   r   r5   r   rL   rM   )r  r  rN   s      r.   &test_warn_on_cancel_SIGKILL_escalationr  E  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                 V  K   t          j        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 )NrU   )
r   r   r}   r   r   rI   rK   r   rZ   r=   )rN   r8   s     r.    test_run_process_background_failr  T  s     	z4	5	5 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'A4"B4
A>	>BA>	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   rV   r   r   r}   r   rZ   PermissionError)starting_fdss    r.   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	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 )
Nr8   r   r(   rS   c                   K   t                      |                                  d {V                                   d S rC   )r   rE   r  )r8   noticed_exits    r.   wait_and_tellz7test_subprocess_pidfd_unnotified.<locals>.wait_and_tells  sH      wwiikkr0   r^   r   z,child task wasn't woken after poll, DEADLOCKr  )r   r5   r   rI   rf   r   rW   r   r   r   ra   rE   pollr   is_set)r&  r8   rN   r%  s      @r.    test_subprocess_pidfd_unnotifiedr)  p  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)   )r1   r2   r(   r)   )r8   r   r9   r!   r(   r:   )r?   r	   r@   r	   r(   rA   )rP   rR   r(   rS   r{   )r  r  r(   rS   )r  r   r  r  r(   rS   )Z
__future__r   r  r   r   r   r}   r,   
contextlibr   	functoolsr   pathlibr   r  r   typingr   r	   r
   r   r   r   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$   r/   rV   rZ   r   r5   r>   rF   rO   markparametrizebackground_process_paramrR   r\   rc   rg   r|   r   r   r   r   r   r   r   r   skipifr   r   r  r  r  r  existsr"  r)  r  r0   r.   <module>r=     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r0   