+
    Bie                     b   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIHt ^ RIt^ RIHt ^ RIH	t	 ^ RI
Ht ^ RIHt ^ RIHt ]P"                  '       g   ]P$                  ! R4      h]P&                  '       d   ^ RItM^ R	IHt ]P,                  ! R
R7      '       d   ]P$                  ! R4      h]P.                  RR.t]P.                  RRP3                  R"4      .tR t ! R R]P8                  4      t ! R R]P<                  4      t ! R R4      t ]PB                  R8w  d^    ! R R] 4      t" ! R R]"]P<                  4      t#]PH                  ! ]PJ                  ! 4       R4       ! R R]"]P<                  4      4       t&M ! R R ] ]P<                  4      t'](R!8X  d   ]PR                  ! 4        R# R# )#    N)mock)base_subprocess)
subprocess)utils)support)	os_helperztest module requires subprocess)unix_eventsT)addressz#Exposes ASAN flakiness in GitHub CI-czimport time; time.sleep(3600);c                  D    \         P                  P                  R 4       R # N)asyncioevents_set_event_loop_policy     8/usr/lib/python3.14/test/test_asyncio/test_subprocess.pytearDownModuler   '   s    NN))$/r   c                   &   a  ] tR t^+t o R tRtV tR# )TestSubprocessTransportc                    \         P                  ! 4       V n        R V P                  n        R V P                  n        R V P                  n        RV P                  n        R # )N)r   Mock_procstdinstdoutstderrpid)selfargskwargss   &*,r   _startTestSubprocessTransport._start,   s>    YY[


 

 



r   )r   N)__name__
__module____qualname____firstlineno__r#   __static_attributes____classdictcell____classdict__s   @r   r   r   +   s      r   r   c                   H   a a ] tR t^4t oV 3R ltRR ltR tR tRtVt	V ;t
# )SubprocessTransportTestsc                   < \         SV `  4        V P                  4       V n        V P	                  V P                  4       R # r   )supersetUpnew_test_looploopset_event_loopr    	__class__s   &r   r1   SubprocessTransportTests.setUp5   s.    &&(	DII&r   c                p    \         P                  ! 4       p\        V P                  VR .RRRR^ VR7	      pW23# )testFN)waiter)r   r   r   r3   )r    r:   protocol	transports   &&  r   create_transport)SubprocessTransportTests.create_transport:   s<    99;+		8fXudD!F<	 $$r   c                   V P                   P                  4       pV P                  V4      w  r#VP                  ^4       V P                   P	                  V4       V P                  VP                  4       ^4       V P                  VP                  P                  4       V P                  VP                  P                  4       V P                  VP                  P                  4       V P                  VP                  P                  ^ ,          R4       V P                  VP                  4       4       V P                  VP                   4       V P                  VP"                  4       V P                  VP$                  4       V P'                  \(        VP*                  \,        P.                  4       V P'                  \(        VP0                  4       V P'                  \(        VP2                  4       VP5                  4        R# )   Nr   )r3   create_futurer=   _process_exitedrun_until_completeassertEqualget_returncode
assertTrueconnection_madecalledprocess_exitedconnection_lost	call_argsassertFalse
is_closingassertIsNone_loopr   	_protocolassertRaisesProcessLookupErrorsend_signalsignalSIGTERM	terminatekillcloser    r:   r<   r;   s   &   r   test_proc_exited)SubprocessTransportTests.test_proc_exitedA   sq   ((*"33F;	!!!$		$$V,113Q700778//6670077811;;A>H--/0)//*)//*)--. 	,#//	A,i.A.AB,inn=r   c                   V P                   P                  4       pV P                  V4      w  r#VP                  ^4       V P                   P	                  V4       V P                  \        V4      R4       RVn        V P                  \        V4      R4       RVn        RVn        V P                  \        V4      R4       VP                  4        R# )r@   z-<TestSubprocessTransport pid=-1 returncode=6>Nz(<TestSubprocessTransport pid=-1 running>z%<TestSubprocessTransport not started>)
r3   rA   r=   rB   rC   rD   repr_returncode_pidrX   rY   s   &   r   test_subprocess_repr-SubprocessTransportTests.test_subprocess_repr[   s    ((*"33F;	!!!$		$$V,O;	
 !%	O6	
 	 $	O3	
 	r   r3   r   )r%   r&   r'   r(   r1   r=   rZ   r`   r)   r*   __classcell__r6   r,   s   @@r   r.   r.   4   s     '
%4 r   r.   c                     a  ] tR t^st o R tR tR tR tR tR t	R t
R t]P                  ! ]P                  R	8H  R
4      R 4       tR tR tR tR tR tR tR tR t]P                  ! ]P                  R09  R4      R 4       tR tR tR tR tR tR tR t R t!R t"R  t#R! t$R" t%R# t&V 3R$ lR% lt'V 3R& lR' lt(V 3R( lR) lt)R* t*R+ t+]P                  ! ]P                  R8g  R,4      R- 4       t,R.t-V t.R/# )1SubprocessMixinc                   a \         oV3R  lpV! R4      p\        P                  ! VR4      pV P                  P	                  V4      w  r4V P                  V^ 4       V P                  VR4       R# )c                   <"   \         P                  ! SR \        P                  R\        P                  / G Rj  xL
 pVP                  P                  V 4       VP                  P                  4       G Rj  xL
  VP                  P                  4        VP                  P                  4       G Rj  xL
 p VP                  4       G Rj  xL
 pW 3#  L L] L# L5ir   r   N)r   create_subprocess_execr   PIPEr   writedrainrX   r   readwait)dataprocexitcoder!   s   &  r   run.SubprocessMixin.test_stdin_stdout.<locals>.runx   s      77 oo " D JJT"**""$$$JJ ))++D!YY[(H## % ,(sE   8CC<C8C9;C4C5CCCCCC	   some datag      N@N)PROGRAM_CATr   wait_forr3   rC   rD   r    rs   taskrr   r   r!   s   &    @r   test_stdin_stdout!SubprocessMixin.test_stdin_stdoutu   sb    	$" < d+9977=1%.r   c                   a \         oV3R  lpV! R4      p\        P                  ! V\        P                  4      pV P
                  P                  V4      w  r4V P                  V^ 4       V P                  VR4       R# )c                    <"   \         P                  ! SR \        P                  R\        P                  / G Rj  xL
 pVP	                  V 4      G Rj  xL
 w  r#VP
                  V3#  L- L5iri   r   rj   r   rk   communicate
returncode)rp   rq   r   r   r!   s   &   r   rs   -SubprocessMixin.test_communicate.<locals>.run   sh      77 oo " D
 $(#3#3D#99NF??F**
 :s!   8A-A)A-A+A-+A-ru   Nrv   r   rw   r   LONG_TIMEOUTr3   rC   rD   rx   s   &    @r   test_communicate SubprocessMixin.test_communicate   sh    	+ < g&:&:;9977=1%.r   c                   a \         oV3R  lpV! 4       p\        P                  ! V\        P                  4      pV P
                  P                  V4      w  r4V P                  V^ 4       V P                  VR4       R# )c                     <"   \         P                  ! SR \        P                  R\        P                  / G Rj  xL
 p V P	                  4       G Rj  xL
 w  rV P
                  V3#  L, L5iri   r~   )rq   r   r   r!   s      r   rs   8SubprocessMixin.test_communicate_none_input.<locals>.run   sf      77 oo " D
 $(#3#3#55NF??F**
 6s!   8A,A(A,A*A,*A,r   Nr   rx   s   &    @r   test_communicate_none_input+SubprocessMixin.test_communicate_none_input   se    	+ ug&:&:;9977=1%%r   c                    V P                   P                  \        P                  ! R 4      4      pV P                   P                  VP	                  4       4      pV P                  V^4       R# )zexit 7Nr3   rC   r   create_subprocess_shellro   rD   r    rq   rr   s   &  r   
test_shellSubprocessMixin.test_shell   sP    yy++++H5
 99//		<1%r   c                    V P                   P                  \        P                  ! R RR7      4      pV P                   P                  VP	                  4       4      pV P                  V^4       R# )zexit 8T)start_new_sessionNr   r   s   &  r   test_start_new_session&SubprocessMixin.test_start_new_session   sV    yy++++"&
 99//		<1%r   c                z   \         pV P                  P                  \        P                  ! V!  4      pVP                  4        V P                  P                  VP                  4       4      p\        P                  R 8X  d   V P                  V\        4       R# V P                  \        P                  ) V4       R# win32N)PROGRAM_BLOCKEDr3   rC   r   rj   rW   ro   sysplatformassertIsInstanceintrD   rT   SIGKILLr    r!   rq   r   s   &   r   	test_killSubprocessMixin.test_kill   s    yy++**D1
 			YY11$))+>
<<7"!!*c2 fnn_j9r   c                   \         P                  R 8X  d   R\         P                   R2pMRp^ p\         P                  R 8X  d	   ^ RIHp TpV P
                  P                  \        P                  ! V\        P                  P                  VR7      4      pV P
                  P                  \        P                  ! ^4      4       \         P                  R 8X  d    VP                  \        P                  4       VP                  4        V P
                  P                  VP                  4       4      p\         P                  R 8X  d   V P!                  V\"        4       R# V P%                  \        P&                  ) V4       R# )r   "z!" -c "import time; time.sleep(2)"zsleep 1; sleep 1)CREATE_NEW_PROCESS_GROUP)r   creationflagsN)r   r   
executabler   r   r3   rC   r   r   rk   sleeprS   rT   CTRL_BREAK_EVENTrW   ro   r   r   rD   r   )r    blocking_shell_commandr   r   rq   r   s   &     r   test_kill_issue43884$SubprocessMixin.test_kill_issue43884   s   <<7"'((88Y%Z"%7"<<7"; 5Myy++++,B7K]K]KbKb')
 			$$W]]1%56<<7"V445		YY11$))+>
<<7"!!*c2 fnn_j9r   c                z   \         pV P                  P                  \        P                  ! V!  4      pVP                  4        V P                  P                  VP                  4       4      p\        P                  R 8X  d   V P                  V\        4       R# V P                  \        P                  ) V4       R# r   )r   r3   rC   r   rj   rV   ro   r   r   r   r   rD   rT   rU   r   s   &   r   test_terminateSubprocessMixin.test_terminate   s    yy++**D1
 	YY11$))+>
<<7"!!*c2 fnn_j9r   r   zDon't have SIGHUPc                B  a  \         P                   ! \         P                  \         P                  4      p R p\        P                  RV.pS P
                  P                  \        P                  ! VR\        P                  / 4      pV 3R lpS P
                  P                  V! V4      4      pS P                  \         P                  ) V4       \         P                   ! \         P                  V4       R#   \         P                   ! \         P                  T4       i ; i)z<import time; print("sleeping", flush=True); time.sleep(3600)r   r   c                    <"   V P                   P                  4       G R j  xL
 pSP                  VR4       V P                  \        P
                  4       V P                  4       G R j  xL
 pV#  LO L5i)Ns	   sleeping
)r   readlinerD   rS   rT   SIGHUPro   )rq   liner   r    s   &  r   rS   5SubprocessMixin.test_send_signal.<locals>.send_signal
  s[     ![[1133  }5  /#'99;.
!! 4 /s"   A5A1AA5*A3+A53A5N)rT   r   SIG_DFLr   r   r3   rC   r   rj   r   rk   rD   )r    old_handlercoder!   rq   rS   r   s   f      r   test_send_signal SubprocessMixin.test_send_signal   s    
 mmFMM6>>B	6QDNND$/D99//..%??D" 55k$6GHJfmm^Z8MM&--5FMM&--5s   BC7 7'Dc                  a R \         P                  ,          p\        P                  ! 4       w  poV P	                  \        P
                  V4       V P	                  \        P
                  S4       \         P                  '       dl   \        P                  ! V4      p\        P                  ! VR4       \        P                  ! RV R24      p^ RIHp V! 4       pRV./Vn        \        VR7      pMRV R2p\        V3R	7      pV P                   P#                  \$        P&                  ! \(        P*                  R
V3R\        P,                  /VB 4      pV3R lp	V	! W4      p
\.        P0                  ! 4       ;_uu_ 4        V P3                  \4        \6        3V P                   P"                  V
4       RRR4       V P                   P#                  VP9                  4       4       R#   + '       g   i     L;; i)   xTz<
                import os, msvcrt
                handle = zl
                fd = msvcrt.open_osfhandle(handle, os.O_RDONLY)
                os.read(fd, 1)
            )STARTUPINFOhandle_list)startupinfozimport os; fd = z; os.read(fd, 1))pass_fdsr   r   c                    <"   V P                   P                  V4       \        P                  ! SR 4       V P                   P                  4       G Rj  xL
  R#  L5i)s   goN)r   rl   osrm   )rq   rp   wfds   &&r   write_stdin;SubprocessMixin.test_stdin_broken_pipe.<locals>.write_stdin9  s<     JJT"HHS% **""$$$s   AAAAN)r   PIPE_MAX_SIZEr   pipe
addCleanuprX   
MS_WINDOWSmsvcrtget_osfhandleset_handle_inheritabletextwrapdedentr   r   lpAttributeListdictr3   rC   r   rj   r   r   rk   
test_utilsdisable_loggerrQ   BrokenPipeErrorConnectionResetErrorro   )r    
large_datarfdhandler   r   r   r"   rq   r   coror   s   &          @r   test_stdin_broken_pipe&SubprocessMixin.test_stdin_broken_pipe  s   G111
779S#&#&))#.F%%fd3?? (  "$ D /%-K+86(*CK'k2F%cU*:;DC6*F yy++**d oo 
	% 4,&&((0DE"ii::DB ) 			$$TYY[1 )(s    2G%%G5	c           	        R \         P                  ,          pV P                  P                  \        P
                  ! \        P                  RR\        P                  R7      4      pV P                  P                  R 4       V P                  P                  VP                  V4      4       V P                  P                  VP                  4       4       R# )r   r   passr   c                     R # r   r   )r3   msgs   &&r   <lambda>ESubprocessMixin.test_communicate_ignore_broken_pipe.<locals>.<lambda>S  s    $r   N)r   r   r3   rC   r   rj   r   r   r   rk   set_exception_handlerr   ro   )r    r   rq   s   &  r   #test_communicate_ignore_broken_pipe3SubprocessMixin.test_communicate_ignore_broken_pipeF  s    G111
 yy++**f oo
 			''(>?		$$T%5%5j%AB		$$TYY[1r   c                J  a aa ^
oS^,          ^,           oVV V3R lpS P                   P                  V! 4       4      w  r#S P                  VRS,          4       S P                  VP                  P
                  4       S P                  VP                  P
                  4       R# )
   c            	        <a"   R P                  RRS	,          R34      p SP                  P                  oV3R lpVSP                  n        \        P                  ! \
        P                  RV \        P                  P                  \        P                  P                  SR7      G Rj  xL
 pVP                  P                  ^4      pVP                  4       G Rj  xL
 w  rEWC3#  L< L5i)

import syszsys.stdout.write("x" * %s)sys.stdout.flush()c                     <"   S! V / VB G R j  xL
 w  r#\         P                  ! 4       Vn        \         P                  ! 4       Vn        W#3#  L=5ir   )r   r   pause_readingresume_reading)r!   kwr<   r;   connect_read_pipes   *,  r   connect_read_pipe_mock^SubprocessMixin.test_pause_reading.<locals>.test_pause_reading.<locals>.connect_read_pipe_mockd  sF     ,=t,Jr,J&J#	*.))+	'+/99;	(!,, 'Ks   AA>Ar   )r   r   limitN)joinr3   r   r   rj   r   r   r   rk   
_transportget_pipe_transportr   )
r   r   rq   stdout_transportr   r   r   r   r    sizes
         @r   test_pause_reading>SubprocessMixin.test_pause_reading.<locals>.test_pause_reading[  s     99,t3$ D !%		 ; ;- +ADII' 77d((--))..	 D  $AA!D#'#3#3#55NF
 -- 6s$   B&C+*C'+2C+C)
C+)C+r   N)r3   rC   rD   rF   r   rH   r   )r    r   r   r<   r   r   s   f   @@r   r   "SubprocessMixin.test_pause_readingW  s|    	A	.D !II889K9MN-	//667	00778r   c                    R  pV P                   P                  V! R4      4      w  r#V P                  VP                  4       R4       V P                  V^ 4       R# )c           
      |  "   R p\         P                  ! \        P                  RV\         P                  P
                  \         P                  P
                  \         P                  P
                  RR7      G Rj  xL
 pVP                  V 4      G Rj  xL
 w  r4VP                  4       G Rj  xL
 pW53#  L: L# L5i5import sys; data = sys.stdin.read(); print(len(data))r   Fr   r   r   	close_fdsNr   rj   r   r   r   rk   r   ro   messager   rq   r   r   rr   s   &     r   len_message?SubprocessMixin.test_stdin_not_inheritable.<locals>.len_message  s     JD 77d((--))..)).. D $(#3#3G#<<NF!YY[(H%% =(6   A9B<;B6<B<B8B<.B:/B<8B<:B<   abc   3Nr3   rC   rD   rstrip)r    r  outputrr   s   &   r   test_stdin_not_inheritable*SubprocessMixin.test_stdin_not_inheritable  sK    	&  9977F8KL$/1%r   c                    R  pV P                   P                  V! 4       4      w  r#V P                  VP                  4       R4       V P                  V^ 4       R# )c            
      |  "   R p \         P                  ! \        P                  RV \         P                  P
                  \         P                  P
                  \         P                  P
                  RR7      G Rj  xL
 pVP                  R4      G Rj  xL
 w  r#VP                  4       G Rj  xL
 pW$3#  L: L# L5i)r   r   Fr   Nr   r   r   rq   r   r   rr   s        r   empty_input5SubprocessMixin.test_empty_input.<locals>.empty_input  s     JD 77d((--))..)).. D $(#3#3C#88NF!YY[(H%% 9(r     0Nr  r    r  r	  rr   s   &   r   test_empty_input SubprocessMixin.test_empty_input  H    	&  9977F$/1%r   c                    R  pV P                   P                  V! 4       4      w  r#V P                  VP                  4       R4       V P                  V^ 4       R# )c            
      z  "   R p \         P                  ! \        P                  RV \         P                  P
                  \         P                  P                  \         P                  P                  RR7      G Rj  xL
 pVP                  4       G Rj  xL
 w  r#VP                  4       G Rj  xL
 pW$3#  L9 L# L5ir   )	r   rj   r   r   r   DEVNULLrk   r   ro   r  s        r   r  7SubprocessMixin.test_devnull_input.<locals>.empty_input  s     JD 77d((00))..)).. D $(#3#3#55NF!YY[(H%% 6(s6   A9B;;B5<B;B7B;-B9.B;7B;9B;r  Nr  r  s   &   r   test_devnull_input"SubprocessMixin.test_devnull_input  r  r   c                    R  pV P                   P                  V! 4       4      w  r#V P                  VR4       V P                  V^ 4       R# )c            
      |  "   R p \         P                  ! \        P                  RV \         P                  P
                  \         P                  P                  \         P                  P
                  RR7      G Rj  xL
 pVP                  R4      G Rj  xL
 w  r#VP                  4       G Rj  xL
 pW$3#  L: L# L5ir   r   Fr   Nr  	r   rj   r   r   r   rk   r  r   ro   r  s        r   empty_output9SubprocessMixin.test_devnull_output.<locals>.empty_output  s     JD 77d((--))11)).. D $(#3#3F#;;NF!YY[(H%% <(r  Nr3   rC   rD   )r    r   r	  rr   s   &   r   test_devnull_output#SubprocessMixin.test_devnull_output  sB    	&  9977G&1%r   c                    R  pV P                   P                  V! 4       4      w  r#V P                  VR4       V P                  V^ 4       R# )c            
      |  "   R p \         P                  ! \        P                  RV \         P                  P
                  \         P                  P
                  \         P                  P                  RR7      G Rj  xL
 pVP                  R4      G Rj  xL
 w  r#VP                  4       G Rj  xL
 pW43#  L: L# L5ir  r  r  s        r   empty_error7SubprocessMixin.test_devnull_error.<locals>.empty_error  s     JD 77d((--))..))11 D $(#3#3F#;;NF!YY[(H%% <(r  Nr"  )r    r'  r	  rr   s   &   r   test_devnull_error"SubprocessMixin.test_devnull_error  sB    	&  9977F&1%r   linuxzDon't have /dev/stdinc                    R  pV P                   P                  V! R4      4      w  r#V P                  VP                  4       R4       V P                  V^ 4       R# )c           
      |  "   R p\         P                  ! \        P                  RV\         P                  P
                  \         P                  P
                  \         P                  P
                  RR7      G Rj  xL
 pVP                  V 4      G Rj  xL
 w  r4VP                  4       G Rj  xL
 pW53#  L: L# L5i)z?file = open("/dev/stdin"); data = file.read(); print(len(data))r   Fr   Nr   r   s   &     r   devstdin_input;SubprocessMixin.test_devstdin_input.<locals>.devstdin_input  s     TD 77d((--))..)).. D $(#3#3G#<<NF!YY[(H%% =(r  r  r  Nr  )r    r.  r	  rr   s   &   r   test_devstdin_input#SubprocessMixin.test_devstdin_input  sK    	&  9977v8NO$/1%r   c                T   a  V 3R  lpS P                   P                  V! 4       4       R# )c                    <"   \         P                  ! \         G R j  xL
 p SP                  P	                  V P                  4       4      pSP                  P                  VP                  4        VG R j  xL
  VP                  4        V P                  4        V P                  4       G R j  xL
  R #  L L@  \         P                   d     LUi ; i L%5ir   )
r   rj   r   r3   create_taskro   	call_sooncancelCancelledErrorrW   )rq   ry   r    s     r   cancel_wait=SubprocessMixin.test_cancel_process_wait.<locals>.cancel_wait  s      77IID 99((5DII,


 KKM IIK))+ J ))  sR   CB6AC2B: 7B88B: <3C/C0C8B: :CCCCNr3   rC   )r    r8  s   f r   test_cancel_process_wait(SubprocessMixin.test_cancel_process_wait  s    	$ 			$$[]3r   c                   a  V 3R  lp\         P                  ! 4       ;_uu_ 4        S P                  P                  V! 4       4       RRR4       R#   + '       g   i     R# ; i)c                    <"   \         P                  ! \         p SP                  P	                  V 4      pSP                  P                  VP                  4        VG R j  xL
  R #  L  \         P                   d     R # i ; i5ir   )r   rj   r   r3   r4  r5  r6  r7  r   ry   r    s     r   cancel_make_transportYSubprocessMixin.test_cancel_make_subprocess_transport_exec.<locals>.cancel_make_transport  sc     11?CD99((.DII,

)) s<   ABA* !A("A* &B(A* *B?BBBN)r   r   r3   rC   r    r@  s   f r   *test_cancel_make_subprocess_transport_exec:SubprocessMixin.test_cancel_make_subprocess_transport_exec  s>    	 &&((II(()>)@A )(((s   !AA!	c                  a  V 3R  lp\         P                  ! 4       ;_uu_ 4        S P                  P                  V! 4       4       \         P                  ! S P                  4       RRR4       R#   + '       g   i     R# ; i)c                  B  <"   SP                   P                  ! \        P                  .\        O5!  p SP                   P                  V 4      pSP                   P                  VP                  4        VG R j  xL
  R #  L  \        P                   d     R # i ; i5ir   )	r3   subprocess_execr   SubprocessProtocolr   r4  r5  r6  r7  r?  s     r   r@  DSubprocessMixin.test_cancel_post_init.<locals>.cancel_make_transport"  sw     99,,W-G-G ?.=?D99((.DII,

)) s<   A1B5B :B;B ?BB BBBBN)r   r   r3   rC   run_brieflyrB  s   f r   test_cancel_post_init%SubprocessMixin.test_cancel_post_init   sP    		 &&((II(()>)@A""499- )(((s   AA00B	c                  a  V 3R  lp\         P                  ! 4       ;_uu_ 4         S P                  P                  V! 4       4      w  r#RRR4       S P                  X4       S P                  X4       \         P                  ! S P                  4       R#   \        P
                   d    S P                  R4        Lti ; i  + '       g   i     L; i)c                    <aa"   SP                   P                  ! \        P                  .\        O5!  p V G R j  xL
 w  rRoVV3R lpVP                  R4      pVP                  oW4n        VP                  4       pVP                  4        \        P                  ! VP                  4       ^4      G R j  xL
  VS3#  L L
5i)NFc                     < R o S! 4        R# TNr   )kill_called	orig_kills   r   rW   KSubprocessMixin.test_close_kill_running.<locals>.kill_running.<locals>.kill;  s    "r   r   )r3   rG  r   rH  r   get_extra_inforW   rE   rX   rw   _wait)	creater<   r;   rW   rq   r   rQ  rR  r    s	         @@r   kill_running=SubprocessMixin.test_close_kill_running.<locals>.kill_running5  s     YY..w/I/I A0?AF(.,IK
 ++L9D		II"113JOO""9??#4a888,, #/ 9s"   6CB?A:C6C7	CCz2Timeout failure on waiting for subprocess stoppingN)
r   r   r3   rC   r   TimeoutErrorskipTestrN   rF   rJ  )r    rW  r   killeds   f   r   test_close_kill_running'SubprocessMixin.test_close_kill_running3  s    	-( &&((%)YY%A%A N&"
 ) 	*% 	tyy) '' H )(s(   C"B&B>;C=B>>CC	c                v  a  V 3R  lp\         P                  ! 4       ;_uu_ 4        S P                  P                  V! 4       4      p\         P                  ! S P                  4       RRR4       Xw  r4pS P                  V4       S P                  V4       S P                  V4       R#   + '       g   i     LJ; i)c                    <"   SP                   P                  ! \        P                  .\        O5!  p V G R j  xL
 w  rVP                  R4      pVP                  4        VP                  4        \        P                  ! 4       Vn        VP                  4       pVP                  4       pVP                  4        WEVP                  P                  3#  L5i)Nr   )r3   rG  r   rH  r   rT  rW   ro   r   r   pollrE   rX   rH   )rV  r<   r;   rq   proc_returncodetransport_returncoder    s         r   rW  CSubprocessMixin.test_close_dont_kill_finished.<locals>.kill_runningZ  s     YY..w/I/I A0?AF(.,I++L9D IIKIIK		DI"iikO#,#;#;#= OO#499;K;KLL #/s   6CCBCN)r   r   r3   rC   rJ  assertIsNotNonerN   rL   )r    rW  resultra  transport_return_coder[  s   f     r   test_close_dont_kill_finished-SubprocessMixin.test_close_dont_kill_finishedX  s    	M& &&((YY11,.AF""499- ) :@6_-/0 	  )(s   AB((B8	c                8  "   \         P                  R 8X  d   RpMRp\        P                  ! V4      ;_uu_ 4       p\        pWCn        \        P                  ! RR7      ;_uu_ 4       pV P                  V4      ;_uu_ 4        \        P                  ! \         P                  RRVR7      G Rj  xL
  RRR4       V P                  V. 4       RRR4       RRR4       R#  L0  + '       g   i     L6; i  + '       g   i     L/; i  + '       g   i     R# ; i5i)	r   zasyncio.windows_utils.Popenzsubprocess.PopenT)recordr   r   r   N)r   r   r   patchZeroDivisionErrorside_effectwarningscatch_warningsrQ   r   rj   r   rD   )r    r   targetpopenexcwarnss   &&    r   _test_popen_error!SubprocessMixin._test_popen_errorz  s     <<7"2F'FZZ5#C #((55&&s++!88#	   ,   + 6	   ,+ 65	  s^   9D,D'C3	,C -C.C 2C3	D
DC  C0+C3	3D>DD		Dc                \    V P                   P                  V P                  R R7      4       R # )Nr   )r3   rC   rt  r    s   &r   test_popen_error SubprocessMixin.test_popen_error  s$     			$$T%;%;$%;%GHr   c                x    V P                   P                  V P                  \        P                  R 7      4       R# )r   N)r3   rC   rt  r   rk   rw  s   &r    test_popen_error_with_stdin_pipe0SubprocessMixin.test_popen_error_with_stdin_pipe  s+     			$$"""9	;r   c                L    R  pV P                   P                  V! 4       4       R# )c                  h  "   R P                  . RO4      p \        P                  ! \        P                  RV \        P
                  P                  R7      G Rj  xL
 p VP                  P                  R4      G Rj  xL
 pV'       d!   \        P                  ! R4      G Rj  xL
  KL  R#  LR L0 L5i)r   r   )r   Ni   g333333?)r   zfor _ in range(64):z     sys.stdout.write("x" * 4096)r   zsys.exit(1))
r   r   rj   r   r   r   rk   r   rn   r   )r   processrp   s      r   executeDSubprocessMixin.test_read_stdout_after_process_exit.<locals>.execute  s     99 - .D $::d)).. G
 $^^0077!--,,, 8,s<   AB2B,#B2=B.>B2
B2#B0$	B2.B20B2Nr:  r    r  s   & r   #test_read_stdout_after_process_exit3SubprocessMixin.test_read_stdout_after_process_exit  s    	& 			$$WY/r   c                T   a  V 3R  lpS P                   P                  V! 4       4       R# )c                    <"   S P                  \        4      ;_uu_ 4        \        P                  ! \        P
                  R R7      G Rj  xL
  RRR4       S P                  \        4      ;_uu_ 4        \        P                  ! \        P
                  RR7      G Rj  xL
  RRR4       S P                  \        4      ;_uu_ 4        \        P                  ! \        P
                  RR7      G Rj  xL
  RRR4       R#  L  + '       g   i     L; i Lw  + '       g   i     L}; i L8  + '       g   i     R# ; i5iT)textNzutf-8)encodingstrict)errors)rQ   
ValueErrorr   rj   r   r   rw  s   r   r  LSubprocessMixin.test_create_subprocess_exec_text_mode_fails.<locals>.execute  s     "":.. 77=AC C C / "":.. 77AHJ J J / "":.. 77?GI I I /.C /.
J /.
I /..   E*DDD%E5*DD D$%E	*D.3D,4D.8
EDD	EDD)	$E,D..D?	9	ENr:  r  s   f r   +test_create_subprocess_exec_text_mode_fails;SubprocessMixin.test_create_subprocess_exec_text_mode_fails  s    	I 			$$WY/r   c                T   a  V 3R  lpS P                   P                  V! 4       4       R# )c                    <"   S P                  \        4      ;_uu_ 4        \        P                  ! \        P
                  R R7      G Rj  xL
  RRR4       S P                  \        4      ;_uu_ 4        \        P                  ! \        P
                  RR7      G Rj  xL
  RRR4       S P                  \        4      ;_uu_ 4        \        P                  ! \        P
                  RR7      G Rj  xL
  RRR4       R#  L  + '       g   i     L; i Lw  + '       g   i     L}; i L8  + '       g   i     R# ; i5ir  )rQ   r  r   r   r   r   rw  s   r   r  MSubprocessMixin.test_create_subprocess_shell_text_mode_fails.<locals>.execute  s     "":.. 88>BD D D / "":.. 88BIK K K / "":.. 88@HJ J J /.D /.
K /.
J /..r  Nr:  r  s   f r   ,test_create_subprocess_shell_text_mode_fails<SubprocessMixin.test_create_subprocess_shell_text_mode_fails  s    	J 			$$WY/r   c                j    R  pV P                  V P                  P                  V! 4       4      4       R# )c                    "   \         P                  ! \        P                  ! \        P
                  4      R R4      G Rj  xL
 p V P                  4       G Rj  xL
  \         P                  ! \        P
                  R R\        P                  ! R4      4      G Rj  xL
 p V P                  4       G Rj  xL
  R#  Ly Lc L" L5i)r   r   N.)r   rj   r   FakePathr   r   ro   )ps    r   r  FSubprocessMixin.test_create_subprocess_exec_with_path.<locals>.execute  s      77""3>>2D&B BA&&(NN 77fi.@.@.EG GA&&(NNBGsH   >C B:CB<ACB>C3C 4C<C>C CN)rN   r3   rC   r  s   & r   %test_create_subprocess_exec_with_path5SubprocessMixin.test_create_subprocess_exec_with_path  s(    	 	$))66wyABr   c                  "   VG R j  xL
 pVP                  4       G R j  xL
 w  rEV P                  WB4       V P                  VP                  ^ 4       \        P                  ! VP                  4       4      p\        P                  ! ^ 4      G R j  xL
  V P                  VP                  4       VP                  4       R #  L L L45ir   )r   rD   r   r   r4  ro   r   re  )r    r   r	  rq   r   _ry   s   &&&    r   check_stdout_output#SubprocessMixin.check_stdout_output  s     z**,,	(!,""499;/mmA8 , 	s2   CCCCA0CC1CCCc                   < V ^8  d   QhRR/#    returnNr   )formatr,   s   "r   __annotate__SubprocessMixin.__annotate__  s     O O$ Or   c                r    R  R lpV P                   P                  V P                  V! 4       R4      4       R# )c                    V ^8  d   QhRR/# r  r   )r  s   "r   r  FSubprocessMixin.test_create_subprocess_env_shell.<locals>.__annotate__  s     
	 
	D 
	r   c                    "   \         P                  p \         P                  R 8X  d   RV  R2p V  R2p\        P                  P                  4       pRVR&   \        P                  ! W\        P                  R7      G Rj  xL
 pV#  L5i)r   r   z8 -c "import os, sys; sys.stdout.write(os.getenv('FOO'))"barFOO)envr   N)
r   r   r   r   environcopyr   r   r   rk   )r   cmdr  rq   s       r   main>SubprocessMixin.test_create_subprocess_env_shell.<locals>.main  sx     J||w& A.
!l"Z]C**//#CCJ 88Z__ D Ks   A=B?B Bs   barNr3   rC   r  r    r  s   & r    test_create_subprocess_env_shell0SubprocessMixin.test_create_subprocess_env_shell  s*    
	 			$$T%=%=dff%MNr   c                   < V ^8  d   QhRR/# r  r   )r  r,   s   "r   r  r    s     O O Or   c                r    R  R lpV P                   P                  V P                  V! 4       R4      4       R# )c                    V ^8  d   QhRR/# r  r   )r  s   "r   r  ESubprocessMixin.test_create_subprocess_env_exec.<locals>.__annotate__  s     	 	D 	r   c                     "   \         P                  R R.p \        P                  P	                  4       pRVR&   \
        P                  ! V RVR\        P                  / G Rj  xL
 pV#  L5i)r   z2import os, sys; sys.stdout.write(os.getenv('FOO'))bazr  r  r   N)	r   r   r   r  r  r   rj   r   rk   )r  r  rq   s      r   r  =SubprocessMixin.test_create_subprocess_env_exec.<locals>.main  sj     >>4GIC**//#CCJ 77&0oo D Ks   A A+"A)#A+s   bazNr  r  s   & r   test_create_subprocess_env_exec/SubprocessMixin.test_create_subprocess_env_exec  s*    	 			$$T%=%=dff%MNr   c                   < V ^8  d   QhRR/# r  r   )r  r,   s   "r   r  r    s     - - -r   c                Z   a  R  V 3R llpS P                   P                  V! 4       4       R# )c                    V ^8  d   QhRR/# r  r   )r  s   "r   r  ESubprocessMixin.test_subprocess_concurrent_wait.<locals>.__annotate__  s     
	5 
	5D 
	5r   c            	         <"   \         P                  ! \        R \        P                  R\        P                  / G Rj  xL
 p V P                  R4      G Rj  xL
 w  rSP                  VR4       SP                  V P                  ^ 4       SP                  \         P                  ! \        ^
4       Uu. uF  q P                  4       NK  	  up!  G Rj  xL
 V P                  .^
,          4       R#  L Lu upi  L&5i)r   r   Nru   )r   rj   rv   r   rk   r   rD   r   gatherrangero   )rq   r   r  r    s      r   r  =SubprocessMixin.test_subprocess_concurrent_wait.<locals>.main  s      77 oo " D
 #..|<<IFV\2T__a07>>r3SAIIK3S#TT"oo.35
 = 4TTsA   <C>C3 C>C5AC>5C7C>C<C>5C>7C>Nr:  r  s   f r   test_subprocess_concurrent_wait/SubprocessMixin.test_subprocess_concurrent_wait  s#    
	5 
	5 			$$TV,r   c                  aa	a
 . o	^^.p. R
Oo
RR.p ! V	V
3R lR\         P                  4      oR VV	3R llpV P                  P                  V! 4       4      o	V P	                  \        S	4      \        S
4      4       V Uu/ uF  qD. bK  	  ppS	 F.  pVR8X  d   K  VR,          w  rtWT,          P                  V4       K0  	  V F  pV P                  WT,          W$S	34       K  	  R	# u upi )   pipe_data_receivedpipe_connection_lostrI   c                      <a  ] tR tRt o V 3R lR ltV 3R lV3R lltV 3R lV3R lltV 3R lV3R	 lltVV3R
 ltRt	V t
R# )CSubprocessMixin.test_subprocess_protocol_events.<locals>.MyProtocoli"  c                8   < V ^8  d   QhRS[ P                  RR/# )r  exit_futurer  N)r   Future)r  r,   s   "r   r  PSubprocessMixin.test_subprocess_protocol_events.<locals>.MyProtocol.__annotate__#  s     / /GNN /t /r   c                    Wn         R # r   r  )r    r  s   &&r   __init__LSubprocessMixin.test_subprocess_protocol_events.<locals>.MyProtocol.__init__#  s    #. r   c                   < V ^8  d   QhRR/# r  r   )r  r,   s   "r   r  r  &  s     " "d "r   c                N   < SP                  R W34       V P                  4        R# )r  Nappend
exit_maybe)r    fdrp   r   s   &&&r   r  VSubprocessMixin.test_subprocess_protocol_events.<locals>.MyProtocol.pipe_data_received&  s    3R>?!r   c                   < V ^8  d   QhRR/# r  r   )r  r,   s   "r   r  r  *  s     " "t "r   c                N   < SP                  R V34       V P                  4        R# )r  Nr  )r    r  rr  r   s   &&&r   r  XSubprocessMixin.test_subprocess_protocol_events.<locals>.MyProtocol.pipe_connection_lost*  s    5r:;!r   c                   < V ^8  d   QhRR/# r  r   )r  r,   s   "r   r  r  .  s     " " "r   c                J   < SP                  R 4       V P                  4        R# )rI   Nr  )r    r   s   &r   rI   RSubprocessMixin.test_subprocess_protocol_events.<locals>.MyProtocol.process_exited.  s    ./!r   c                t   < \        S4      \        S4      8  d   V P                  P                  R 4       R# R# rP  )lenr  
set_result)r    r   expecteds   &r   r  NSubprocessMixin.test_subprocess_protocol_events.<locals>.MyProtocol.exit_maybe2  s,    v;#h-/$$//5 0r   r  N)r%   r&   r'   r(   r  r  r  rI   r  r)   r*   )r,   r   r  s   @r   
MyProtocolr  "  s7     / /" "" "" "6 6r   r  c                    V ^8  d   QhRR/# r  r   )r  s   "r   r  ESubprocessMixin.test_subprocess_protocol_events.<locals>.__annotate__7  s     		 		D 		r   c                    <a"   \         P                  ! 4       p \         P                  ! 4       oR pV P                  VV3R l\        P
                  RVRR7      G Rj  xL
 w  r#SG Rj  xL
  VP                  4        S#  L" L5i)zBimport sys; sys.stdout.write("stdout"); sys.stderr.write("stderr")c                     < S ! S4      # r   r   )r  r  s   r   r   OSubprocessMixin.test_subprocess_protocol_events.<locals>.main.<locals>.<lambda>;  s
    j>Ur   r   Nr   )r   get_running_loopr  rG  r   r   rX   )r3   r   r<   r  r  r  r   s       @r   r  =SubprocessMixin.test_subprocess_protocol_events.<locals>.main7  su     ++-D!..*KWD!%!5!56U69nndDX\ "6 "^ ^LIOOM^s$   ABB B)B*BB:Nr  NN))r  r  s   stdout)r  r  s   stderr)r  r  )r  r  rI   )r   rH  r3   rC   assertSetEqualsetr  rD   )r    fdsper_fd_expectedr  r  per_fd_eventseventnamer  r   r  s   &       @@@r   test_subprocess_protocol_events/SubprocessMixin.test_subprocess_protocol_events  s     !f
 !"

	6 	633 	6*		 		 --df5 	CKX7 +..#BR#.E((RyHD$$T*	  B].fN  /s   C'c                ^   a a R  oVV 3R lpS P                   P                  V! 4       4       R# )c                    "   \         P                  ! V .VO5R \         P                  P                  / G Rj  xL
 pVP	                  4       G Rj  xL
 w  r4VP                  4       P                  4       #  L< L&5i)r   N)r   rj   r   rk   r   decodestrip)r  r!   rq   r   r  s   &*   r   get_command_stdoutNSubprocessMixin.test_subprocess_communicate_stdout.<locals>.get_command_stdoutT  sm      77#*#5#5#:#: D #..00IF==?((**	 1s!   6A9A5A9A7%A97A9c                    <"   \        ^
4       U u. uF  p RV  2NK
  	  pp \        P                  ! V Uu. uF   pS! \        P                  RRV: R24      NK"  	  up!  G Rj  xL
 pSP                  W14       R# u up i u upi  L!5i)r   foor   zprint()N)r  r   r  r   r   rD   )ioutputsoutresr  r    s       r   r  @SubprocessMixin.test_subprocess_communicate_stdout.<locals>.main[  s     */)4)QQCy)G4FM)OFMs *<CNND*0q(9*;FM)O P PCS* 5)O Ps&   BA;B&B B#B$"BNr:  )r    r  r  s   f @r   "test_subprocess_communicate_stdout2SubprocessMixin.test_subprocess_communicate_stdoutR  s#    	+	+ 			$$TV,r   z
Linux onlyc                T   a  V 3R  lpS P                   P                  V! 4       4       R# )c                  l  <"   \        ^
4       F  p \        P                  ! RR4      G Rj  xL
 p\        P                  ! R4      G Rj  xL
   VP	                  \
        P                  4       SP                  VP                  4       G Rj  xL
 ^4       K  	  R#  Lp LT  \         d     L?i ; i L$5i)r   r   z0.1Ng?)
r  r   rj   r   rS   rT   SIGUSR1rR   assertNotEqualro   )r  rq   r    s     r   r  >SubprocessMixin.test_subprocess_send_signal_race.<locals>.mainf  s     2Y$;;GUKKmmC((($$V^^4 ##$))+$5s; K( * $5sQ   )B4BB4
BB4B!/B4B2
B4B4!B/,B4.B//B4Nr:  r  s   f r    test_subprocess_send_signal_race0SubprocessMixin.test_subprocess_send_signal_racec  s    	< 			$$TV,r   r   N)r+  android)/r%   r&   r'   r(   rz   r   r   r   r   r   r   r   unittestskipIfr   r   r   r   r   r   r
  r  r  r#  r)  r0  r;  rC  rK  r\  rg  rt  rx  r{  r  r  r  r  r  r  r  r  r  r  r  r)   r*   r+   s   @r   rf   rf   s   sJ    /4/$&$&	&::6: __S\\W,.AB6 C6:,2\2"*9X&(&&&&&&&& __S\\)==,.&.&&4.B".&#*J !D,&I
;0.0 0"	C9O OO O- -@OD-" __S\\W,l;- <-r   rf   r   c                   8   a a ] tR tRt oV 3R ltR tRtVtV ;t# )SubprocessWatcherMixiniu  c                   < \         SV `  4        \        P                  ! 4       V n        V P                  V P                  4       R # r   )r0   r1   r   new_event_loopr3   r4   r5   s   &r   r1   SubprocessWatcherMixin.setUpw  s.    GMO..0DI		*r   c                    V P                   pVP                  p\        P                  ! 4       '       d#   V P	                  V\        P
                  4       R # V P	                  V\        P                  4       R # r   )r3   _watcherr	   can_use_pidfdr   _PidfdChildWatcher_ThreadedChildWatcher)r    r3   watchers   &  r   test_watcher_implementation2SubprocessWatcherMixin.test_watcher_implementation|  sO    99DmmG((**%%g{/M/MN%%g{/P/PQr   rb   )	r%   r&   r'   r(   r1   r"  r)   r*   rc   rd   s   @@r   r  r  u  s     	+
	R 	Rr   r  c                   >   a a ] tR tRt oV 3R ltV 3R ltRtVtV ;t# )SubprocessThreadedWatcherTestsi  c                   < \         P                  V n        \        P                  ! R R7      \         n        \
        SV `  4        R# )F)return_valueN)r	   r  _original_can_use_pidfdr   r   r0   r1   r5   s   &r   r1   $SubprocessThreadedWatcherTests.setUp  s+    +6+D+DD((,		u(EK%GMOr   c                J   < V P                   \        n        \        SV `  4       # r   )r(  r	   r  r0   tearDownr5   s   &r   r+  'SubprocessThreadedWatcherTests.tearDown  s    (,(D(DK%7#%%r   )r(  )	r%   r&   r'   r(   r1   r+  r)   r*   rc   rd   s   @@r   r%  r%    s     		& 	&r   r%  z(operating system does not support pidfdsc                       ] tR tRtRtR# )SubprocessPidfdWatcherTestsi  r   N)r%   r&   r'   r(   r)   r   r   r   r.  r.    s     	r   r.  c                   2   a a ] tR tRt oV 3R ltRtVtV ;t# )SubprocessProactorTestsi  c                   < \         SV `  4        \        P                  ! 4       V n        V P                  V P                  4       R # r   )r0   r1   r   ProactorEventLoopr3   r4   r5   s   &r   r1   SubprocessProactorTests.setUp  s.    GMO113DI		*r   rb   )r%   r&   r'   r(   r1   r)   r*   rc   rd   s   @@r   r0  r0    s     	+ 	+r   r0  __main__)r   zdata = sys.stdin.buffer.read()zsys.stdout.buffer.write(data))*r   rT   r   r   r  rn  r   r   r   r   test.test_asyncior   r   r9   r   test.supportr   has_subprocess_supportSkipTestr   r   r	   check_sanitizerr   r   r   rv   r   BaseSubprocessTransportr   TestCaser.   rf   r   r  r%  
skipUnlessr  r.  r0  r%   r  r   r   r   <module>r=     s   	  
      #  1  "%%%


=
>>
# 4((


A
BB >>4)HI NNDHH / 010oEE <z22 <~}- }-@ <<7R R 
&)?)3)<)<
& !!#2&<&0&9&9	+/:3F3F + zMMO r   