python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_subprocess.cpython-311.opt-2.pyc

e{ddlZddlmZddlmZddlmZddlmZddlmZddlmZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlZddlmZ	ddlZn
#e $rdZYnwxYw	ddl!Z!n
#e $rdZ!YnwxYw	ddl"Z"n
#e $rdZ"YnwxYw	ddl#Z#n	#dZ#YnxYwej$rej%d	ej&sej%d
e
j'dkZ(e(rdZ)nd
Z)dZ*e+e,e-fZ.e
j/ddfa0dZ1Gddej2Z3Gdde4Z5Gdde	j6Z7Gdde3Z8Gdde3Z9dZ:ej;e(dGdde3Z<ej=e(d Gd!d"e3Z>Gd#d$ej2Z?ej=e@ed%d&Gd'd(e8ZAej=e(d)Gd*d+e3ZBGd,d-e3ZCeDd.krejEdSdS)/N)mock)support)check_sanitizer)
import_helper)	os_helper)warnings_helper)FakePathztest is not helpful for PGOztest module requires subprocesswin32z@import msvcrt; msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY);)nonexisting_i_hope-cpassctjd}|dStj|tjr#tj|gjdkr|fadSdSdS)Ntruer)	shutilwhichosaccessX_OK
subprocessrun
returncodeZERO_RETURN_CMD)
shell_trues H/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_subprocess.pysetUpModulerJsgf%%J
	*bg&&(
|$$/144%-((44ceZdZdZdZdS)BaseTestCasec,tjdSN)r
reap_childrenselfs rsetUpzBaseTestCase.setUpUs	rctsVtjD]}|tj|tjd|tjdS)Nzsubprocess._active not empty)		mswindowsr_activewait_cleanupassertFalse
doCleanupsrr")r$insts  rtearDownzBaseTestCase.tearDownZs	"*

		!!!"$B


	
rN__name__
__module____qualname__r%r.rrrrTs2   

 
 
 
 
 rrceZdZdS)PopenTestExceptionN)r0r1r2r3rrr5r5gsDrr5ceZdZ	dZdS)PopenExecuteChildRaisesc td)NzForced Exception for Test)r5)r$argskwargss   r_execute_childz&PopenExecuteChildRaises._execute_childos !<===rN)r0r1r2r;r3rrr7r7ks(>>>>>rr7ceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZejddZdZdZdZdZdZdZdZdZdZdZ e!j"e#ddZ$e!j"e#dd Z%e!j"e#dd!Z&d"Z'd#Z(d$Z)d%Z*d&Z+d'Z,e!j"e#d(d)Z-e!j"e#d(d*Z.d+Z/e!j"e0j1e0j2kd,d-Z3e!j"e0j1e0j2kd,e!j"e4j5d.d/Z6d0Z7d1Z8d2Z9d3Z:d4Z;d5Z<d6Z=d7Z>d8Z?d9Z@d:ZAd;ZBd<ZCd=ZDd>ZEd?ZFe!jGeHoeIeHd@dAdBZJe!jGeHoeIeHd@dAdCZKdDZLe!j"e0jMdEkdFe!j"e4jNdGdHkdIe!j"eOdJKdLdMZPdNZQdOZRdPZSdQZTdRZUdSZVdTZWdUZXdVZYdWZZdXZ[dYZ\dZZ]d[Z^d\Z_d]Z`d^Zad_Zbd`ZcdaZddbZedcZfddZgdeZhdfZidgZjdhZkdiZldjZmejdkdlZndmZodnZpdoZqdpZrdqZsdrZtdsZudtZve!jGeIewdudve!jGeIexdwdxe!jGeIexdydzd{Zye!jGexjz{d|exj|zd}d~Z}e!j"e#ddZ~e!j"e#ddZdZe!j"e4jNddejddZdS)ProcessTestCasectjttjtjtj}	||jtj||jtj||j	tj|j
|j
|j	
|dS#|j
|j
|j	
|wxYw)Nstdinstdoutstderr)rPopenrPIPEassertIsInstancer@ioBufferedIOBaserArBcloser)r$ps  rtest_io_buffered_by_defaultz+ProcessTestCase.test_io_buffered_by_defaultus_#-?:?$.O
5
5
5	!!!'2+<===!!!(B,=>>>!!!(B,=>>>
GMMOOO
HNN
HNN
FFHHHHH
GMMOOO
HNN
HNN
FFHHHHs
A/D

A!E.ctjttjtjtjd}	||jtj||jtj||j	tj|j
|j
|j	
|dS#|j
|j
|j	
|wxYw)Nr)r@rArBbufsize)rrCrrDrEr@rF	RawIOBaserArBrHr)rIs  rtest_io_unbuffered_worksz(ProcessTestCase.test_io_unbuffered_workss
_#-?:?$.OQ
@
@
@	!!!'2<888!!!(BL999!!!(BL999
GMMOOO
HNN
HNN
FFHHHHH
GMMOOO
HNN
HNN
FFHHHHs
A/DA!E/cttjtjddg}||ddSNr
import sys; sys.exit(47)/rcallsys
executableassertEqualr$rcs  r
test_call_seqzProcessTestCase.test_call_seqs=
_cnd8:;;R     rcz|tjtjtjddgddS)Nr
while True: pass皙?timeout)assertRaisesrTimeoutExpiredrUrVrWr#s rtest_call_timeoutz!ProcessTestCase.test_call_timeoutsD
	
*3Z_>41CD"%		'	'	'	'	'rcdtjt}||ddSNr)r
check_callrrXrYs  rtest_check_call_zeroz$ProcessTestCase.test_check_call_zeros.

"?
3
3Qrc|tj5}tjtjddgdddn#1swxYwY||jjddSrQ)	rarCalledProcessErrorrfrVrWrX	exceptionrr$cs  rtest_check_call_nonzeroz'ProcessTestCase.test_check_call_nonzeros


z<
=
=	@!3>4#=#?
@
@
@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	
/44444"AAActjtjddg}|d||td5tjgddddn#1swxYwY|td5tjgdddddS#1swxYwYdS)	Nr

print('BDFL')BDFLz2stdout argument not allowed, it will be overriddenrAz1check argument not allowed, it will be overriddenFcheck)rcheck_outputrVrWassertInassertRaisesRegex
ValueErrorr$outputs  rtest_check_outputz!ProcessTestCase.test_check_outputsU(799

gv&&&

#
#JDFF	5	5#Bt4444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5
#
#JCEE	5	5#Be4444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5s$A66A:=A:CCCc|tj5}tjtjddgdddn#1swxYwY||jjddS)Nr
zimport sys; sys.exit(5))	rarrirurVrWrXrjrrks  rtest_check_output_nonzeroz)ProcessTestCase.test_check_output_nonzeros


z<
=
=	G#^T+DE
G
G
G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	G	
/33333rnctjtjddgtj}|d|dS)Nr
$import sys; sys.stderr.write('BDFL')rBrq)rrurVrWSTDOUTrvrys  rtest_check_output_stderrz(ProcessTestCase.test_check_output_stderrsH('MN!(***	


gv&&&&&rc&tj}||j|d|dt
jtj	ddg|}|
d|dS)Npearrr
6import sys; sys.stdout.write(sys.stdin.read().upper())r@PEAR)tempfile
TemporaryFile
addCleanuprHwriteseekrrurVrWrv)r$tfrzs   rtest_check_output_stdin_argz+ProcessTestCase.test_check_output_stdin_args

#
%
%!!!




(IK	


gv&&&&&rcxtjtjddgd}|d|dS)Nr
rrinputrrrurVrWrvrys  rtest_check_output_input_argz+ProcessTestCase.test_check_output_input_argsH(IK	


gv&&&&&rcz	tjtjddgd}|d|dS)Nr
3import sys; print('XX' if sys.stdin.read() else '')rsXXrrurVrWassertNotInrys  rtest_check_output_input_nonez,ProcessTestCase.test_check_output_input_nonesMJ(FH	
'''''rcztjtjddgdd}|d|dS)Nr
rT)rtextXXrrys  r!test_check_output_input_none_textz1ProcessTestCase.test_check_output_input_none_textsL(FH'''	
v&&&&&rcztjtjddgdd}|d|dS)Nr
rT)runiversal_newlinesrrrys  r/test_check_output_input_none_universal_newlinesz?ProcessTestCase.test_check_output_input_none_universal_newlinessL(FHt555	
v&&&&&rc|tjtjddgddd}|d|dS)Nr
zprint('foo')utf-8ignore)rencodingerrorsfoorrys  r,test_check_output_input_none_encoding_errorsz<ProcessTestCase.test_check_output_input_none_encoding_errorssH(~6WX???	


eV$$$$$rc:|t5}tjtjddgtj}|ddddn#1swxYwY|d|j	j
ddS)Nr
print('will not be run')rrz-Expected ValueError when stdout arg supplied.rAr)rarxrrurVrWrAfailrvrjr9r$rlrzs   rtest_check_output_stdout_argz,ProcessTestCase.test_check_output_stdout_args


z
*
*	Ga,^T+EF:'''F
IIEFFF		G	G	G	G	G	G	G	G	G	G	G	G	G	G	G
	


h 0 344444sAA**A.1A.c"tj}||j|d|d|t5}tj	tjddg|d}|ddddn#1swxYwY|
d|jjd|
d	|jjddS)
Nrrr
rharer@r7Expected ValueError when stdin and input args supplied.r@r)rrrrHrrrarxrrurVrWrrvrjr9r$rrlrzs    r&test_check_output_stdin_with_input_argz6ProcessTestCase.test_check_output_stdin_with_input_args=

#
%
%!!!







z
*
*	Qa,^T+EFG---F
IIOPPP		Q	Q	Q	Q	Q	Q	Q	Q	Q	Q	Q	Q	Q	Q	Q
	


gq{/2333

gq{/233333s2:B88B<?B<walltimec$|tj5}tjtjddgd}|ddddn#1swxYwY||jj	ddS)Nr
Mimport sys, time
sys.stdout.write('BDFL')
sys.stdout.flush()
time.sleep(3600)r_zExpected TimeoutExpired.rq)
rarrbrurVrWrrXrjrzrs   rtest_check_output_timeoutz)ProcessTestCase.test_check_output_timeouts

z8
9
9
	2Q,^T()F
II0111
	2
	2
	2
	2
	2
	2
	2
	2
	2
	2
	2
	2
	2
	2
	2	
+W55555s9A%%A),A)ctj}d|d<tjt
jddg|}||ddS)NbananaFRUITr
z5import sys, os;sys.exit(os.getenv("FRUIT")=="banana")env)renvironcopyrrUrVrWrX)r$newenvrZs   rtest_call_kwargsz ProcessTestCase.test_call_kwargssg"""w
_cndGH"()))	
Qrc~tj5}|ttjdtjjjj}dg|dzz}|jttjg|Rdddn#1swxYwY|	|
ddS)Nr)invalid_arg_namerr)rcaptured_stderrra	TypeErrorrrC__init____code__co_argcountrXgetvalue)r$sargcount
too_many_argss    rtest_invalid_argsz!ProcessTestCase.test_invalid_args)s
$
&
&	K!i)9ANNN!'09EHC8a<0MDi)9JMJJJJ		K	K	K	K	K	K	K	K	K	K	K	K	K	K	K
	
r*****sA*B

BBcPtjtjddgtjtj}||jj||jj|	|
|jddS)Nr
print("banana")rArB)rrCrVrWrDrrArHrBr)rXr@rIs  rtest_stdin_nonezProcessTestCase.test_stdin_none3scnd4EF *

I
I
I''''''	$'''''rcd}tjtjd|gtjtj}||jj||jj|	\}}|
|jd||
|ddS)Nzimport sys; from subprocess import Popen, PIPE;p = Popen([sys.executable, "-c", "print('test_stdout_none')"],          stdin=PIPE, stderr=PIPE);p.wait(); assert p.stdout is None;r
rrstest_stdout_none
rrCrVrWrDrrArHrBcommunicaterXrrstripr$coderJouterrs     rtest_stdout_nonez ProcessTestCase.test_stdout_none<s5
cndD9$.OJO
M
M
M''''''==??Sq#...':;;;;;rcPtjtjddgtjtj}||jj||jj|	|
|jddS)Nr
rr@rA)rrCrVrWrDrrArHr@r)rXrBrIs  rtest_stderr_nonez ProcessTestCase.test_stderr_noneSscnd4EF)z
H
H
H'''
&&&	4(((((rc|dgz}tj|fi|}||d|jdSNrRrS)rrCr)rXr)r$pre_argsr:r9rJs     r_assert_pythonzProcessTestCase._assert_python\sU566T,,V,,	Q\*****rctjtjtjd}||dgtjdSNdoesnotexistr
rW)rpathjoindirnamerVrWrr$rs  rtest_executablezProcessTestCase.test_executabledsTw||BGOOCN$C$C$244\40S^LLLLLrctjtjtjd}||dgtjtjdSr)rrrrrVrWrfsencoders  rtest_bytes_executablez%ProcessTestCase.test_bytes_executableosnw||BGOOCN$C$C$244\40'){3>'B'B		D	D	D	D	Drctjtjtjd}||dgttjdSr)rrrrrVrWrr	rs  rtest_pathlike_executablez(ProcessTestCase.test_pathlike_executableuslw||BGOOCN$C$C$244\40'/'?'?		A	A	A	A	Arctjdg}|||t|j|t
ddS)Nr
rr)rVrWrraNONEXISTING_ERRORSNONEXISTING_CMD)r$rs  r test_executable_takes_precedencez0ProcessTestCase.test_executable_takes_precedence{s^ND)H%%%,-x%4Q%7		9	9	9	9	9rz"executable argument replaces shellcJ|gtjddSNT)rWshell)rrVrWr#s rtest_executable_replaces_shellz.ProcessTestCase.test_executable_replaces_shells'	
B3>FFFFFrcn|gtjtjddSr)rrrrVrWr#s r$test_bytes_executable_replaces_shellz4ProcessTestCase.test_bytes_executable_replaces_shells<B2;s~+F+F"&		(	(	(	(	(rcd|gttjddSr)rr	rVrWr#s r'test_pathlike_executable_replaces_shellz7ProcessTestCase.test_pathlike_executable_replaces_shells:B8CN+C+C"&		(	(	(	(	(rctj|5tjcdddS#1swxYwYdSr!)r
change_cwdrgetcwd)r$cwds  r_normalize_cwdzProcessTestCase._normalize_cwds
!#
&
&		9;;																		s599ctjtj}tj|Sr!)rrrealpathrVrWsplit)r$python_paths  r_split_python_pathz"ProcessTestCase._split_python_paths-g&&s~66w}}[)))rctj|ddgfdtji|}||jj||d|jtj
j}|||||j
dS)Nr
zcimport os, sys; buf = sys.stdout.buffer; buf.write(os.getcwd().encode()); buf.flush(); sys.exit(47)rArS)rrCrDrrArHr)rXrrrnormcasereaddecode)r$expected_cwd
python_argr:rJrs      r_assert_cwdzProcessTestCase._assert_cwds
j$-.
(
(&0_

(!'
(
(	
'''	Q\***7#,//!!(--//"8"8":":;;	=	=	=	=	=rctj}||}||tj|dSNr)r
gettempdirrrrVrWr$temp_dirs  rtest_cwdzProcessTestCase.test_cwdsF&((&&x003>x@@@@@rctj}||}||tjt
j|dSr)rrrrrVrWrrrs  rtest_cwd_with_bytesz#ProcessTestCase.test_cwd_with_bytessP&((&&x003>r{87L7LMMMMMrctj}||}||tjt
|dSr)rrrrrVrWr	rs  rtest_cwd_with_pathlikez&ProcessTestCase.test_cwd_with_pathlikesN&((&&x003>x7I7IJJJJJrz"pending resolution of issue #15533c|\}}tjtj|}tj5}|ttj
|g|ttj
|g|||}||||ddddS#1swxYwYdSr
rrrrcurdirrtemp_cwdraFileNotFoundErrorrrCrr)r$
python_dirpython_base
rel_python	wrong_dirs     rtest_cwd_with_relative_argz*ProcessTestCase.test_cwd_with_relative_args5#'"9"9";";
KW\\")[99



!
!	EY
/1A)l
,
,
,/1A)l	

;
;
;,,Z88JZDDD	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	EsA>C  C$'C$c|\}}tjtj|}d}tj5}|ttj
|g||ttj
|g||||}|||||ddddS#1swxYwYdS)NsomethingyoudonthaverrWrr)r$rrrdoesntexistr s      r!test_cwd_with_relative_executablez1ProcessTestCase.test_cwd_with_relative_executablesA#'"9"9";";
KW\\")[99
,


!
!
	-Y
/1A*m


D
D
D/1A*m
"+

-
-
-,,Z88JZ!+

-
-
-
	-
	-
	-
	-
	-
	-
	-
	-
	-
	-
	-
	-
	-
	-
	-
	-
	-
	-sBC&&C*-C*c|\}}tj||}tjtj|}tj5}|ttj
|g|||}||||ddddS#1swxYwYdSr)
rrrrrrrrarrrCrr)r$rr
abs_pythonrr s      rtest_cwd_with_absolute_argz*ProcessTestCase.test_cwd_with_absolute_args%#'"9"9";";
KW\\*k::
W\\")[99



!
!	CY
/1A)l	

;
;
;++I66IY
	BBB
	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	C	Cs5ACC CzTest is not venv-compatiblec|\}}||}||dtj|dS)Nr#r$)rrrrVrW)r$rrs   rtest_executable_with_cwdz(ProcessTestCase.test_executable_with_cwdse#'"9"9";";
K((44
%;$'N
		D	D	D	D	Drz#need an installed Python. See #7774cl|tjdtjdS)Nr#r)rrrrVrWr#s rtest_executable_without_cwdz+ProcessTestCase.test_executable_without_cwds;	
&<$'N		4	4	4	4	4rc$tjtjddgtj}|jd|j||	|j
ddS)Nr
0import sys; sys.exit(sys.stdin.read() == "pear")rrr)rrCrVrWrDr@rrHr)rXrrIs  rtest_stdin_pipezProcessTestCase.test_stdin_pipe
s}cndKM(o
/
/
/	


g	

	q)))))rctj}||j|}tj|dtj|ddtj	tjddg|}||
|jddSNrrr
r/rr)rrrrHfilenorrlseekrrCrVrWr)rXrr$rdrJs    rtest_stdin_filedesz"ProcessTestCase.test_stdin_filedess

#
%
%!!!IIKK
G
AqcndKM 
"
"
"	
q)))))rcXtj}||j|d|dt
jtj	ddg|}|
||jddSr2)
rrrrHrrrrCrVrWr)rXrr$rrJs   rtest_stdin_fileobjz"ProcessTestCase.test_stdin_fileobj!s

#
%
%!!!




cndKM!
#
#
#	
q)))))rctjtjddgtj}|5||jdddddS#1swxYwYdS)Nr
&import sys; sys.stdout.write("orange")rrorangerrCrVrWrDrXrArrIs  rtest_stdout_pipez ProcessTestCase.test_stdout_pipe-scndBD *
1
1
1	9	9QX]]__i888	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9.A++A/2A/cttj}||j|}tjtjddg|}|	tj|dd|tj
|dddS)Nr
r<rrrr=rrrrHr3rrCrVrWr)rr4rXrr5s    rtest_stdout_filedesz#ProcessTestCase.test_stdout_filedes5s

#
%
%!!!IIKKcndBD !
#
#
#	

AqD))955555rcHtj}||jt	jtjddg|}||	d|
|ddS)Nr
r<rrrr=rrrrHrrCrVrWr)rrXrr9s   rtest_stdout_fileobjz#ProcessTestCase.test_stdout_fileobjAs

#
%
%!!!cndBD "
$
$
$	




I.....rctjtjddgtj}|5||jdddddS#1swxYwYdS)Nr
*import sys; sys.stderr.write("strawberry")r
strawberry)rrCrVrWrDrXrBrrIs  rtest_stderr_pipez ProcessTestCase.test_stderr_pipeLscndFH *
1
1
1	=	=QX]]__m<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=r@cttj}||j|}tjtjddg|}|	tj|dd|tj
|dddS)Nr
rIrrrBrJrCr5s    rtest_stderr_filedesz#ProcessTestCase.test_stderr_filedesTs

#
%
%!!!IIKKcndFH !
#
#
#	

AqD))=99999rcHtj}||jt	jtjddg|}||	d|
|ddS)Nr
rIrrrJrFr9s   rtest_stderr_fileobjz#ProcessTestCase.test_stderr_fileobj`s

#
%
%!!!cndFH "
$
$
$	




M22222rc2tjtjddgtjtj}|\}}||d||d||jddS)Nr
zimport sys, subprocess;rc = subprocess.call([sys.executable, "-c",    "import sys;"    "sys.stderr.write('42')"],    stderr=subprocess.STDOUT);sys.exit(rc)rs42rrrrCrVrWrDrrXrr$rJrArBs    r,test_stderr_redirect_with_no_stdout_redirectz<ProcessTestCase.test_stderr_redirect_with_no_stdout_redirectks
cnd-.%/O$.O
5
5
5'''%%%q)))))rctjtjddgtjtj}|5||jdddddS#1swxYwYdS)Nr
Rimport sys;sys.stdout.write("apple");sys.stdout.flush();sys.stderr.write("orange")rappleorange)	rrCrVrWrDrrXrArrIs  rtest_stdout_stderr_pipez'ProcessTestCase.test_stdout_stderr_pipescnd;<
%/O$.$5

7
7
7	>	>QX]]__n===	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>s.A66A:=A:cJtj}||jt	jtjddg||}||	d|
|ddS)Nr
rUrrrVrFr9s   rtest_stdout_stderr_filez'ProcessTestCase.test_stdout_stderr_files

#
%
%!!!cnd;<
%'$&

(
(
(	




N33333rcd}tjtjd|gtjtj}||jj||jj|	\}}|
|jd||
|ddS)Nzimport sys, subprocess; rc = subprocess.call([sys.executable, "-c",     "import os, sys; sys.exit(os.write(sys.stdout.fileno(), b'test with stdout=1'))"], stdout=1); assert rc == 18r
rrstest with stdout=1rrs     rtest_stdout_filedes_of_stdoutz-ProcessTestCase.test_stdout_filedes_of_stdouts"

cndD9$.OJO
M
M
M''''''==??Sq#...'<=====rctjtjddgtj}|||jddS)Nr
z'for i in range(10240):print("x" * 1024)rr)rrCrVrWDEVNULLr)rXrArIs  rtest_stdout_devnullz#ProcessTestCase.test_stdout_devnulls^cnd23&0%7
9
9
9	
4(((((rctjtjddgtj}|||jddS)Nr
z=import sys
for i in range(10240):sys.stderr.write("x" * 1024)r)rrCrVrWr]r)rXrBrIs  rtest_stderr_devnullz#ProcessTestCase.test_stderr_devnulls^cnd=>&0%7	
9
9
9
	
4(((((rctjtjddgtj}|||jddS)Nr
zimport sys;sys.stdin.read(1)r)rrCrVrWr]r)rXr@rIs  rtest_stdin_devnullz"ProcessTestCase.test_stdin_devnulls^cnd23%/$6
8
8
8	
$'''''rF_GETPIPE_SZz%fcntl.F_GETPIPE_SZ required for test.ctj\}}	tj|tj}tj|tj|n-#tj|tj|wxYw|dz}|dkrtjdtjtj
ddgtjtjtj|}	|j|j
|jfD]G}|tj|tj|H|jd|j|j
|j||dS#||wxYw)Niz+default pipesize too small to perform test.r
Qimport sys; sys.stdin.read(); sys.stdout.write("out"); sys.stderr.write("error!")r@rArBpipesizer)rpipefcntlrcrHunittestSkipTestrrCrVrWrDr@rArBrXr3rkillr))r$test_pipe_rtest_pipe_wpipesize_defaultrhrJfifos       rtest_pipesizeszProcessTestCase.test_pipesizess$&799 [	"${;8JKKH[!!!H[!!!!
H[!!!H[!!!!#q(c>>#=??
?
^T*
+/*/?X
7
7
7	!(AH5

  K

u/ABB
GMM'"""
GMMOOO
HNN
HNN
FFHHH
FFHHHHH
FFHHH
FFHHHHsA  *B
1CG*Hc6tjtjddgtjtjtjd}|5	tj\}}	tj|tj}tj|tj}tj	|tj	|n-#tj	|tj	|wxYw|
tj|jtj||
tj|j
tj||
tj|jtj||n#|wxYw	ddddS#1swxYwYdS)Nr
rfrg)rrCrVrWrDrrirjrcrHrXr@r3rArBrm)r$procfp_rfp_wdefault_read_pipesizedefault_write_pipesizes      rtest_pipesize_defaultz%ProcessTestCase.test_pipesize_defaults
^T*
+/*/?R111		
WYY
d#,1Ke>P,Q,Q)-2[u?Q-R-R*HTNNNHTNNNNHTNNNHTNNNN  K
 1 1 3 3U5GHH)+++  K 2 2 4 4e6HII*,,,  K 2 2 4 4e6HII*,,,				-																		sCH	G' >C)G'*C11C!G'H'G==HHHc4tj}d|d<tjt
jddgtj|5}|\}}|	|dddddS#1swxYwYdS)Norangerr
2import sys,os;sys.stdout.write(os.getenv("FRUIT"))rArr=)
rrrrrCrVrWrDrrXr$rrJrArBs     rtest_envzProcessTestCase.test_env
s"""w

s~t FG&0_"(	***	0./]]__NFFVY///
	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0	0s.B

BBr
z#cannot test an empty env on WindowsPy_ENABLE_SHAREDrzEThe Python shared library cannot be loaded with an empty environment.T)addressz)AddressSanitizer adds to the environment.c	dtjtjddgtji5}|\}}t
|}||tfd|D}|
|gddddS#1swxYwYdS)NcV	d|vp$d|vp |dkp|dp|dkS)N	VERSIONER__CF
LD_PRELOADSANDBOXLC_CTYPE)
startswith)ns ris_env_var_to_ignorez<ProcessTestCase.test_empty_env.<locals>.is_env_var_to_ignore$sLL 1$$!$%$)*i)@)@$O
%rr
z)import os; print(list(os.environ.keys()))r~c*g|]}|
|Sr3r3).0krs  r
<listcomp>z2ProcessTestCase.test_empty_env.<locals>.<listcomp>3s8???Q&:&:1&=&=?q???r)rrCrVrWrDrevalstriprElistrX)r$rJrArBchild_env_namesrs     @rtest_empty_envzProcessTestCase.test_empty_envs"	:	%	%	%
s~tJL%/_">>>	2AB]]__NFF"6<<>>22O!!/4888????/???O_b111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2sA8B99B=B=c^tjdz}|t5t	j|ddgdddn#1swxYwY|t5t	jtjddgddddS#1swxYwYdS)Nr
rzpass#)rVrWrarxrrC)r$cmds  rtest_invalid_cmdz ProcessTestCase.test_invalid_cmd7s7nt#


z
*
*	2	2c40111	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2

z
*
*	@	@cndI>???	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@s#AAA3"B""B&)B&ctj}d|d<|t5tjt|dddn#1swxYwYtj}d|d<|t5tjt|dddn#1swxYwYtj}d|d<|t5tjt|dddn#1swxYwYtj}d|d<tjtj	d	d
gt
j
|5}|\}}||dddddS#1swxYwYdS)
NcabbagezFRUITVEGETABLErzorangeVEGETABLE=cabbagerlemonzFRUIT=ORANGEzorange=lemonr
z3import sys, os;sys.stdout.write(os.getenv("FRUIT"))r~sorange=lemon)
rrrrarxrrCrrVrWrDrrXrs     rtest_invalid_envz ProcessTestCase.test_invalid_envAs""%.!"


z
*
*	:	:_&9999	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:""5w


z
*
*	:	:_&9999	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:""!(~


z
*
*	:	:_&9999	:	:	:	:	:	:	:	:	:	:	:	:	:	:	:""(w

s~t FG&0_"(	***	6./]]__NFFV_555
	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6	6sGA&&A*-A*.CCCEE

E
".GG!$G!ctjtjddgtj}|d||jddS)Nr
z/import sys;sys.exit(sys.stdin.read() == "pear")rrrrQrIs  rtest_communicate_stdinz&ProcessTestCase.test_communicate_stdin_sdcndEF$.?
4
4
4	


gq)))))rctjtjddgtj}|\}}||d||ddS)Nr
z)import sys; sys.stdout.write("pineapple")rr	pineapplerrCrVrWrDrrXrRs    rtest_communicate_stdoutz'ProcessTestCase.test_communicate_stdoutgsscndIK$.O
5
5
5==??...&&&&&rctjtjddgtj}|\}}||d||ddS)Nr
z)import sys; sys.stderr.write("pineapple")rrrrRs    rtest_communicate_stderrz'ProcessTestCase.test_communicate_stderrosscndIK$.O
5
5
5==??&&&.....rctjtjddgtjtjtj}||jj||jj||j	j|
d\}}||d||ddS)Nr
zNimport sys,os;sys.stderr.write("pineapple");sys.stdout.write(sys.stdin.read())r?bananar)rrCrVrWrDrrArHrBr@rrXrRs    rtest_communicatez ProcessTestCase.test_communicatewscndCD$.?$.O$.O

5
5
5	
''''''
&&&==33+++.....rctjtjddgdtjtjtj}|tj|jdd|\}}||d||	ddS)	Nr
z~import sys,os,time;sys.stderr.write("pineapple\n");time.sleep(1);sys.stderr.write("pear\n");sys.stdout.write(sys.stdin.read())T)rr@rArBrg333333?r_spineapple
pear
)
rrCrVrWrDrarbrrXencoderRs    rtest_communicate_timeoutz(ProcessTestCase.test_communicate_timeoutscndCD15#-?$.O$.O	
5	
5	
5	
*3Q]H"%		'	'	'==??****>?????rc"tjtjddgtj}|tj|jd|\}}|t|ddS)Nr
zimport sys,os,time;sys.stdout.write("a" * (64 * 1024));time.sleep(0.2);sys.stdout.write("a" * (64 * 1024));time.sleep(0.2);sys.stdout.write("a" * (64 * 1024));time.sleep(0.2);sys.stdout.write("a" * (64 * 1024));rrg?r_i)
rrCrVrWrDrarbrrXlen)r$rJrA_s    r%test_communicate_timeout_large_outputz5ProcessTestCase.test_communicate_timeout_large_outputscndEF%/O	
5	
5	
5	
*3Q]CPPPmmooVm44444rcdD]}dD]}dD]}i}|rtj|d<|rtj|d<|rtj|d<|s:tjtfi|}||j||jj|j||jj|j	||j	j،݌dS)NFTr@rArB)
rrDrCrrr@
assertTrueclosedrArB)r$
stdin_pipestdout_pipestderr_pipeoptionsrJs      rtest_communicate_pipe_fd_leakz-ProcessTestCase.test_communicate_pipe_fd_leaks'	9	9J,
9
9#099K G!;+5?("<,6O)"<,6O)"! "(DDGDDAMMOOOw*777x+888x+888#9
9	9	9rctjtjddg}|\}}||d||ddS)Nr
rR)rrCrVrWrrXrRs    rtest_communicate_returnsz(ProcessTestCase.test_communicate_returnssfcnd8:
;
;==??&&&&&&&&rcVtj\}}tj|tj|tjt
jddtjzgtj	tj	tj	}|
|jj|
|jj|
|j
jdtjz}||\}}|||dS)Nr
zpimport sys,os;sys.stdout.write(sys.stdin.read(47));sys.stderr.write("x" * %d);sys.stdout.write(sys.stdin.read())r?a)rrirHrrCrVrWr
PIPE_MAX_SIZErDrrArBr@rrX)r$xyrJstring_to_writerArBs       rtest_communicate_pipe_bufz)ProcessTestCase.test_communicate_pipe_bufswyy1

cndC&3	45$.?$.O$.O
5
5
5	
''''''
&&&!66==9911111rctjtjddgtjtjtj}||jj||jj||j	j|j	
d|d\}}||d||ddS)Nr
z0import sys,os;sys.stdout.write(sys.stdin.read())r?rssplitsbananasplitr)
rrCrVrWrDrrArHrBr@rrrXrRs    rtest_writes_before_communicatez.ProcessTestCase.test_writes_before_communicatescndCD$.?$.O$.O
5
5
5	
''''''
&&&	

i   ==22000%%%%%rcHtjddtzdzg}dD]}tj|fidtjdtj|di}|5|jd|j|	|j
d|jd	|j|
|j
j|	|j
d
|	|j
dd	|	|j
ddddn#1swxYwYdS)
Nr
import sys,os;a@buf = sys.stdout.buffer;buf.write(sys.stdin.readline().encode());buf.flush();buf.write(b"line2\n");buf.flush();buf.write(sys.stdin.read().encode());buf.flush();buf.write(b"line4\n");buf.flush();buf.write(b"line5\r\n");buf.flush();buf.write(b"line6\r");buf.flush();buf.write(b"\nline7");buf.flush();buf.write(b"\nline8");)rrr@rATzline1
zline3
zline2
zline4
line5
line6
line7
line8)rVrW	SETBINARYrrCrDr@rflushrXrAreadlinerHrr)r$r9extra_kwargrJs    r test_universal_newlines_and_textz0ProcessTestCase.test_universal_newlines_and_textsNDy(
&
&'(:	F	FK >>':?*2JO*5t*=>>A
F
F

i(((

  !2!2!4!4i@@@

i(((

///  !2!2!4!4!*,,,  q!1!1!*,,,  !DFFF
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F		F	FsD;FF	F	cdtjtjddtzdzgtjtjd}||jj||j	j|
\}}||ddS)Nr
rzbuf = sys.stdout.buffer;buf.write(b"line2\n");buf.flush();buf.write(b"line4\n");buf.flush();buf.write(b"line5\r\n");buf.flush();buf.write(b"line6\r");buf.flush();buf.write(b"\nline7");buf.flush();buf.write(b"\nline8");r)rBrArz#line2
line4
line5
line6
line7
line8)rrCrVrWrrDrrArHrBrrXrRs    r#test_universal_newlines_communicatez3ProcessTestCase.test_universal_newlines_communicatescnd.:88
9%/O$.O01!
3
3
3"	
''''''==??C	E	E	E	E	Erctjtjddtztjdzgtjd}|d\}}|	|j
ddS)Nr
ra
                               s = sys.stdin.readline()
                               assert s == "line1\n", repr(s)
                               s = sys.stdin.read()
                               assert s == "line3\n", repr(s)
                              r)r@rline1
line3
r)rrCrVrWrtextwrapdedentrDrrXrrRs    r)test_universal_newlines_communicate_stdinz9ProcessTestCase.test_universal_newlines_communicate_stdin/scnd.:X_N">#>##$$.?01
3
3
3==)9::q)))))rctjttjtjd}|||jddS)NT)r@rArr)rrCrrDrrXrrIs  r.test_universal_newlines_communicate_input_nonez>ProcessTestCase.test_universal_newlines_communicate_input_none=sW

_#-?$.O04
6
6
6	


q)))))rc&tjtjddtztjdzgtjtjtjd}||j	j
||jj
|d\}}|
|jd|
d|||d	dS)
Nr
ra
                               s = sys.stdin.buffer.readline()
                               sys.stdout.buffer.write(s)
                               sys.stdout.buffer.write(b"line2\r")
                               sys.stderr.buffer.write(b"eline2\n")
                               s = sys.stdin.buffer.read()
                               sys.stdout.buffer.write(s)
                               sys.stdout.buffer.write(b"line4\n")
                               sys.stdout.buffer.write(b"line5\r\n")
                               sys.stderr.buffer.write(b"eline6\r")
                               sys.stderr.buffer.write(b"eline7\r\nz")
                              T)r@rBrArrrzline1
line2
line3
line4
line5
zeline2
eline6
eline7
)rrCrVrWrrrrDrrArHrBrrXrrrrRs    r7test_universal_newlines_communicate_stdin_stdout_stderrzGProcessTestCase.test_universal_newlines_communicate_stdin_stdout_stderrIscnd.:X_N">#>##$$.?$.O$.O04!
6
6
6"	
''''''==)9::q)))>GGG	
))*DEEFFFFFrcdD]q}d|z}tjd|g}tj|tjtj|}|d\}}||drdS)N)zutf-16z	utf-32-bez@import sys; sys.stdout.buffer.write('1\r\n2\r3\n4'.encode('%s'))r
)r@rArrrz1
2
3
4)rVrWrrCrDrrX)r$rrr9popenrArBs       r-test_universal_newlines_communicate_encodingsz=ProcessTestCase.test_universal_newlines_communicate_encodingses0
	3
	3HLDND$/D$T+5?,6O.6888E#..R.88NFFV\2222
	3
	3rcdD]\}}d}tjd|g}tj|tjtjd|}|d\}}||d|dS)	N))rr)replaceu��)surrogateescapeu)backslashreplacez\x80\x80z2import sys; sys.stdout.buffer.write(b'[\x80\x80]')r
r)r@rArrrrz[{}])rVrWrrCrDrrXformat)r$rexpectedrr9rrArBs        rtest_communicate_errorsz'ProcessTestCase.test_communicate_errors{s!
	>	>FH>DND$/D$T+5?,6O.5,2	444E
#..R.88NFFVV]]8%<%<====%	>	>rc
tsd}nd}g}tj}	t|D]}	tj|tj}|	t	j
|tjtjzm#t$r!}|jtjkrYd}~n d}~wwxYw|d|ztdD](}t	j|)tdD]v}t'jt*jddgt&jt&jt&j}|d	d
}||d	w	|D]}	t	j|	t5j|dS#|D]}	t	j|	t5j|wxYw)Niiz4failed to reach the file descriptor limit (tried %d)
r
z-import sys;sys.stdout.write(sys.stdin.read())r?slimer)r'rmkdtemprangerrrrTESTFNappendopenO_WRONLYO_CREATOSErrorerrnoEMFILEskipTestrHpoprrCrVrWrDrrXrrmtree)
r$max_handleshandlestmpdiritmpfileerJdatahs
          rtest_no_leakingzProcessTestCase.test_no_leakings	KKK!##	";''

0

0 gll693CDDGNN277BK
4J#K#KLLLLw%,..EEEEE


!#./0002YY
(
(''''2YY
0
0$cnd'K&L,6?,6O,6O===}}W--a0  w////
0

M&!!!!!

M&!!!!s6GA)BG
C
)C?GC

CG/Hc|tjgdd|tjgdd|tjgdd|tjgdd|tjgd	d
|tjgdd|tjgd
d|tjddgddS)N)za b cr6rz"a b c" d e)ab"c\r6z	ab\"c \ d)rz \r6z
ab\"c " \\" d)za\\\bzde fgrza\\\b "de fg" h)za\"brlr6z
a\\\"b c d)za\\b cr6rz"a\\b c" d e)za\\b\ cr6rz
"a\\b\ c" d eabrzab "")rXrlist2cmdliner#s rtest_list2cmdlinez!ProcessTestCase.test_list2cmdlines01D1D1DEE&	(	(	(01D1D1DEE&	(	(	(01E1E1EFF+	-	-	-01K1K1KLL-	/	/	/01D1D1DEE(	*	*	*01G1G1GHH)	+	+	+01I1I1IJJ+	-	-	-0$<< 	"	"	"	"	"rctjtjddgtj}||jj||	tj|jd|
||	ddS)Nr
zimport os; os.read(0, 1)rAr)rrCrVrWrDrr@rHassertIsNonepollrrr3r)rXrIs  r	test_pollzProcessTestCase.test_pollscnd8:#-?
4
4
4	

&&&!&&((###
!!4(((	1%%%%%rctjt}||d||ddSrerrCrrXr)rIs  r	test_waitzProcessTestCase.test_waitsT_--1%%%1%%%%%rctjtjddg}|tj5}|ddddn#1swxYwY|dt|j	|
|tjddS)Nr
zimport time; time.sleep(0.3)-C6?r_z0.0001r)
rrCrVrWrarbr)rvstrrjrXr
SHORT_TIMEOUT)r$rJrls   rtest_wait_timeoutz!ProcessTestCase.test_wait_timeoutscn"$BD
E
E


z8
9
9	#Q
FF6F"""	#	#	#	#	#	#	#	#	#	#	#	#	#	#	#

hAK 0 0111(=>>BBBBBsA$$A(+A(c|t5tjtdddddS#1swxYwYdS)Nr|)rarrrCrr#s rtest_invalid_bufsizez$ProcessTestCase.test_invalid_bufsizes

y
)
)	8	8_h777	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8sAA
Actjtd}||dtjtd}||ddS)Nr)rMrrIs  rtest_bufsize_is_nonez$ProcessTestCase.test_bufsize_is_nonesk_d331%%%_d;;;1%%%%%rctjtjddgtjtjtjd|5}|j|tj	|j
|j}tj5	|j	n#t$rYnwxYwdddn#1swxYwYd|_dddn#1swxYwY||jd|||dS)Nr
zDimport sys;sys.stdout.write(sys.stdin.readline());sys.stdout.flush()r)r@rArBrMrr)rrCrVrWrDr]r@rrrHr3rArrSuppressCrashReportrrXr)r$linerrrJ	read_lines      r_test_bufsize_equal_onez'ProcessTestCase._test_bufsize_equal_ones

s~t645%/O%/_%/%7&'1CEEE	IJ
GMM$HQW^^%%&&&))++I,..

GMMOOOOD















AG!															"	
q)))H-----s[A2D8C0:CC0
C!C0 C!!C0$D0C4	4D7C4	8
DDDc:d}|||ddS)Nzline
Tr)rr$rs  r test_bufsize_equal_one_text_modez0ProcessTestCase.test_bufsize_equal_one_text_modes*$$T4D$IIIIIrcdtjz}|td5||ddddddS#1swxYwYdS)Nslinezline bufferingrFr)rlineseprassertWarnsRegexRuntimeWarningrrs  r"test_bufsize_equal_one_binary_modez2ProcessTestCase.test_bufsize_equal_one_binary_modes**,,,

"
">3C
D
D	N	N((su(MMM	N	N	N	N	N	N	N	N	N	N	N	N	N	N	N	N	N	NsA##A'*A'cpuctdD]d}|t5tjt
tjtjdddn#1swxYwYedS)NrBr)rrarrrCrrD)r$rs  rtest_leaking_fds_on_errorz)ProcessTestCase.test_leaking_fds_on_errorst	9	9A""#566
9
9 (2(29999
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9	9	9s1A))A-	0A-	c	ddl}|jn,#ttf$r|dYnwxYwtjdtd}tj	d|g}tj|tjd}|5|
d}dddn#1swxYwY||d	||jddS)
Nrzneed msvcrt.CrtSetReportModezL
            import msvcrt
            import subprocess

            cmd = a

            for report_type in [msvcrt.CRT_WARN,
                                msvcrt.CRT_ERROR,
                                msvcrt.CRT_ASSERT]:
                msvcrt.CrtSetReportMode(report_type, msvcrt.CRTDBG_MODE_FILE)
                msvcrt.CrtSetReportFile(report_type, msvcrt.CRTDBG_FILE_STDERR)

            try:
                subprocess.Popen(cmd,
                                 stdout=subprocess.PIPE,
                                 stderr=subprocess.PIPE)
            except OSError:
                pass
        r
T)rBrrr)msvcrtCrtSetReportModeAttributeErrorImportErrorrrrrrVrWrrCrDrrXr)r$r#rrrurBs      rtest_nonexisting_with_pipesz+ProcessTestCase.test_nonexisting_with_pipes sY	:MMM###,	:	:	:MM899999	: #	   

&~tT*'137999	+	+%%''*F	+	+	+	+	+	+	+	+	+	+	+	+	+	+	+$$$!,,,,,s&77	B00B47B4cgfd}tj|}|	|t5tjtt
jt
jt
jdddn#1swxYwY|	d}D]0}	tj|#t$r}|}Yd}~)d}~wwxYw||dS#|	d}D]0}	tj|#t$r}|}Yd}~)d}~wwxYw||wxYw)NctdD]<}tjt	jd=dS)NgMbP?)rextendrritimesleep)rfdss ropen_fdsz<ProcessTestCase.test_double_close_on_error.<locals>.open_fdsLsM2YY
"
"

2799%%%
5!!!!
"
"r)targetr?)
	threadingThreadstartraEnvironmentErrorrrCrrDrrrHr)r$r/texcfdrr.s      @rtest_double_close_on_errorz*ProcessTestCase.test_double_close_on_errorIs	"	"	"	"	"
H---					""#344
9
9 '1(2(29999
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9
FFHHHC

HRLLLLCCCCCC	
FFHHHC

HRLLLLCCCCCC					sqC/
<B	C/BC/BC/;C
C&C!!C&/D>D D> 
D6	*D1	,D>1D6	6D>c<	tjtjddg|jdgfd}t
jd|}|trd}nd}
tj|j|d	
|j|d
	|
|dd|fd
|fgdS)Nr
zimport time; time.sleep(12)cBdfdjfdjfdS)Nthread-start-poll-resultthread-after-kill-and-waitthread-after-second-wait)rrrmr)r)ruresultssrkill_proc_timer_threadzDProcessTestCase.test_threadsafe_wait.<locals>.kill_proc_timer_threadmsNN6		DEEEIIKKKIIKKKNN8$/JKKKIIKKKNN6HIIIIIr皙?rir_z*unexpected result in wait from main threadmsgz&unexpected result in second main wait.)r;Nr<r=)rrCrVrWrXrr1Timerr3r'r)rrr)r$r?r5expected_errorcoderur>s    @@rtest_threadsafe_waitz$ProcessTestCase.test_threadsafe_waitfstM!>!@AA$///	J	J	J	J	J	J
OC!788					$!""$
	
		'/	000*<I		K	K	K	
		*<E		G	G	G	

	
<79KL57IJL!	"	"	"	"	"rcdd}tjtjd|g}||dt|dS)N;)zimport subprocess, syszJretcode = subprocess.call([sys.executable, '-c', 'print("Hello World!")'])zassert retcode == 0r
sHello World!)rrrurVrWrrascii)r$rrzs   rtest_issue8780zProcessTestCase.test_issue8780sexx#$$
(#.$)EFF))/::E&MMJJJJJrctj\}}tj\}}tj\}}	tjdg|||n#t$r{tj|tj|tj|tj|tj|tj|YnwxYw|t
j	
||t
j	
||t
j	
|dS)N*r?)rmkstemprrCrrrHremover+rexists)r$ifhandleifnameofhandleofnameefhandleefnames       r test_handles_closed_on_exceptionz0ProcessTestCase.test_handles_closed_on_exceptions[$+--&#+--&#+--&		se8H




			HXIfHXIfHXIf
		
//000//000//00000sABC#"C#cftjttjtjtj}||jj||jj||jj|	ddzdS)Nr?x)
rrCrrDrrArHrBr@rrIs  rtest_communicate_epipez&ProcessTestCase.test_communicate_epipes_#-?$.O$.O
5
5
5	
''''''
&&&	

dUl#####rc
tjd}|jj}dddgdddfgddddf|dd	d
|dfg}tjjtj	d5|D]G\}}}}tj	||
}||_
|t||H	ddddS#1swxYwYdS)Nz
my-tool.py)lsT{z#<Popen: returncode: 123 args: 'ls'>)daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTrzP<Popen: returncode: 0 args: 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...>r[Fz&<Popen: returncode: None args: ['ls']>)r[z	--my-optsr]zP<Popen: returncode: None args: ['ls', '--my-opts', 'aaaaaaaaaaaaaaaaaaaaaaaa...>z<Popen: returncode: 7 args: z('my-tool.py')>r;r)
pathlibPath	__class__r0rkrpatchobjectrrCrrXrepr)	r$path_cmdpathlib_clscasesrrrsxrJs	         r	test_reprzProcessTestCase.test_reprsI<--(1
E
aVUD"JK
+
+
+UD
_
a
ua!\!\!\!\]
]
 
'
'
(8:J
K
K	.	.(-
.
.$UD"$S666#  a"----
.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.s*ACC
Cctjttj}||jj||ddzdS)NrrWrX)	rrCrrDrr@rHr)rrIs  r!test_communicate_epipe_only_stdinz1ProcessTestCase.test_communicate_epipe_only_stdins__#-?
4
4
4
&&&		

dUl#####rSIGUSR1zRequires signal.SIGUSR1rmzRequires os.killgetppidzRequires os.getppidc`d}tjtj|}|tjtj|tjddg}dD]N}|t
ji}tj|fi|5}|dddn#1swxYwYOdS)NcdSr!r3)signumframes  rhandlerz7ProcessTestCase.test_communicate_eintr.<locals>.handlerDrr
z7import os, signal;os.kill(os.getppid(), signal.SIGUSR1)r)	signalrmrrVrWrrDrCr)r$rsold_handlerr9streamkwprocesss       rtest_communicate_eintrz&ProcessTestCase.test_communicate_eintrs			mFNG<<
v~{CCC89+	&	&F*/*B!$--"--
&##%%%
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&	&	&sB""B&	)B&	/proc/%d/fdzLinux specificc	dtjz}tj|}|t5tttjtjtjdddn#1swxYwYtj|}|	||dS)Nr{r?)
rgetpidlistdirrar5r7rrrDrX)r$fd_directoryfds_before_popenfds_after_exceptions    r!test_failed_child_execute_fd_leakz1ProcessTestCase.test_failed_child_execute_fd_leaks	J$ry{{2:l33


1
2
2	D	D##:?%?:?
D
D
D
D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D!j66)+>?????s7B		B
B
z+behavior currently not supported on Windowsc|t5}tjgddddn#1swxYwY||jjddS)N)/opt/nonexistent_binarywithsomer9r)rarrrUrXrjfilenamerks  r%test_file_not_found_includes_filenamez5ProcessTestCase.test_file_not_found_includes_filename
s


0
1
1	QQOOOOPPP	Q	Q	Q	Q	Q	Q	Q	Q	Q	Q	Q	Q	Q	Q	Q-/HIIIIIs>AAc|t5}tjddgddddn#1swxYwY||jjddS)Nexit0z/some/nonexistent/directoryr)rarrrCrXrjrrks  r test_file_not_found_with_bad_cwdz0ProcessTestCase.test_file_not_found_with_bad_cwds


0
1
1	OQfc]0MNNNN	O	O	O	O	O	O	O	O	O	O	O	O	O	O	O-/LMMMMMsAAAc|tjttj|tjttjdSr!)rErrCbytestypesGenericAliasCompletedProcessr
r#s rtest_class_getitemsz#ProcessTestCase.test_class_getitemssJj.u5u7IJJJj9#>@RSSSSSr
HAVE_VFORKz!vfork() not enabled by configure.subprocess._fork_execc|tjtd|_|t5tjtjddgdddn#1swxYwY|	||j
jdtj
tdd5|t5tjtjddgdddn#1swxYwY||jdjdddddS#1swxYwYdS)Nzjust testing argsr
rrt
_USE_VFORKF)rrrRuntimeErrorside_effectrarrVrWassert_called_once	call_argsr9rrcrdr+call_args_list)r$mock_fork_execs  rtest__use_vforkzProcessTestCase.test__use_vforks	

-...%12E%F%F"


|
,
,	;	;NCND&9:::	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;))+++05b9:::
Z

z<
?
?	I	I""<00
?
?f=>>>
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?^:2>CBGHHH	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	I	IsH"A<<BB&E2"D/#E2/D3	3E26D3	7.E22E69E6N)r0r1r2rKrOr[rcrgrmr{r~rrrrrrrrrrrequires_resourcerrrrrrrrrrrrkskipIfr'rrrrrrrrrr!r&r)rVbase_prefixprefixr+	sysconfigis_python_buildr-r0r7r:r?rDrGrKrMrOrSrWrYr[r^r`rb
skipUnlessrjhasattrrrrzrplatformget_config_varrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr!r'r8rErIrUrYrjrlrurrzrisdirr}rrrrrrcrr3rrr=r=ss/
!!!'''   
555555444'''
'
'
''''(((''''''%%%555444Wz**
6
6+*
6   +++(((<<<.)))+++	M	M	MDDDAAA999X_Y DEEGGFEG
X_Y DEE((FE(X_Y DEE((FE(
***===&AAANNN
KKK
X_Y DEE
E
EFE
EX_Y DEE--FE-$CCCX_S_
2244DD44DX_S_
2244X_.Y.00:<<44<<444******
*
*
*999
6
6
6	/	/	/===
:
:
:	3	3	3****
>
>
>
4
4
4>>>&))))))(((XA775.#A#A@BB  BB DXA775.#A#A@BBBB@	0	0	0X_S\W,:<<X_-Y-.@AAQF233X___T222@BB22BB33<<2,@@@666<***'''///
/
/
/@@@&555"999,'''222.&&& %F%F%FNEEE2***
*
*
*GGG8333,>>>*%"%"%"N"""$	&	&	&&&&CCC888&&&...,JJJNNNWu%%
9
9&%
9'-'-'-R:2"2"2"h	K	K	K111(	$	$	$...&$$$X33244XV,,+--XY//.00&&00--44&&X}yry{{'BCC)++@@++@ X_Y MNNJJONJ
X_Y MNNNNONN
TTTX_11,???8::TZ'((
I
I)(::
I
I
Irr=ceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
Ze
jddZd
ZdZdZdZejeddZdZdZdZejeddZdZdS)RunFuncTestCasecF	tjd|g}tj|fi|S)Nr
rVrWrr)r$rr:argvs    r
run_pythonzRunFuncTestCase.run_python+s+Bd+~d--f---rc|d}||jd|tj5|ddddS#1swxYwYdSr)rrXrrarricheck_returncoder$cps  rtest_returncodezRunFuncTestCase.test_returncode0s
__7
8
8+++


z<
=
=	"	"!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"sA22A69A6c|tj5}|dddddn#1swxYwY||jjddS)NrRTrsrS)rarrirrXrjrrks  r
test_checkzRunFuncTestCase.test_check7s


z<
=
=	DOO6dOCCC	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D/44444sAAAcrtjtd}||jddS)NTrsr)rrrrXrrs  rtest_check_zerozRunFuncTestCase.test_check_zero<s4
^O4
8
8
8*****rc|tj5|ddddddS#1swxYwYdS)Nr]r	r_)rarrbrr#s rtest_timeoutzRunFuncTestCase.test_timeoutAs


z8
9
9	@	@OO.O???	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@sAA	A	c~|dtj}|d|jdS)NrprrrqrrrDrvrArs  rtest_capture_stdoutz#RunFuncTestCase.test_capture_stdoutIs5
___Z__
E
E

gry)))))rc~|dtj}|d|jdS)Nrrrq)rrrDrvrBrs  rtest_capture_stderrz#RunFuncTestCase.test_capture_stderrNs>
__C$.O55

gry)))))rc.tj}||j|d|d|d|tj}|	d|j
dS)Nrrrrr)rrrrHrrrrrDrvrA)r$rrs   rrz+RunFuncTestCase.test_check_output_stdin_argSs

#
%
%!!!





__I22	


gry)))))rc|ddtj}|d|jdS)Nrr)rrArrrs  rrz+RunFuncTestCase.test_check_output_input_arg^sB
__Hjo77	


gry)))))rctj}||j|d|d|td5}|d|d}dddn#1swxYwY|	d|j
jd|	d	|j
jddS)
NrrrrArrrr@r)rrrrHrrrarxrrvrjr9rs    rrz6RunFuncTestCase.test_check_output_stdin_with_input_arges

#
%
%!!!







zKMM	>PQ__%?+-W%>>F	>	>	>	>	>	>	>	>	>	>	>	>	>	>	>	


gq{/2333

gq{/233333s4BB Brc8|tj5}|ddtj}dddn#1swxYwY||jjd||jjddS)Nrr)r`rArq)	rarrbrrDrXrjrzrA)r$rlrs   rrz)RunFuncTestCase.test_check_output_timeoutrs


z8
9
9	7Q(jo!77B	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	
+W555+W55555s#AAActj}d|d<|d|}||jddS)NrrzCimport sys, os;sys.exit(33 if os.getenv("FRUIT")=="banana" else 31)r!)rrrrrXr)r$rrs   rtest_run_kwargszRunFuncTestCase.test_run_kwargss]"""w
__M!'))	
+++++rctrdnd}tj|}|||dt	|}tj|t
j}||j	d|
t5tj|t
jdddddS#1swxYwYdS)Nztree.comr[z required for this testrrrT)rAr)r'rrrr	rrr]rXrrar)r$progrress    rtest_run_with_pathlike_pathz+RunFuncTestCase.test_run_with_pathlike_paths!'0zzD|D!!<MMT:::;;;~~nT**<===+++


y
)
)	H	HN4
(:$GGGG	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	H	Hs"C

CCctjtj}|ddg}t	j|}||jddS)Nr
simport sys; sys.exit(57)9)rrrVrWrrrXrr$rr9rs    r&test_run_with_bytes_path_and_argumentsz6RunFuncTestCase.test_run_with_bytes_path_and_argumentssM{3>**d78nT"",,,,,rcttj}|ddg}tj|}||jddS)Nr
zimport sys; sys.exit(57)r)r	rVrWrrrXrrs    r)test_run_with_pathlike_path_and_argumentsz9RunFuncTestCase.test_run_with_pathlike_path_and_argumentssK''d67nT"",,,,,rz#Maybe test trigger a leak on UbuntucPtjddg}tj|idS)Nr
rrr)r$r9s  rtest_run_with_an_empty_envz*RunFuncTestCase.test_run_with_an_empty_envs/f-	t$$$$$$rc|dd}|d|j|d|jdS)Nz>import sys;sys.stdout.write('BDFL'); sys.stderr.write('FLUFL')Tcapture_outputrqsFLUFL)rrvrArBrs  rtest_capture_outputz#RunFuncTestCase.test_capture_outputsX
__:-122	


gry)))

h	*****rctj}||j|t
d5}|dd|}dddn#1swxYwY|d|jj	d|d|jj	ddS)	NzAExpected ValueError when stdout and capture_output args supplied.rArT)rrArArr
rrrrHrarxrrvrjr9rs    r#test_stdout_with_capture_output_argz3RunFuncTestCase.test_stdout_with_capture_output_arg

#
%
%!!!


z"$$	F'(__%?59"%FFF	F	F	F	F	F	F	F	F	F	F	F	F	F	F	F
	


h 0 3444

&(8(;<<<<<
A//A36A3ctj}||j|t
d5}|dd|}dddn#1swxYwY|d|jj	d|d|jj	ddS)	NzAExpected ValueError when stderr and capture_output args supplied.rArT)rrBrBrrrrs    r#test_stderr_with_capture_output_argz3RunFuncTestCase.test_stderr_with_capture_output_argrrz)requires posix like 'sleep' shell commandcN	tj}	tjdddd|dnB#tj$r0}tj}t
j}Yd}~nd}~wwxYw|||z
dd|d	dS)
Nzsleep 3Tr^)rr`rzTimeoutExpired not raised.g?z/TimeoutExpired was delayed! Bad traceback:
```
z```rA)	r,	monotonicrrrrb	traceback
format_exc
assertLess)r$before_secsr6
after_secsstackss     r.test_run_with_shell_timeout_and_capture_outputz>RunFuncTestCase.test_run_with_shell_timeout_and_capture_outputsXn&&	4N9D#*.
0
0
0
0
II23333	(	,	,	,))J)++FFFFFF	,
	

[0#'!'''		(	(	(	(	(sAB&A>>Bctjd}tjtjdd|gd}|j}|t|d||
|dd|
|d	d
dS)Nz            from subprocess import *
            run("echo hello", shell=True, text=True)
            check_output("echo hello", shell=True, text=True)
            z-Xwarn_default_encodingr
Trrers<string>:2: EncodingWarning: rs<string>:3: EncodingWarning: )rrrrrVrWrB
splitlinesrXrrr)r$rrliness    rtest_encoding_warningz%RunFuncTestCase.test_encoding_warnings 
^S^-FdS+/111	$$&&UQ...a++,LMMNNNa++,LMMNNNNNrN)r0r1r2rrrrrrrrrrrrrrrrrrkrr'rrrrrrrr3rrrr*s...
"""555
+++
@@@***
***
	*	*	****444Wz**66+*6,,,HHH------X$IJJ%%KJ%+++
=
=
=
=
=
= X_Y KLL
(
(ML
(OOOOOrrcdD]3}tr*	tj|n#t$rY+wxYw|cS4tjd)N)staffnogroupgrpnobody	nfsnobodyz?No identified group name to use for this test on this platform.)rgetgrnamKeyErrorrkrl)
name_groups r_get_test_grp_namersxHcc
	
Z((((



	 abbbs"
//zPOSIX specific testsceZdZfdZdZdZdZdZGddej	Z
ejdd	Z
ejdd
Zejejddd
ZdZejeedoeedddZejeedddZejeedddZejeedddZejeedddZejeedddZejeedd d!Zejepeed"d#d$Z d%Z!d&Z"d'Z#d(Z$d)Z%d*Z&Gd+d,ej	Z'ejejd-d.d/Z(d0Z)eje*j+d1kd2d3Z,d4Z-d5Z.d6Z/d7Z0d8Z1d9Z2d:Z3eje*j+4d;d<d=Z5d>Z6d?Z7d@Z8dAZ9dBZ:dCZ;dDZ<dEZ=dFZ>dGZ?dHZ@dIZAdJZBdKZCdLZDdMZEdNZFdOZGdPZHdQZIdRZJdSZKdTZLdUZMdVZNdWZOdXZPdYZQeje*j+4dZo+ejRd[jSejRd\jSkd]d^ZTeUjVd_d`daZWdbZXdcZYddZZdeZ[dfZ\dgZ]dhZ^diZ_djZ`dkZaeUjbdlZceUjbdmZddnZedoZfdpZgdqZhejeidruoeeidsdtduZjdvZkdwZldxZmxZnS)yPOSIXProcessTestCasecVtd|_dS)Nz/_this/pa.th/does/not/exist)superr%_nonexistent_dirr$rbs rr%zPOSIXProcessTestCase.setUps"


 =rc	tj|j|d|jzn#t$r}|}Yd}~nd}~wwxYw|S)Nz,chdir to nonexistent directory %s succeeded.)rchdirrrr)r$rdesired_exceptions   r_get_chdir_exceptionz)POSIXProcessTestCase._get_chdir_exceptions		-HT*+++
IID+,
-
-
-
-
	"	"	"!"		"! s9
AA

Ac	|}	tjtjddg|j}|d|zdS#t$rk}||j	|j	||j
|j
||j|jYd}~dSd}~wwxYw)Nr
rrExpected OSError: %srrrCrVrWrrrrXrstrerrorrr$rrJrs    rtest_exception_cwdz'POSIXProcessTestCase.test_exception_cwdsI 5577
	B #.$!;%)%:<<<A
II,/@@AAAAA	E	E	E
.4ag>>>.7DDD.7DDDDDDDDD	E(A
C#A C		Cc	|}	tjtjddg|j}|d|zdS#t$rk}||j	|j	||j
|j
||j|jYd}~dSd}~wwxYw)Nr
rrrrrs    rtest_exception_bad_executablez2POSIXProcessTestCase.test_exception_bad_executablesP 5577
	B #.$!;,0,ACCCA
II,/@@AAAAA	E	E	E
.4ag>>>.7DDD.7DDDDDDDDD	Erc	|}	tj|jddg}|d|zdS#t
$rk}||j|j||j|j||j	|j	Yd}~dSd}~wwxYw)Nr
rr)
rrrCrrrrXrrrrs    rtest_exception_bad_args_0z.POSIXProcessTestCase.test_exception_bad_args_0-sM 5577		B $"7r!BCCA
II,/@@AAAAA	E	E	E
.4ag>>>.7DDD.7DDDDDDDDD	EsA

CA B==CceZdZdZdS)&POSIXProcessTestCase.PopenNoDestructorcdSr!r3r#s r__del__z.POSIXProcessTestCase.PopenNoDestructor.__del__CrtrN)r0r1r2rr3rrPopenNoDestructorr
Bs#					rr
rc	d}||_tjdt5|t
5|dgdddn#1swxYwYddddS#1swxYwYdS)Nc|d}dtj}t	j|d|zdzdS)N
z{:x}sOSError::r)rrEISDIRrrr)r9
errpipe_writeerr_codes   rproper_errorzHPOSIXProcessTestCase.test_exception_errpipe_normal.<locals>.proper_errorIsK HM}}U\2299;;HH]K($:T$ABBB1rsubprocess.os.waitpidrnon_existent_command)rrrcChildProcessErrorraIsADirectoryErrorr
)r$	fork_execrs   rtest_exception_errpipe_normalz2POSIXProcessTestCase.test_exception_errpipe_normalFsFL			!-	
Z/$5777	A	A""#455
A
A&&(>'?@@@
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	As5A=A%A=%A)	)A=,A)	-A==BBc	dfd}||_tjdt5|t
j5}|dgdddn#1swxYwYdddn#1swxYwY|tt|jdS)NsޭcB|d}tj|dS)Nrr)rr)r9r
error_datas  r	bad_errorzGPOSIXProcessTestCase.test_exception_errpipe_bad_data.<locals>.bad_error\s% HM
H]J///1rrrr)rrrcrrarSubprocessErrorr
rvrer
rj)r$rr rrs    @rtest_exception_errpipe_bad_dataz4POSIXProcessTestCase.test_exception_errpipe_bad_dataWsr	"(
					!*	
Z/$5777	A	A"":#=>>
A!&&(>'?@@@
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A
	


d:&&AK(8(899999s5 BA/#B/A3	3B6A3	7BB

B
/proc/self/statuszneed /proc/self/statusctjddgd}|D]}|dr|}n|dtjddgd}|D]}|dr|}n|||d	dS)
Ncatr#F)restore_signalssSigIgnz&SigIgn not found in /proc/self/status.Tz=restore_signals=True should've unblocked SIGPIPE and friends.rA)rrurrrassertNotEqual)r$default_proc_statusrdefault_sig_ign_maskrestored_proc_statusrestored_sig_ign_masks      rtest_restore_signalsz)POSIXProcessTestCase.test_restore_signalsms)5+, %'''(2244	D	DDy))
'+$

MMBCCC)6+, $ & & &)3355		Dy))
(,%
	
02G!3		4	4	4	4	4rc	tjtjddgd}t	jd}t
|}|||dS#t$r!}|j	tj
krYd}~dSd}~wwxYw)Nr
zimport os; print(os.getsid(0))T)start_new_sessionr)rrurVrWrgetsidintr'PermissionErrorrEPERM)r$rz
parent_sid	child_sidrs     rtest_start_new_sessionz+POSIXProcessTestCase.test_start_new_sessions
	7,^T+KL&*,,,F1JFI
I66666
			w%+%%&%%%%%	#A  
B*BBsetpgidgetpgidz!no setpgid or getpgid on platformc	tjtjddgd}t	jd}t
|}|||dS#t$r!}|j	tj
krYd}~dSd}~wwxYw)Nr
zimport os; print(os.getpgid(0))r)
process_group)rrurVrWrr8r0r'r1rr2)r$rzparent_pgid
child_pgidrs     rtest_process_group_0z)POSIXProcessTestCase.test_process_group_0s
	9,^T+LM"#%%%F*Q--KVJZ88888
			w%+%%&%%%%%	r6setreuidzno setreuid on platformctj}|dkrdnd|g}tjdkrdnd}t=	t	j|||n#t$rd}YnwxYw|D]}dD]}|||5	tj
tjdd	g||}t|trt	j|j}n|}t|}|||nB#t"$rYn6t$$r*}	|	jt&jt&jfvrYd}	~	nd}	~	wwxYwdddn#1swxYwY|t.5tjt2d
dddn#1swxYwY|t45tjt2tjtjd
dddn#1swxYwYtR|R|t.5tjt2|ddddS#1swxYwYdSdSdS)Ndarwinrunknownr)user	close_fdsr
zimport os; print(os.getuid())rtrD)rrrD)rgeteuidrVrpwdgetpwnamrrsubTestrrurW
isinstancer
pw_uidr0rXr1rrEACCESr2rarxrfr
OverflowErrorrr)
r$uid
test_usersname_uidrDrErzuser_uid
child_userrs
          r	test_userzPOSIXProcessTestCase.test_usersjll"e||ee<
"|x7788Y?
 X&&&!!(++++
 
 
 
 	?	?D*
?
?	\\ty\AA???!+!8!$!@!B%)*3	"5"5"5&dC00,'*|D'9'9'@HH'+H%([[
((X>>>>+""""75<*EEE!FEEEE"???????????????
?*

z
*
*	<	<!/;;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<

}
-
-	M	M!/&(iRZe
M
M
M
M	M	M	M	M	M	M	M	M	M	M	M	M	M	M	M;8/"":..
F
F%oHEEEE
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F;//s)A&&A54A5E"$D=AE"
E	E" 	E	) E		E"E	E""E&)E&	F11F58F52HHHI++I/2I/z setreuid() available on platformc|t5tjtdddddS#1swxYwYdS)NrFrarxrrfrr#s rtest_user_errorz$POSIXProcessTestCase.test_user_errors


z
*
*	?	?!/>>>>	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?	?AAAsetregidzno setregid() on platformc6tj}|dkrdndg}t}t||||gzD]}dD]}|||5	t
jtj	ddg||}t|trtj|j
}n|}t|}|||n#t $rYnwxYwdddn#1swxYwY|t$5t
jt(ddddn#1swxYwY|t*5t
jt(tjtjd	
dddn#1swxYwYtP|t$5t
jt(|ddddS#1swxYwYdSdS)Nr@rAr)grouprEr
zimport os; print(os.getgid())rtr]rG)rrr])rgetegidrrrrKrrurVrWrLr
rgr_gidr0rXr1rarxrfrrOrr)	r$gid
group_listrr]rErz	group_gidchild_groups	         r
test_groupzPOSIXProcessTestCase.test_groupsojll"e||ee7
'))
?j)))3%'	A	AE*
A
A	\\\CCAAA!+!8!$!@!B&+*3	"5"5"5&eS11.(+U(;(;(BII(-I&)&kk((i@@@@+AAAAAAAAAAAAAAA
A(

z
*
*	=	=!/<<<<	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=

}
-
-	N	N!/&(iRZu
N
N
N
N	N	N	N	N	N	N	N	N	N	N	N	N	N	N	N;"":..
I
I%oZHHHH
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I
I;sm,D.$C)AD)
C6	3D5C6	6DD	D	,EEE92F77F;>F;#HHHz setregid() available on platformc|t5tjtdddddS#1swxYwYdS)NrWr^rXr#s rtest_group_errorz%POSIXProcessTestCase.test_group_error
s


z
*
*	@	@!/????	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@rZ	setgroupszno setgroups() on platformctj}|dkrdndg}t}d}t||	tjtjddg|}tj	}tj|}t
d|D}n|}|r1|t|t|n`|t|t|n/#t$r"}	|	jtjkrd}Yd}	~	nd}	~	wwxYw|t$5tjt(d	gdddn#1swxYwY|t$5tjt(tjtjd
gdddn#1swxYwYtQ|t$5tjt(|gddddS#1swxYwYdSdS)Nr@rAFr
z;import os, sys, json; json.dump(os.getgroups(), sys.stdout)extra_groupscng|]2}t|trtj|jn|3Sr3)rLr
rrr`)rgs  rrz:POSIXProcessTestCase.test_extra_groups.<locals>.<listcomp>(sI 5 5 5$%;EQ:L:L SQ 6 6RS 5 5 5rTrtrG)rrrk)rr_rrrrrurVrW	getgroupsjsonloadsrXsetrrr2rarxrfrrr)
r$rarbr
perm_errorrz
parent_groupschild_groupsdesired_gidsexs
          rtest_extra_groupsz&POSIXProcessTestCase.test_extra_groupssGjll"e||ee7
'))

?j)))	G,^TRT!+---FLNNM:f--L 5 5)3 5 5 5 *
G  \!2!2C
4F4FGGGG  \!2!2C4E4EFFFF%			x5;&&JJJJJJ	*

z
*
*	F	F!/EEEE	F	F	F	F	F	F	F	F	F	F	F	F	F	F	F

z
*
*	8	8!/&(iRZ05w
8
8
8
8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8
;"":..
A
A%o4><AAAA
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A
A;sN#D
D<D77D<FF	F'3G&&G*-G*H<<IIz!setgroups() available on platformc|t5tjtgddddS#1swxYwYdS)NrjrXr#s rtest_extra_groups_errorz,POSIXProcessTestCase.test_extra_groups_error@s


z
*
*	D	D!/CCCC	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	D	DrZumaskzPOSIX umask() is not available.c	d}	tj}tj|d}tjtjdd|dgdtj	|j
dz}d}|||t|d	t|
|tj|dSdS#|tj|wwxYw)Nbeansr
zopen(z, 'w').close()+)rziiz != rA)rrrrrrrfrVrWstatst_moderXoctrr)r$rnamer
expected_modes     r
test_umaskzPOSIXProcessTestCase.test_umaskEs	&%''F7<<00D
!^T+I4+I+I+IJ
!
!
!
!
gdmm+e3G!M]G$'
$6$6!J!JCLL!J!J

L
L
L!
f%%%%%"!v!
f%%%%"sB/C

C&ctj5tjtjddg}|dddn#1swxYwY||jtj
dS)Nr
zimport os; os.abort())rrrrCrVrWr)rXrruSIGABRTrIs  rtest_run_abortz#POSIXProcessTestCase.test_run_abort[s

(
*
*		 #.$"9";<<A
FFHHH																
!,77777s6AAAcTtjttjd}t|}|d||d||ttj|dS)Nfake cmdruSIG)rrir0rurr
rvlowerr$rerror_strings   r"test_CalledProcessError_str_signalz7POSIXProcessTestCase.test_CalledProcessError_str_signalcs+S-@-@,@*MM3xx	


h 2 2 4 4555	


e\***

c&.))<88888rcztjdd}t|}|d|dS)NiKirzunknown signal 9876543.rrir
rvrs   r*test_CalledProcessError_str_unknown_signalz?POSIXProcessTestCase.test_CalledProcessError_str_unknown_signalns:+HjAA3xx

/>>>>>rcztjdd}t|}|d|dS)Nrerznon-zero exit status 2.rrs   r$test_CalledProcessError_str_non_zeroz9POSIXProcessTestCase.test_CalledProcessError_str_non_zeross:+Az::3xx

/>>>>>rctjtjddgtjd}|5||jdddddS#1swxYwYdS)Nr
r}c,tjddS)Nrapple)rputenvr3rr<lambda>z3POSIXProcessTestCase.test_preexec.<locals>.<lambda>s	'70K0Kr)rA
preexec_fnappler>rIs  rtest_preexecz!POSIXProcessTestCase.test_preexecxs
cndEF%/O(K(K	
M
M
M
	8	8QX]]__h777	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8s.A--A14A1c`d}	tjtjddg|}|ddS#tj$r+}|tjdYd}~dSd}~wt$r,}|	d|j
dYd}~dSd}~wwxYw)	Nc td)Nz'What if two swallows carried a coconut?rxr3rrraise_itz=POSIXProcessTestCase.test_preexec_exception.<locals>.raise_itsFGGGrr
rrzEException raised by preexec_fn did not make it to the parent process.z)Expected a ValueError from the preexec_fncoconutr)rrCrVrWrr!r
_fork_execrxrvr9)r$rrJrs    rtest_preexec_exceptionz+POSIXProcessTestCase.test_preexec_exceptions	H	H	H	0 #.$!;,4666A
II/
0
0
0
0
0)	A	A	AOO)?
A
A
A
A
A
A
A
A
A	0	0	0MM)QVAY/////////	0s!#?B- A44
B-!B((B-ceZdZ	dZdZdS)+POSIXProcessTestCase._TestExecuteChildPopencH||_tjj|g|Ri|dSr!)	_testcaserrCr)r$testcaser9r:s    rrz4POSIXProcessTestCase._TestExecuteChildPopen.__init__s3%DN%d<T<<<V<<<<<rc
6	tjj|g|Ri|dtdD}	|D]g}|j||j|j|j	fdh	|D]}tj|dS#|D]}tj|wxYw#dtdD}	|D]g}|j||j|j|j	fdh	|D]}tj|w#|D]}tj|wxYwxYw)NcLg|]!}tjdtj"S)	/dev/zero)rrO_RDONLY)rrs  rrzNPOSIXProcessTestCase._TestExecuteChildPopen._execute_child.<locals>.<listcomp>s6222#$ "w{BK@@222rz!At least one fd was closed early.rA)rrCr;rrrr@r3rArBrrH)r$r9r:devzero_fdsr7s     rr;z:POSIXProcessTestCase._TestExecuteChildPopen._execute_childs
% /FtFFFvFFF
22(-a222%)II22 "TZ%6%6%8%8$+:L:L:N:N%)[%7%7%9%9%;$G3IIIII*%%%%k%%%22(-a222%)II22 "TZ%6%6%8%8$+:L:L:N:N%)[%7%7%9%9%;$G3IIIII*%%%k%%%s0CA*B<<CF5A*E: F:FFN)r0r1r2rr;r3rr_TestExecuteChildPopenrs5A	=	=	=	%	%	%	%	%rrrz/dev/zero required.c		d}|tj5||ttjtjtj|ddddS#1swxYwYdS)Nc*tjd)Nz-force the _execute_child() errpipe_data path.)rr!r3rrrzWPOSIXProcessTestCase.test_preexec_errpipe_does_not_double_close_pipes.<locals>.raise_its,CEE
Er)r@rArBr)rarr!rrrD)r$rs  r0test_preexec_errpipe_does_not_double_close_pipeszEPOSIXProcessTestCase.test_preexec_errpipe_does_not_double_close_pipessD	E	E	E

z9
:
:	E	E''o(ojo)8
(
E
E
E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	E	Es?A00A47A4ctj}	tj|tjt	jtjddgd|tjdtj|	tjt	jtjddgd|	tjd|stjdSdS#|stjwwxYw)Nr
rcdSr!r3r3rrrzEPOSIXProcessTestCase.test_preexec_gc_module_failure.<locals>.<lambda>trrz#Popen enabled gc when it shouldn't.cdSr!r3r3rrrzEPOSIXProcessTestCase.test_preexec_gc_module_failure.<locals>.<lambda>rrzPopen left gc disabled.)
gc	isenableddisabler+rrUrVrWenabler)r$enableds  rtest_preexec_gc_module_failurez3POSIXProcessTestCase.test_preexec_gc_module_failures/,..	JLLLR\^^,,,OS^T26'3|
5
5
5
5R\^^B
D
D
D
IKKKOOBLNN+++OS^T26'3|
5
5
5
5OOBLNN,EFFF



7


sDD66ErBz!setrlimit() seems to fail on OS Xcv	ddlm}m}m}n,#t$r}||Yd}~nd}~wwxYw||}|\}}||d|f||||	tjtj
ddgd|ddS#t$rYdSwxYw)Nr)	getrlimit	setrlimitRLIMIT_NPROCr
rcdSr!r3r3rrrz@POSIXProcessTestCase.test_preexec_fork_failure.<locals>.<lambda>rrrz.RLIMIT_NPROC had no effect; probably superuser)resourcerrrr&rrrrUrVrWBlockingIOError)r$rrrrlimitsrhards        rtest_preexec_fork_failurez.POSIXProcessTestCase.test_preexec_fork_failures
	CCCCCCCCCCC			MM#	<((	D	,D	***	<888	LOS^T26'3|
5
5
5
5
MMJKKKKK				DD	s"


616/$B**
B87B8ctj\}}t|dd5}|dtjz|dtjzdddn#1swxYwYtj	|dtj|}|tj
|||jddSNwr)rz#!%s
z(exec '%s' -c 'import sys; sys.exit(47)'
irS)rrLrrr
unix_shellrVrWrchmodrrCr)rMrXr)r$r7fnamefobjrJs     rtest_args_stringz%POSIXProcessTestCase.test_args_strings$&&	E
"c"3
4
4
4	'JJx'"44555JJB~&
'
'
'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	U##	
	%r*****AA::A>A>c|ttjtjddgd|ttjtjddgddS)Nr
rRrSstartupinfo
creationflagsrarxrrUrVrWr#s rrz&POSIXProcessTestCase.test_invalid_argssx*jo>457&(		*	*	*	
*jo>457(*		,	,	,	,	,rcHtj}d|d<tjdgdtj|}|5||j	ddddddS#1swxYwYdSNrrzecho $FRUITrrrArs 	
r
rrrrrCrDrXrArrr$rrJs   rtest_shell_sequencez(POSIXProcessTestCase.test_shell_sequences""!wm_A$.O!'
)
)
)	L	LQX]]__22<@@(KKK	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	Ls	ABBBcFtj}d|d<tjddtj|}|5||j	ddddddS#1swxYwYdSrrrs   rtest_shell_stringz&POSIXProcessTestCase.test_shell_string	s""!w]!$.O!'
)
)
)	L	LQX]]__22<@@(KKK	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	L	LsABBBctj\}}t|dd5}|dtjz|dtjzdddn#1swxYwYtj	|dtj|}tj||
|ddSr)rrLrrrrrVrWrrrrUrMrX)r$r7rrrZs     rtest_call_stringz%POSIXProcessTestCase.test_call_string	s$&&	E
"c"3
4
4
4	'JJx'"44555JJB~&
'
'
'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	'	
_U
#
#
	%R     rc	g}dD][}dD]V}tj||}tj|r||W\|s|dd}tj|r4tj|s|||D]}tjd|dtj	}|5|
|j
t|ddddn#1swxYwYdS)	N)z/binz	/usr/bin/z/usr/local/bin)bashkshz"bash or ksh required for this testz/bin/shzecho $0T)rWrrArH)rrrisfilerrislinkrrCrDrXrArrr)r$shellsrrshrJs      rtest_specific_shellz(POSIXProcessTestCase.test_specific_shell	s=	&	&F'
&
&W\\&$//7>>"%%&MM"%%%
&	@MM>???

7>>"	bgnnR&8&8	MM"	N	NB r(2999A
N
N  !6!6!8!8%G:L:LMMM
N
N
N
N
N
N
N
N
N
N
N
N
N
N
N	N	Ns5AEE	E	ctjtjtj}	tjt
jddgdtjtjtj}tjtj|n$#tjtj|wxYw|j	dt||||S)Nr
zif 1:
                                 import sys, time
                                 sys.stdout.write('x\n')
                                 sys.stdout.flush()
                                 time.sleep(30)
                                 TrEr@rArBr)ruSIGINTdefault_int_handlerrrCrVrWrDrArgetattr)r$methodr9rvrJs     r
_kill_processz"POSIXProcessTestCase._kill_process3	s
mFM63MNN	6 #.$9%"&,0'1(2(2	9	9	9A
M&-5555FM&-5555	


a6D!!sAB!B0)netbsdopenbsdz"Due to known OS bug (issue #16762)c8tjtjddgdtjtjtj}|jdtjdt||||
dS)Nr
zif 1:
                             import sys, time
                             sys.stdout.write('x\n')
                             sys.stdout.flush()
                             Trr)rrCrVrWrDrArr,r-rr)r$rr9rJs    r_kill_dead_processz'POSIXProcessTestCase._kill_dead_processL	s

cnd5!"
(,#-?$.O$.O
5
5
5	


a
1


6D!!	

rc|dtj}|\}}|d|||ddS)Nsend_signalsKeyboardInterruptr)rrurrrvr'r)r$rJrrBs    rtest_send_signalz%POSIXProcessTestCase.test_send_signalc	sc}fm<<MMOO	6

*F333AFFHHa(((((rc|d}|\}}||d||tjdS)Nrmr)rrrXr)ruSIGKILLrs    r	test_killzPOSIXProcessTestCase.test_killi	sdv&&MMOO	6%%%FN?33333rc|d}|\}}||d||tjdS)N	terminater)rrrXr)ruSIGTERMrs    rtest_terminatez#POSIXProcessTestCase.test_terminateo	sd{++MMOO	6%%%FN?33333rcF|dtjdSNr)rrurr#s rtest_send_signal_deadz*POSIXProcessTestCase.test_send_signal_deadu	s 
v}=====rc0|ddSNrmrr#s rtest_kill_deadz#POSIXProcessTestCase.test_kill_deady	s'''''rc0|ddSNrrr#s rtest_terminate_deadz(POSIXProcessTestCase.test_terminate_dead}	s,,,,,rcg}|D]B}tj|}tj|}||||fC|Sr!)rget_inheritabledupr)r$save_fdsr.r7inheritablesaveds      r	_save_fdszPOSIXProcessTestCase._save_fds	sT	1	1B,R00KF2JJEJJE;/0000
rcn|D]1\}}}tj|||tj|2dS)N)r)rdup2rH)r$r.r7rrs     r_restore_fdsz!POSIXProcessTestCase._restore_fds	sH&)		"B{GE2;7777HUOOOO		rcd}||}|D]\}}}|dkr|}n	|D]}tj|tjt
jddg|tjtj\}}|	|d|	|d|
|dS#|
|wxYw)Nrr
rUr?rr=)r
rrHrrCrVrWrDrrXr)	r$r.r@	saved_fdsr7rrrrs	         rcheck_close_std_fdsz(POSIXProcessTestCase.check_close_std_fds	sNN3''	&/		"B{Qww	)

!';)<
#(o(o///0;{}}
C
S(+++S),,,i(((((Di((((sBCC-c2|dgdSrerr#s rtest_close_fd_0z$POSIXProcessTestCase.test_close_fd_0	  !%%%%%rc2|dgdSNrrr#s rtest_close_fd_1z$POSIXProcessTestCase.test_close_fd_1	rrc2|dgdS)Nrerr#s rtest_close_fd_2z$POSIXProcessTestCase.test_close_fd_2	rrc4|ddgdS)Nrrrr#s rtest_close_fds_0_1z'POSIXProcessTestCase.test_close_fds_0_1	   !Q(((((rc4|ddgdS)Nrrerr#s rtest_close_fds_0_2z'POSIXProcessTestCase.test_close_fds_0_2	rrc4|ddgdS)Nrrerr#s rtest_close_fds_1_2z'POSIXProcessTestCase.test_close_fds_1_2	rrc4|gddS)N)rrrerr#s rtest_close_fds_0_1_2z)POSIXProcessTestCase.test_close_fds_0_1_2	s"	
  +++++rcb	tjd}tjd}	tjdtjdtjt
jddgtj|dtj|dtj|tj|dS#tj|dtj|dtj|tj|wxYw)Nrrr
z*print('AssertionError:0:CLOEXEC failure.'))	rr	rHrrCrVrWr)r)r$	new_stdin
new_stdouts   rtest_small_errpipe_write_fdz0POSIXProcessTestCase.test_small_errpipe_write_fd	sKF1II	VAYY
	!HQKKKHQKKK

ND@B
C
CCG4666
GIq!!!GJ"""HYHZ     
GIq!!!GJ"""HYHZ    s
ACAD.cdtdD}	d|D}|D]\}}tj|tj|ddtj|ddd|td}	t
|D]\}}tj||tj	tjddg|d|d	|d
}||
|n#|
|wxYw|D]}tj|ddtj|d	d}tj|dd}	||d||	d
|D]}tj|dS#|D]}tj|wxYw)Nc4g|]}tjSr3rrLrrs  rrz?POSIXProcessTestCase.test_remapping_std_fds.<locals>.<listcomp>	!666!##666rrcg|]\}}|Sr3r3rr7rs   rrz?POSIXProcessTestCase.test_remapping_std_fds.<locals>.<listcomp>	s222yr5222rrSTDINrr
Zimport sys; got = sys.stdin.read();sys.stdout.write("got %s"%got); sys.stderr.write("err")rer?rB	got STDINerr)rrunlinkrr4r
	enumeraterrrCrVrWr)rrrrXrH)
r$tempstemp_fdsr7rrtemp_fdrJrrs
          rtest_remapping_std_fdsz+POSIXProcessTestCase.test_remapping_std_fds	s366U1XX666(	22E222H#
!
!	E	%    
HXa[(+++HXa[!Q'''uQxx00I
-#,X#6#6))KBGGR(((($cndN&O#1+#A;#A;(((!!),,,,!!),,,,
#
#Q""""'(1+t,,C'(1+t,,2244CS,///S&)))



h


s&BG,A5D(G,(D??BG,,HcdtdD}d|D}	|D]\}}tj||td}	t	|D]\}}	tj|	|tj|dtj|ddtj	tjddg|||}
|
|D]}tj|ddtj
|d	}tj
|d	}||n#||wxYw||d
||d|D]}tj|dS#|D]}tj|wxYw)Nc4g|]}tjSr3r,r-s  rrz7POSIXProcessTestCase.check_swap_fds.<locals>.<listcomp>
r.rrcg|]\}}|Sr3r3r0s   rrz7POSIXProcessTestCase.check_swap_fds.<locals>.<listcomp>
s...92uB...rr1rr
r2r?rBr3r4)rrr5r
r6rrr4rrCrVrWr)rrrrXrH)
r$stdin_no	stdout_no	stderr_nor7r8r7rrr9rJrrs
             rcheck_swap_fdsz#POSIXProcessTestCase.check_swap_fds
s66U1XX666.....'	"
!
!	E	%    uQxx00I
-#,X#6#6))KBGGR((((8,,,1a((($cndN&O#$$&&&"''BHRA&&&&gi..gi..4466!!),,,,!!),,,,S,///S&)))



h


s$>G&C%E!G!E88/GGc|ddd|ddd|ddd|ddd|ddd|ddddS)Nrrre)rAr#s r
test_swap_fdsz"POSIXProcessTestCase.test_swap_fds0
sAq!$$$Aq!$$$Aq!$$$Aq!$$$Aq!$$$Aq!$$$$$rc|td}	|D]T}tj5}t	j||dddn#1swxYwYUttdt|z
}t	j	|gd}i}t||D]\}}	||||	<tjd}
ttdt|z
}tjtjd|
t#|gfi|}||dt||D]\}}	t	j|dtjt	j|d}
t-t/t0|
d}tjd|d	|d
|d|d|	d
}||	g||	||dS#||wxYw)Nrr?z
                import os, sys
                skipped_fd = int(sys.argv[1])
                for fd in range(3):
                    if fd != skipped_fd:
                        os.write(fd, str(fd).encode('ascii'))
            r
rrBrHz"
                    When testing z to z4 redirection,
                    parent descriptor z5 got redirected
                    to descriptor(s) z instead of descriptor z.
                )r
rrrrrr3rqrrHziprrrrUrVrWr
rXr4SEEK_SETrrmapr0r	r)r$from_fdsto_fdsrfrom_fdffd_to_close	arg_namesr:to_fdr
skipped_fdrZ
read_bytesread_fdsrBs                r#_check_swap_std_fds_with_one_closedz8POSIXProcessTestCase._check_swap_std_fds_with_one_closed8
sNN588,,	&	)#
1
1+--1GAHHJJ000111111111111111uQxx==3x==8==??KH[!!!555IF"%h"7"7
3
3+2y'((?$DeAhh--#f++5::<<J#.$c*oo!N++#)++BR###"%h"7"7	
9	
9!R[111WWd33
C):):7)C)C D DEEo'"*''06'''.'''/''HM'''
  %(C8888	
9
i(((((Di((((s/I(A/#I/A3	3I6A3	7GII4ctjtddD]=}tjtddD]}|||>dS)Nrre)	itertoolscombinationsrpermutationsrR)r$rHrIs   r!test_swap_std_fds_with_one_closedz6POSIXProcessTestCase.test_swap_std_fds_with_one_closedd
su!.uQxx;;	K	KH#0q1==
K
K886JJJJ
K	K	Krcd}	tjt||ddS#t$rM}|tj|t|dYd}~dSd}~wtj	$rM}|
tj|t|dYd}~dSd}~wwxYw)Nc td)N
surrogate:rr3rrpreparezCPOSIXProcessTestCase.test_surrogates_error_message.<locals>.preparej
s/000rrz1Expected ValueError or subprocess.SubprocessErrorrZz!Exception occurred in preexec_fn.)rrUrrrxrrrXr
r!assertIsNotNone)r$r[rs   rtest_surrogates_error_messagez2POSIXProcessTestCase.test_surrogates_error_messagei
s	1	1	1
	KO"
$
$
$
$
IIIJJJJJ	;	;	;j3444SXX'9:::::::::)	L	L	L  !6777SXX'JKKKKKKKKK	Ls#7
C(AB		C(AC##C(cdD]\}}|dd}dt|z}tj}|||<d|d<|}tjtjd|g|}|	d	}|
|dt||dd}d
t|z}tj}|||<tjtjd|g|}|	d	}|
|dt|dS)N))testuabc)utest42rHrz&import os; print(ascii(os.getenv(%s)))CLC_ALLr
rs

z'import os; print(ascii(os.getenvb(%s))))
rrerrrrrurVrWrrXr	rH)r$keyvalue
encoded_valuescriptr
decoded_valuerAs        rtest_undecodable_envz)POSIXProcessTestCase.test_undecodable_env|
s|G	K	KJC!LL2CDDM>S		IF*//##CCH CM!M,v.F]]7++FV]]733U=5I5IJJJ**W&788C>cJF*//##C$CH,v.F]]7++FV]]733U=5I5IJJJJ5	K	Krc|tjtd}ttdd}tjtd\}}tj|}t
j|g|z}||dd|d	|
dfz}t
j|d}||dtj}||d<t
j|g|z|	}||dtj
}tj||d
<t
j|g|z|	}||ddS)Nrrs'%s' %s rTr_PATHrsPATH)rrrrrrrrUrXrrrrenvironb)	r$abs_programr9rprogramexitcoderrenvbs	         rtest_bytes_programz'POSIXProcessTestCase.test_bytes_program
sk/!"455OABB'((

oa&899
g+g&&?K=#5661%%%K$)>)>w)G)GHH?3d3331%%%jooF?G9T>s;;;1%%%{!!D))W
?G9T>t<<<1%%%%%rctjdd}tjdd}tjtj|gtjtjtjd}||jdtjtj|gtjd}|\}}ttt|d	}t|j
|j|jg}|||zd
|d||zdS)Nzinput_reader.pysubprocessdatasubdirfd_status.pyF)r@rArBrErrArE,zExpected no fds from z to be open in child, found )rfindfilerrCrVrWrDrrrqrGr0rr@r3rArBr+)	r$sleeper	fd_statusp1p2rzerror
result_fdsunwanted_fdss	         rtest_pipe_cloexecz&POSIXProcessTestCase.test_pipe_cloexec
sk"#4=MNNN$^<LMMM	

s~w7$.OJO%/_GGG	
,,,

s~y9%/_GGG((
S&,,t"4"45566
BHOO--ry/?/?/A/AI,,..011	
l22 ,||Z,-F-FH	I	I	I	I	Irc
tjdd}tjdd}d}|dzdz}tjtj|gtjtjd	
tjtj||g
jtjd	|
j	|j	
fd
}fd}||||
j
|
j
tj
jgggd\}}}	||d
|j|
jjdS)Nzqcat.pyrsrtzqgrep.pyszxcvbn
F)r@rArEcT	dS#t$rYdSwxYwr!rProcessLookupError)r|srkill_p1zBPOSIXProcessTestCase.test_pipe_cloexec_real_tools.<locals>.kill_p1
;
%




''cT	dS#t$rYdSwxYwr!r)r}srkill_p2zBPOSIXProcessTestCase.test_pipe_cloexec_real_tools.<locals>.kill_p2
rrrzThe child hung)rryrrCrVrWrDrArr)r@rrHselectrrXr)r$qcatqgrepsubdatarrr	readfilesignored1ignored2r|r}s          @@rtest_pipe_cloexec_real_toolsz1POSIXProcessTestCase.test_pipe_cloexec_real_tools
s	2BCCC 4DEEE{U"

s~t4$.OJO(-///
s~ug>$&Ijo(-///	
      					
					
	
      
t
(.
ryk2r2(N(N%	8X	#3444))4000
	
	rcF
tjdd}tj}|tj|d|tj|dt
|
tdD]`}tjtj	tj
}|tj|
|a
D]}tj|dtjtj|gtjd	}|\}}t
t't(|d
}||
z
dtjtj|gtjd	}|\}}t
t't(|d
}||
zd|d|d
t

fdtdD}	tjtj|gtjd|	}|\}}t
t't(|d
}|||	z

zd|d|d
dS)Nrvrsrtrr	TFrwrxzSome fds were closedzSome fds were left openzSubprocess failedc3@K|]}VdSr!)r)rrr/s  r	<genexpr>z6POSIXProcessTestCase.test_close_fds.<locals>.<genexpr>s+;;Q(,,..;;;;;;rrrArEpass_fdsz'Some fds not in pass_fds were left open)rryrrirrHrqrrdevnullraddset_inheritablerrCrVrWrDrrGr0rrXr+rv)r$r{r.rr7rJrzignored
remaining_fdsfds_to_keepr/s          @rtest_close_fdsz#POSIXProcessTestCase.test_close_fds
s$^<LMMM	gii#a&)))#a&)))s88q		AR[11BOOBHb)))LL	)	)Br4((((cni8$.Ou
F
F
F--//CV\\$%7%78899
18/	1	1	1
cni8$.Ot
E
E
E--//CV\\$%7%78899
12	4	4	4

a(;<<<;;;;%((;;;;;cni8$.Ot&1
3
3
3--//CV\\$%7%78899
-+5AB	D	D	D

a(;<<<<<rfreebsdz/devz/dev/fdz.Requires fdescfs mounted on /dev/fd on FreeBSDc	tjdd}tjtjdt
jd|zgtj}|	\}}|
}|t|dd|z	ttt|d
d}ttt|dd}|||zd
	dS)Nrvrsrtr
aK
        import os, resource, subprocess, sys, textwrap
        open_fds = set()
        # Add a bunch more fds to pass down.
        for _ in range(40):
            fd = os.open(os.devnull, os.O_RDONLY)
            open_fds.add(fd)

        # Leave a two pairs of low ones available for use by the
        # internal child error pipe and the stdout pipe.
        # We also leave 10 more open as some Python buildbots run into
        # "too many open files" errors during the test if we do not.
        for fd in sorted(open_fds)[:14]:
            os.close(fd)
            open_fds.remove(fd)

        for fd in open_fds:
            #self.addCleanup(os.close, fd)
            os.set_inheritable(fd, True)

        max_fd_open = max(open_fds)

        # Communicate the open_fds to the parent unittest.TestCase process.
        print(','.join(map(str, sorted(open_fds))))
        sys.stdout.flush()

        rlim_cur, rlim_max = resource.getrlimit(resource.RLIMIT_NOFILE)
        try:
            # 29 is lower than the highest fds we are leaving open.
            resource.setrlimit(resource.RLIMIT_NOFILE, (29, rlim_max))
            # Launch a new Python interpreter with our low fd rlim_cur that
            # inherits open fds above that limit.  It then uses subprocess
            # with close_fds=True to get a report of open fds in the child.
            # An explicit list of fds to check is passed to fd_status.py as
            # letting fd_status rely on its default logic would miss the
            # fds above rlim_cur as it normally only checks up to that limit.
            subprocess.Popen(
                [sys.executable, '-c',
                 textwrap.dedent("""
                     import subprocess, sys
                     subprocess.Popen([sys.executable, %r] +
                                      [str(x) for x in range({max_fd})],
                                      close_fds=True).wait()
                     """.format(max_fd=max_fd_open+1))],
                close_fds=False).wait()
        finally:
            resource.setrlimit(resource.RLIMIT_NOFILE, (rlim_cur, rlim_max))
        rrrez(expected exactly two lines of output:
%rrArrxrzSome fds were left open.)rryrrCrVrWrrrDrrrXrrqrGr0rrr+)r$r{rJrz
unused_stderroutput_lines
opened_fdsrs        r%test_close_fds_when_max_fd_is_loweredz:POSIXProcessTestCase.test_close_fds_when_max_fd_is_lowered$s_	J$^<LMMM	
cndHO/	^_/	05050`#-/a0
30
30
3d!"


((**\**AH6Q		S	S	SS,q/"7"7"9"9"?"?"E"EFFGG
C\!_%:%:%<%<%B%B4%H%HIIJJ
37		9	9	9	9	9rrr}c	Jtjdd}t}tdD]}t	j}|tj|d|tj|dt	j|ddt	j|dd|	||D]>}tjtj
|gtjd|f}|\}}tt!t"|d	}	||hz
}
|||	d
||	|
zd|t,5}|tjt0d|f
dddn#1swxYwY|dt3|j@dS)Nrvrsrtr}rrTrrxzfd to be passed not passedzfd to be closed passedF)rErzoverriding close_fds)rryrqrrrirrHrupdaterrCrVrWrDrrGr0rrvr+assertWarnsrrUrr
warning)r$r{r/rr.r7rJrzrrto_be_closedcontexts            r
test_pass_fdsz"POSIXProcessTestCase.test_pass_fdsws<$^<LMMM	55q	!	!A'))COOBHc!f---OOBHc!f---s1vt,,,s1vt,,,OOC    	H	HB #.)!<(24+-&222A mmooOFGCd);); < <==M#rd?LMM"m-IJJJ]\95
7
7
7!!.11
;W  '"'2&":":":;;;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
MM0#go2F2FGGGG%	H	Hs11G..G2	5G2	cjtjdd}tj\}}|tj||tj|tj|dtj|d||f}tj|g}|ttt|z
}tj
|tjd|}|\}}t!tt"|d}	||	t!|d|z|tj|d|tj|ddS)	NrvrsrtTFrrxz	output=%a)rryrrirrHrrVrWrrGr
rrCrDrrqr0rrXr)
r$rfrnon_inheritablerr9rJrzrr.s
          rtest_pass_fds_inheritablez.POSIXProcessTestCase.test_pass_fds_inheritablest!.9IJJJ')wyy$_+.../222
;---
?E2221'Sh''(((T$.Ot&.
0
0
0--//#c6<<--..//	
c(mm[6-ABBB	
+K88$???+O<<eDDDDDrcP	tjdd}g}tdD]`}tjtjtj}|tj||	|atj
\}}|tj||tj||d|tj
tj|g|d|d|dd|5tj|d	}dddn#1swxYwYd
|dD}||hdt'|zd
|dS)NrvrsrtrerrT)r@rArBrErrBc,h|]}t|Sr3)r0)rnums  r	<setcomp>z@POSIXProcessTestCase.test_pass_fds_redirected.<locals>.<setcomp>s666Cs3xx666rrx>rrrezoutput=)rryrrrrO_RDWRrrHrriinsertrrCrVrWrrrX	frozenset)	r$r{rrr7stdout_rstdout_wrzr.s	         rtest_pass_fds_redirectedz-POSIXProcessTestCase.test_pass_fds_redirectedsE$^<LMMM	q	 	 ARY//BOOBHb)))OOBWYY((+++(+++8$$$

s~y9$,QK%-a[%-a[(,'/111	-	-WXt,,F
	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-766<<#5#5666iii)H*=*==?S?S?STTTTTs.EEEctjtjd5}t	jt||}|ddddS#1swxYwYdS)Nr+)rAr@rFrrrrrCrr)r$inoutrJs   r%test_stdout_stdin_are_single_inout_fdz:POSIXProcessTestCase.test_stdout_stdin_are_single_inout_fd
WRZ
&
&	% (-U<<<A
FFHHH																		1AA"%A"ctjtjd5}t	jt||}|ddddS#1swxYwYdS)Nrrrrs   r&test_stdout_stderr_are_single_inout_fdz;POSIXProcessTestCase.test_stdout_stderr_are_single_inout_fds
WRZ
&
&	% (-e===A
FFHHH																		rctjtjd5}t	jt||}|ddddS#1swxYwYdS)Nr)rBr@rrs   r%test_stderr_stdin_are_single_inout_fdz:POSIXProcessTestCase.test_stderr_stdin_are_single_inout_fdrrc2tjdd}tjtj|gtjtj}|\}}|d|j	d|
dzdS)Nzsigchild_ignore.pyrsrtrrz6sigchild_ignore.py exited non-zero with this error:
%sr)rryrrCrVrWrDrrXrr	)r$sigchild_ignorerJrArBs     rtest_wait_when_sigchild_ignoredz4POSIXProcessTestCase.test_wait_when_sigchild_ignoreds!*+?2BDDDcno>$.OJO
M
M
MAL+:w//+0	1	1	1	1	1rc	tjd}tjtjddgtjd}|j}||j		|
|dd|||j
|gggdd|dS#|wxYw)	Nrr
z$import sys;sys.stdout.write("apple")r)rArMrsapplg)r
import_modulerrCrVrWrDrArrHrXrrvrr))r$rrJrKs    rtest_select_unbufferedz+POSIXProcessTestCase.test_select_unbuffereds,X66cnd:;%/O%&	
(
(
(

H   	QVVAYY000MM!]V]A3B<<Q?@@@
FFHHHHHAFFHHHHs
%ACC(c,tjtjddgtjtj}||jj||jjt|}|j
}tjdtf5d}dddn#1swxYwYtr!|tjdS||dtjDdS)Nr
z import sys, time;time.sleep(0.2)rrc,g|]}t|Sr3idros  rrzEPOSIXProcessTestCase.test_zombie_fast_process_del.<locals>.<listcomp>!D!D!DA"Q%%!D!D!Dr)rrCrVrWrDrrArHrBrpidrcheck_warningsResourceWarningr'rr(rv)r$rJidentrs    rtest_zombie_fast_process_delz1POSIXProcessTestCase.test_zombie_fast_process_dels=

cnd01%/O$.O	
5
5
5
	
''''''1e

+R,A
B
B		A																Fj011111
MM%!D!D1C!D!D!DEEEEEs(B77B;>B;ctjtjddgtjtj}||jj||jjt|}|j
}tjdtf5d}tjdddn#1swxYwYt!j|t$jt(r |tjn*||dtjDt1jd|t65tjt8tjtj5}	dddn#1swxYwYdddn#1swxYwY|t6t j|dt(r!|tjdS||dtjDdS)	Nr
zimport time;time.sleep(3)rrc,g|]}t|Sr3rrs  rrzJPOSIXProcessTestCase.test_leak_fast_process_del_killed.<locals>.<listcomp>0rrr@rc,g|]}t|Sr3rrs  rrzJPOSIXProcessTestCase.test_leak_fast_process_del_killed.<locals>.<listcomp>@s$G$G$GqRUU$G$G$Gr)rrCrVrWrDrrArHrBrrrrrr
gc_collectrrmrurr'rr(rvr,r-rarrwaitpidr)r$rJrrrus     r!test_leak_fast_process_del_killedz6POSIXProcessTestCase.test_leak_fast_process_del_killeds
cnd./%/O$.O	
5
5
5
	
''''''1e

+R,A
B
B	!	!A   	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!	V^$$$	Fj01111
MM%!D!D1C!D!D!DEEE	
3


w
'
'		!/)3)3:::
=A














																
'2:sA666	Ij011111U$G$GJ4F$G$G$GHHHHHsH(C

CC31G	$F2&G	2F6	6G	9F6	:G		G
G
ctjdd}tjd|tjt
jtj	|gtj
dfd}|\}}ttt|d}||dS)	NrvrsrtrTc.tjdSr)rr)r7srrzCPOSIXProcessTestCase.test_close_fds_after_preexec.<locals>.<lambda>Ls2r)rArErrx)rryrr	rrHrrCrVrWrDrrqrGr0rr)r$r{rJrzrrr7s      @rtest_close_fds_after_preexecz1POSIXProcessTestCase.test_close_fds_after_preexecBs$^<LMMM	VAYY"%%%cni8$.Ot(>(>(>(>
@
@
@--//CV\\$%7%78899
]+++++rc ddl}tj}	d}tjddgddgfdgdddgfdgdgddgfdgdgddffD]\}}}}|t
5}|||dd||d	d	d	d	d
ddd
ddddgdd	|ddddn#1swxYwY|dt|j		|stj
dSdS#|stj
wwxYw)NrcdSr!r3r3rrrz5POSIXProcessTestCase.test_fork_exec.<locals>.<lambda>]s4rr\sexeenvsargTr3rtrrerrFz
takes exactly)_posixsubprocessrrrrarrrr
rjr)	r$r
gc_enabledfuncr9exe_listrenv_listrs	         rtest_fork_execz#POSIXProcessTestCase.test_fork_execSs	 \^^
 	 <DIKKKF8TF843TF84F8SF84F8T3/	2
F
F-hX&&y11%S$..hb#xBB1adAr1be%%%%%%%%%%%%%%%%%%   #cm2D2DEEEE-
F0



:


s0AC5/,B'C5'B+	+C5.B+	/,C55D
cTddl}Gdd}tj}	tjddddd|d	|d
ffD]}|t
d|5}|d
gd
gd|ddgddddd	d
ddddddddddddddn#1swxYwY|dt|j
	|stjdSdS#|stjwwxYw)NrceZdZdZdZdZdS)JPOSIXProcessTestCase.test_fork_exec_sorted_fd_sanity_check.<locals>.BadIntTc||_dSr!)rd)r$rds  rrzSPOSIXProcessTestCase.test_fork_exec_sorted_fd_sanity_check.<locals>.BadInt.__init__s
"


rc:|jrd|_|jSt)NF)firstrdrxr#s r__int__zRPOSIXProcessTestCase.test_fork_exec_sorted_fd_sanity_check.<locals>.BadInt.__int__s!:&!&DJ:%  rN)r0r1r2rrrr3rrBadIntrs7E
#
#
#
!
!
!
!
!rr)rtrerrr})r
r)*l)r}r)rr^r^rrrezfds_to_keep={}rAsfalseTrrtrrr)rrrrrarxrrrvr
rjr)r$rrrrrls      r%test_fork_exec_sorted_fd_sanity_checkz:POSIXProcessTestCase.test_fork_exec_sorted_fd_sanity_check{s	 	!	!	!	!	!	!	!	!\^^
	IKKK!#FF1II&
 
?
?&&",33K@@'BB
$EF$..!
XJk4&BB1adAdD"d$$$
$
$
$
$
$
$
$
$
$
$
$
$
$
$
$

mS-=-=>>>>'
?*



:


s0A D/C5DC	DC		,DD'cZtjt}|5tj|d5}t|j_|	|j
dddn#1swxYwYddddS#1swxYwYdS)Nr@)rrCrrrcrdBrokenPipeErrorrHrrassert_called_withr$rumock_proc_stdins   r,test_communicate_BrokenPipeError_stdin_closezAPOSIXProcessTestCase.test_communicate_BrokenPipeError_stdin_closes00
	7	74:$$T733	70?O!-!44666	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7	7s4!B ?B<B B	B B	B  B$'B$ctjt}|5tj|d5}t|j_|	d|j
d|j
dddn#1swxYwYddddS#1swxYwYdS)Nr@stuff)rrCrrrcrdrrrrassert_called_once_withrHrs   r,test_communicate_BrokenPipeError_stdin_writezAPOSIXProcessTestCase.test_communicate_BrokenPipeError_stdin_writes200
	<	<4:$$T733	<0?O!-X&&&!99(CCC!99;;;		<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<s5!B;AB#B;#B'	'B;*B'	+B;;B?B?c8tjtjdgtjtj}|5t
j|d5}ttj
d5}t|j_
||j_|d|jdddn#1swxYwYdddn#1swxYwYddddS#1swxYwYdS)N-hrr@wbr)rrCrVrWrDrrcrdrrrrrrr3return_valuerr)r$rurdev_nulls    r,test_communicate_BrokenPipeError_stdin_flushzAPOSIXProcessTestCase.test_communicate_BrokenPipeError_stdin_flushs 6&0o'1888	<	<4:$$T733	<RZ&&	<*20?O!-2://2C2CO"/X&&&!99;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<sZ!DC76AC C7 C$$C7'C$(C7+D7C;	;D>C;	?DDDctjtjdgtjtj}|5t
j|d5}t|j	_
|d|j	dddn#1swxYwYddddS#1swxYwYdS)Nrrr@ir_)
rrCrVrWrDrrcrdrrHrrrrs   r9test_communicate_BrokenPipeError_stdin_close_with_timeoutzNPOSIXProcessTestCase.test_communicate_BrokenPipeError_stdin_close_with_timeouts: 6&0o'1888	<	<4:$$T733	<0?O!-S)))!99;;;		<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<s6!CAB(C(B,	,C/B,	0CCCN
W_STOPCODEzneed _testcapi.W_STOPCODEcZ	t}tj|}tj|jdt
jd}tj	d|j|f5|
}dddn#1swxYwY||ddS)Nrrorr)r)rrrCrwait_processr	_testcapir
rrcr)rX)r$r9rustatusrs     rtest_stoppedz!POSIXProcessTestCase.test_stoppeds	P%%	TX2222%a((
Z/tx>P
Q
Q
Q	%	%J	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	
R(((((s)B

BBctjt}tj|jd||jtj	d5}|
tjdddn#1swxYwY|
||jdS)Nrrzos.kill)rrCrrrrrrrrcrrurassert_not_calledr\)r$ru	mock_kills   rtest_send_signal_racez*POSIXProcessTestCase.test_send_signal_races00	TX2222	
$/***
Z	
"
"	-iV^,,,	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-
	##%%%	
T_-----s# BBBcvtjtjddg}|js||jtj|dd5d|_|	tjdddn#1swxYwY|dS)Nr
zexit(1)rcdSr!r3r3rrrz=POSIXProcessTestCase.test_send_signal_race2.<locals>.<lambda>
sdr)new)
rrCrVrWrrrrcrdrrurrmrIs  rtest_send_signal_race2z+POSIXProcessTestCase.test_send_signal_race2s
cndI>??,	
FFHHH,	Z

q&ll

;
;	*	*AL
MM&.)))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	
s''BB!Bctjtjddgtj}		|ddS#tj$rYnwxYw/)Nr
z+import os, time; os.close(1), time.sleep(2)rrTr^r_)rrCrVrWrDrrbr$rus  r1test_communicate_repeated_call_after_stdout_closezFPOSIXProcessTestCase.test_communicate_repeated_call_after_stdout_close
s{!N!P'1888	
   ---,



		sAAA)or0r1r2r%rrrrrrCr
rrcrr"rkrrrrNr,r5rrr=rUrYrergrwryr'rrrrrrrrrrrVrrrrrrrrrrrrrrrrrr
rrrrrrr!r#r%r)r:rArCrRrWr]rhrqrrrr~st_devrrrequires_mac_verrrrrrrrrrrrcpython_onlyrrrrrr	rrrrr
__classcell__rbs@rrrs	>>>>>!!!
B
B
B
B
B
BBBB*J,TZ'((AA)(A TZ'((::)(:*X_(;<<<-//44//4,777 XY//JGGB	4J4J<>>99>>9 XZ002KLL1F1FML1FfX_WWR,,.PQQ??RQ?XZ002MNN'I'ION'IRX_WWR,,.PQQ@@RQ@X[113OPP.A.AQP.A`X_WWR--/RSSDDTSDX_Y:ggb'&:&:":688&&88&(888	9	9	9???
???
	8	8	8000 %%%%%!1%%%2X_4446KLLEEMLE*X_ "EGGLLGGL(+++	,	,	,LLLLLL!!!NNN(2X_S\,,-BCC9;;;;*)))444444>>>(((---
)))2&&&&&&&&&))))))))),,,
!!!*+++Z+++`%%%()()()XKKK
KKK&KKK:&&&6III.'''R-=-=-=`X_S\,,Y77IRWV__+wrwy/A/A/HHEGGI9I9GGI9`Wb!$$HH%$HBEEE<UUU4	1	1	1"FFF0)I)I)IV,,,"
%%%N
'''R777<<<
<
<
<
<
<
<X$.>$WY==466))66)...,							rrzWindows specific testsceZdZdZdZdZdZdZej	dZ
dZdZd	Z
d
ZdZdZd
ZdZdZdZdZdZdZdZdZdZdS)Win32ProcessTestCasecd}d}tj}||_||_tjt
|dS)Nrrr)rSTARTUPINFOdwFlagswShowWindowrUr)r$STARTF_USESHOWWINDOWSW_MAXIMIZErs    rtest_startupinfoz%Win32ProcessTestCase.test_startupinfo
sW ! ,..2"-	$/	1	1	1	1	1	1rcpd}d}tj||}tjt|dS)Nrr)r&r'r)rr%rUr)r$STARTF_USERSHOWWINDOWr)rs    rtest_startupinfo_keywordsz.Win32ProcessTestCase.test_startupinfo_keywords&
sV!" ,)#


	$/	1	1	1	1	1	1rcJtj}tj|_tj|_t
dD]\}t}ttj
d5}tj||tj|}|5|
dddn#1swxYwY||jddddn#1swxYwY||jtj||j||j||j||jtj||jdgi^dS)Nrer)rArBrrhandle_list)rr%r(r&SW_HIDEr'rrrrrrCrrrXrr	hStdInput
hStdOutput	hStdErrorlpAttributeList)r$rrrnullrus      rtest_startupinfo_copyz*Win32ProcessTestCase.test_startupinfo_copy6
s
 ,..(=","4q	O	OA!Cbj#&&
5$!'/3/9/@4?AAA''$$&&&'''''''''''''''  !444
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5
[0'<
>
>
>k3444k4555k3444[4j6HIII[8=":MNNNN#	O	Os6)%C!B/#C!/B33C!6B37C!!C%	(C%	cd}tjdtjtjdz|dS)Nz'    a DOS box should flash briefly ...
z# -c "import time; time.sleep(0.25)"r)rVrBrrrUrW)r$CREATE_NEW_CONSOLEs  rtest_creationflagsz'Win32ProcessTestCase.test_creationflagsQ
sQ
CDDD=>&8	:	:	:	:	:	:rcr|ttjtjddgddS)Nr
rRcdSrr3r3rrrz8Win32ProcessTestCase.test_invalid_args.<locals>.<lambda>^
sQrrrr#s rrz&Win32ProcessTestCase.test_invalid_argsY
sC*jo>457%.Y		0	0	0	0	0rcGddt}|t5tjt
|ddddS#1swxYwYdS)NceZdZdZdS)4Win32ProcessTestCase.test_issue31471.<locals>.BadEnvN)r0r1r2keysr3rrBadEnvr?d
sDDDrrAr)dictrarrrCr)r$rAs  rtest_issue31471z$Win32ProcessTestCase.test_issue31471`
s					T			


y
)
)	<	<_&&((;;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<s$AA#&A#cxtjtjddgd}||ddS)Nr
rRT)rErSrTrYs  rrz#Win32ProcessTestCase.test_close_fdsi
sG
_cnd8:(,...	
R     rc	ddl}tj}|tj|d|tj|dg}|D]?}tj|d|||@tj	tjdd|dgtj
d}|\}}||jdt#|tj	tjdd|dgtj
tj
d}|\}}||jd|d	|g}tj}	d
|i|	_tj	tjdd|dgtj
tj
|	d}|\}}||jd|d	|t-jdt0f5tj}	d
|ddi|	_tj	tjdd|dgtj
tj
|	d}|\}}||jdddddS#1swxYwYdS)
NrrTr
z2import msvcrt; print(msvcrt.open_osfhandle({}, 0))Frw)rArBrEsOSErrorr/)rArBrrEz.*overriding close_fds)r#rrirrHrr
get_osfhandlerrCrVrWrrDrrXrr0rrvr%r4rrr)
r$r#r.rr7rJrArBr/rs
          rtest_close_fds_with_stdioz.Win32ProcessTestCase.test_close_fds_with_stdiop
sn


gii#a&)))#a&)))	5	5Br4(((NN6//334444cndRYYZabcZdeeg$.Ou
F
F
Fq)))FLLNNcndRYYZabcZdeeg$.OJOW[
]
]
]q)))

j&))) ,..'4k&B#cndRYYZabcZdeeg$.OJO)4
F
F
Fq)))

j&)))
+-E-;-=>>		.		.$022K+8'!!!**EK' #.$"V"]"]^efg^h"i"i"k(2
-8EKKKA]]__NFFQ\1---		.		.		.		.		.		.		.		.		.		.		.		.		.		.		.		.		.		.s0B*M''M+.M+cptj}i|_tjt|dS)Nrrr%r4rUrr$rs  rtest_empty_attribute_listz.Win32ProcessTestCase.test_empty_attribute_list
s@ ,..&(#$/	1	1	1	1	1	1rcttj}dgi|_tjt|dS)Nr/rrIrJs  rtest_empty_handle_listz+Win32ProcessTestCase.test_empty_handle_list
sE ,..'4b&9#$/	1	1	1	1	1	1rc"tj}d|d<tjdgdtj|}|5|d|jddddS#1swxYwYdSNphysalisrrqrrsphysalis	rrrrrCrDrvrArrs   rrz(Win32ProcessTestCase.test_shell_sequence
s""$weWA$.O!'
)
)
)	8	8MM+qx}}777	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8s	.BBBc tj}d|d<tjddtj|}|5|d|jddddS#1swxYwYdSrOrQrs   rrz&Win32ProcessTestCase.test_shell_string
s""$wU!$.O!'
)
)
)	8	8MM+qx}}777	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8s.BB
Bc,dD]}tj}d|d<tjddtj||}|5|d|j|dddn#1swxYwYdS)N)ansioemrPrrqr)rrArrrQ)r$encrrJs    rtest_shell_encodingsz)Win32ProcessTestCase.test_shell_encodings
s"	@	@CZ__&&F(F7O a(2%+*-///A
@
@

j!(--//3???
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@	@	@s
/BB	B	cttjtjdz}||ddS)Nz -c "import sys; sys.exit(47)"rSrTrYs  rrz%Win32ProcessTestCase.test_call_string
s;
_S^=>??R     rctjtjddgtjtjtj}|5|jdt||||\}}|	|d|
}dddn#1swxYwY||ddS)Nr
zif 1:
                             import sys, time
                             sys.stdout.write('x\n')
                             sys.stdout.flush()
                             time.sleep(30)
                             r?rrr)rrCrVrWrDrArrrrXr)r')r$rr9rJrrBrs       rrz"Win32ProcessTestCase._kill_process
scnd5!"$.?$.O$.O
5
5
5	"	"
HMM!GAv%%

IAvVS)))J	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	
J*****sA/CCCctjtjddgtjtjtj}|5|jdtjdt||||
\}}||d|}dddn#1swxYwY||ddS)Nr
zif 1:
                             import sys, time
                             sys.stdout.write('x\n')
                             sys.stdout.flush()
                             sys.exit(42)
                             r?rrr)
rrCrVrWrDrArr,r-rrrXr))r$rr9rJrrBrZs       rrz'Win32ProcessTestCase._kill_dead_process
s#cnd5!"$.?$.O$.O
5
5
5
	
	
HMM!JqMMMGAv%%

IAvVS)))B
	
	
	
	
	
	
	
	
	
	
	
	
	
	
		
R     sBCCCcF|dtjdSr)rrurr#s rrz%Win32ProcessTestCase.test_send_signals =&.99999rc0|ddSrrr#s rrzWin32ProcessTestCase.test_kills6"""""rc0|ddSrr]r#s rrz#Win32ProcessTestCase.test_terminates;'''''rcF|dtjdSr)rrurr#s rrz*Win32ProcessTestCase.test_send_signal_dead	s 
v~>>>>>rc0|ddSrrr#s rrz#Win32ProcessTestCase.test_kill_deads'''''rc0|ddSrrr#s rrz(Win32ProcessTestCase.test_terminate_deads,,,,,rN)r0r1r2r*r-r6r:rrrrCrrGrKrMrrrWrrrrrrrrrr3rrr#r#
su
1
1
1111 OOO6:::000
<<<!!!0.0.0.d111111888888
@
@
@!!!+++*!!!.:::###(((???(((-----rr#ceZdZGddejZejejddZ	dZ
dZdZdZ
d	Zd
S)	MiscTestsc$eZdZ	gZfdZxZS)MiscTests.RecordingPopencntj|i||j|dSr!)rrinstances_createdr)r$r9r:rbs   rrz!MiscTests.RecordingPopen.__init__s<EGGd-f---"))$/////r)r0r1r2rgrr r!s@rRecordingPopenresAJ	0	0	0	0	0	0	0	0	0rrh_communicatec"	t|_	tjt
jd5}t|_tjt
d|j5|t5|tj
ddgfdt
ji|dddn#1swxYwYdddn#1swxYwY|jddD]4}|
|tjdd|j5g}|jD]0}|tjd	kr||1||jd
|j|t'|d|jdddn#1swxYwY|jj}|||g|jjdS#|jj}|||g|jjwxYw)N_waitrCr
zLimport time
time.sleep(9)
import sys
sys.stderr.write('\n!runaway child!\n')rArr_z.no open-ended wait() after the first allowed: g?rerA)KeyboardInterruptrrrcrdrrCrhrarVrWr]rr'rUrassertLessEqual
call_countrXrrgrrmr))r$popenermock__communicater:
mock__waitrUsigint_callsrys        r_test_keyboardinterrupt_no_killz)MiscTests._test_keyboardinterrupt_no_kills	):%	H"":#3W==
@*;
&Z&&z7'+':<<EE**+<==EE"M!NEE(2'9E>DEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE'5abb9<<D'' $)D"9"9"9;)8;;<<<< "&522Dty66666$++D111$$Z%:A)3)B%DDD  \!2!2A%/%>!@@@-
@
@
@
@
@
@
@
@
@
@
@
@
@
@
@4);??AAGLLNNNLLNNNR!4!FGGGGG);??AAGLLNNNLLNNNR!4!FGGGGsx*H&8F31C#B;/C;B??CB?CF3C	F3C	C
F3'H&3F77H&:F7;H&&A(JcH|tjddSNgT㥛 @r_)rsrrUr#s r#test_call_keyboardinterrupt_no_killz-MiscTests.test_call_keyboardinterrupt_no_killHs#,,Z_e,LLLLLrcH|tjddSru)rsrrr#s r"test_run_keyboardinterrupt_no_killz,MiscTests.test_run_keyboardinterrupt_no_killKs#,,Z^U,KKKKKrc6d}||dS)NcNtj|i|5}t#1swxYwYdSr!)rrCrl)r9r:unused_processs   rpopen_via_context_managerz[MiscTests.test_context_manager_keyboardinterrupt_no_kill.<locals>.popen_via_context_managerOsW!42622
(n''
(
(
(
(
(
(
(
(
(
(s)rs)r$r|s  r.test_context_manager_keyboardinterrupt_no_killz8MiscTests.test_context_manager_keyboardinterrupt_no_killNs.	(	(	(	
,,-FGGGGGrc|tjdd|tjddd}	t	j}tj|d}tjtrdnd|z\}}|
|d|t
j|dSdS#|t
j|wwxYw)Nz
echo xyzzyxyzzy)rrrztype zcat r)rXr	getoutputgetstatusoutputrrrrrr'r'rmdir)r$dirrrrzs     rtest_getoutputzMiscTests.test_getoutputTs-l;;WEEE3LAA%	'	'	'	"$$C7<<U++D'7%16T9;;NFF***




s



s
A,CC3cd	hd}ttj}t}ddl}tjD]G\}}|drt||jfr2|	|H|
|||z
dS)N>rrIrjHandlerrr)rqr__all__r__dict__itemsrrL
ModuleTyperrX)r$intentionally_excludedexportedpossible_exportsrrrds       rtest__all__zMiscTests.test__all__gs8!R!R!Rz)**55%.4466	'	'KD%s##
%%"2!455
  &&&&#36L#LMMMMMrN)r0r1r2rrCrhrrcrdrsrvrxr}rrr3rrrcrcs00000)000
Zz'88)H)H98)HVMMMLLLHHH&NNNNNrrcPollSelectorz!Test needs selectors.PollSelectorceZdZdZdZdS)ProcessTestCaseNoPollctj|_tjt_t
|dSr!)r_PopenSelector
orig_selector	selectorsSelectSelectorr=r%r#s rr%zProcessTestCaseNoPoll.setUpys2'6$-$<
!d#####rc\|jt_t|dSr!)rrrr=r.r#s rr.zProcessTestCaseNoPoll.tearDown~s'$($6
!  &&&&&rNr/r3rrrrvs2$$$
'''''rrzWindows-specific testscFeZdZfdZfdZdZdZdZdZdZ	xZ
S)CommandsWithSpacescttjdd\}}||_t
j|dt
j|dS)Nz.pyzte stsVimport sys;sys.stdout.write('%d %s' % (len(sys.argv), [a.lower () for a in sys.argv])))	rr%rrLrrrrrH)r$rKrrbs   rr%zCommandsWithSpaces.setUpsh


#E7335[[^^

c	
	
	
	rcztj|jtdSr!)rrMrrr.rs rr.zCommandsWithSpaces.tearDowns1
	$*
rctj|d<tj|i|}|5||jdd|jzddddS#1swxYwYdS)NrAmbcsz2 [%r, 'ab cd'])rrDrCrXrArr	r)r$r9r:rJs    rwith_spaceszCommandsWithSpaces.with_spacess%?xd-f--
		hmm%%f--$*,


																		sA	A99A=A=c	f|dtjd|jdddddS)N"" "ab cdrr_rrVrWrr#s rtest_shell_string_with_spacesz0CommandsWithSpaces.test_shell_string_with_spacessPS^^^TZZZ-4WW6=>		@	@	@	@	@rcX|tj|jdgddS)Nrrr_rr#s rtest_shell_sequence_with_spacesz2CommandsWithSpaces.test_shell_sequence_with_spacess,#.$*g>aHHHHHrc	b|dtjd|jddddS)Nrrrrr#s rtest_noshell_string_with_spacesz2CommandsWithSpaces.test_noshell_string_with_spacessCS^^^TZZZ$WW&	'	'	'	'	'rcT|tj|jdgdS)Nrrr#s r!test_noshell_sequence_with_spacesz4CommandsWithSpaces.test_noshell_sequence_with_spacess'#.$*g>?????r)r0r1r2r%r.rrrrrr r!s@rrrs@@@
III'''
@@@@@@@rrc,eZdZdZdZdZdZdZdS)ContextManagerTestsctjtjddgtjtj5}||jd||jddddn#1swxYwY|	|jj
|	|jj
dS)Nr
zAimport sys;sys.stdout.write('stdout');sys.stderr.write('stderr');rsstdoutsstderr)rrCrVrWrDrXrArrBrrrs  r	test_pipezContextManagerTests.test_pipes	

s~t =>&0_%/_666	<
:>T[--//;;;T[--//;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	
*+++*+++++sAB  B$'B$ctjtjddg5}	dddn#1swxYwY||jddS)Nr
zimport sys; sys.exit(100)d)rrCrVrWrXrrs  rrz#ContextManagerTests.test_returncodes

s~t:<==	@D																
#.....s044ctjtjddgtj5}|d||jdddddS#1swxYwYdS)Nr
z2import sys;sys.exit(sys.stdin.read() == 'context')rscontextrrQrs  rrz*ContextManagerTests.test_communicate_stdins

s~tHI$.?444	18<Z(((T_a000	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1s1A,,A03A0c|t5tjttjtj5}	dddn#1swxYwYddddS#1swxYwYdS)Nr)rarrrCrrDrs  rrz%ContextManagerTests.test_invalid_argss


1
2
2		!/)3)3:::
=A














																		s51A2AA2A	A2!A	"A22A69A6c	tjttjtjdz}|}|jdtjz|	|j
|t|j
ddd||j
d||jjdS)Nre)r@rMrWr)rrCrrDrr	__enter__r@rrrrar__exit__rXrrrs  rtest_broken_pipe_cleanupz,ContextManagerTests.test_broken_pipe_cleanupsG&0o(/(=a(?AAA~~	
 55666$/***'4=$dCCC!,,,
)*****rN)r0r1r2rrrrrr3rrrrs_,,,///111+++++rr__main__)Frkrr_rtest.supportrrrrrrVrurFrTrrrr,rrrrrrr1rrror`test.support.os_helperr	rr&rIrrjPGOrlhas_subprocess_supportrr'rrrNotADirectoryErrorr1rrWrrTestCaser	Exceptionr5rCr7r=rrrrrr#rcrrrrr0mainr3rr<module>rs((((((&&&&&&""""""((((((







								







				++++++IIIJJJJ
CCCJJJJ
CCCLLLLEEE
;;
(
9
:
::%?
(
=
>
>>
\W
$	
@III)');_M>40(((     8$   &								>>>>>j.>>>tItItItItIltItItIn-BOBOBOBOBOlBOBOBOJ	c	c	c233UUUUU<UU43Up0Y 899{-{-{-{-{-<{-{-:9{-zaNaNaNaNaN!aNaNaNHWWY778::'''''O''::'Y 899(@(@(@(@(@,(@(@:9(@V3+3+3+3+3+,3+3+3+lzHMOOOOOsBBBBBB"!B"&B++B54B59B>>C