python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_subprocess.cpython-311.opt-1.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)r0r1r2r3rrr5r5gsDrr5ceZdZdZdZdS)PopenExecuteChildRaiseszePopen subclass for testing cleanup of subprocess.PIPE filehandles when
    _execute_child fails.
    c td)NzForced Exception for Test)r5)r$argskwargss   r_execute_childz&PopenExecuteChildRaises._execute_childos !<===rN)r0r1r2__doc__r;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)rPopenrPIPEassertIsInstancerAioBufferedIOBaserBrCcloser)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)rArBrCbufsize)rrDrrErFrArG	RawIOBaserBrCrIr)rJs  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)assertRaisesrTimeoutExpiredrVrWrXr#s rtest_call_timeoutz!ProcessTestCase.test_call_timeoutsD
	
*3Z_>41CD"%		'	'	'	'	'rcdtjt}||ddSNr)r
check_callrrYrZs  rtest_check_call_zeroz$ProcessTestCase.test_check_call_zeros.

"?
3
3Qrc|tj5}tjtjddgdddn#1swxYwY||jjddSrR)	rbrCalledProcessErrorrgrWrXrY	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 overriddenrBz1check argument not allowed, it will be overriddenFcheck)rcheck_outputrWrXassertInassertRaisesRegex
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))	rbrrjrvrWrXrYrkrrls  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	
/33333roctjtjddgtj}|d|dS)Nr
$import sys; sys.stderr.write('BDFL')rCrr)rrvrWrXSTDOUTrwrzs  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())rAPEAR)tempfile
TemporaryFile
addCleanuprIwriteseekrrvrWrXrw)r$tfr{s   rtest_check_output_stdin_argz+ProcessTestCase.test_check_output_stdin_args

#
%
%!!!




(IK	


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


gv&&&&&rcxtjtjddgd}|d|dS)z<input=None has a legacy meaning of input='' on check_output.r
3import sys; print('XX' if sys.stdin.read() else '')NrsXXrrvrWrXassertNotInrzs  rtest_check_output_input_nonez,ProcessTestCase.test_check_output_input_nonesJ(FH	
'''''rcztjtjddgdd}|d|dS)Nr
rT)rtextXXrrzs  r!test_check_output_input_none_textz1ProcessTestCase.test_check_output_input_none_textsL(FH'''	
v&&&&&rcztjtjddgdd}|d|dS)Nr
rT)runiversal_newlinesrrrzs  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)rencodingerrorsfoorrzs  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')rsz-Expected ValueError when stdout arg supplied.rBr)rbryrrvrWrXrBfailrwrkr9r$rmr{s   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
rharerAr7Expected ValueError when stdin and input args supplied.rAr)rrrrIrrrbryrrvrWrXrrwrkr9r$rrmr{s    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.rr)
rbrrcrvrWrXrrYrkr{rs   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)renvironcopyrrVrWrXrY)r$newenvr[s   rtest_call_kwargsz ProcessTestCase.test_call_kwargssg"""w
_cndGH"()))	
Qrc~tj5}|ttjdtjjjj}dg|dzz}|jttjg|Rdddn#1swxYwY|	|
ddS)Nr)invalid_arg_namerr)rcaptured_stderrrb	TypeErrorrrD__init____code__co_argcountrYgetvalue)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")rBrC)rrDrWrXrErrBrIrCr)rYrArJs  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
rrDrWrXrErrBrIrCcommunicaterYrrstripr$coderKouterrs     rtest_stdout_nonez ProcessTestCase.test_stdout_none<s5
cndD9$.OJO
M
M
M''''''==??Sq#...':;;;;;rcPtjtjddgtjtj}||jj||jj|	|
|jddS)Nr
rrArB)rrDrWrXrErrBrIrAr)rYrCrJs  rtest_stderr_nonez ProcessTestCase.test_stderr_noneSscnd4EF)z
H
H
H'''
&&&	4(((((rc|dgz}tj|fi|}||d|jdSNrSrT)rrDr)rYr)r$pre_argsr:r9rKs     r_assert_pythonzProcessTestCase._assert_python\sU566T,,V,,	Q\*****rctjtjtjd}||dgtjdSNdoesnotexistr
rX)rpathjoindirnamerWrXrr$rs  rtest_executablezProcessTestCase.test_executabledsTw||BGOOCN$C$C$244\40S^LLLLLrctjtjtjd}||dgtjtjdSr)rrrrrWrXrfsencoders  rtest_bytes_executablez%ProcessTestCase.test_bytes_executableosnw||BGOOCN$C$C$244\40'){3>'B'B		D	D	D	D	Drctjtjtjd}||dgttjdSr)rrrrrWrXrr	rs  rtest_pathlike_executablez(ProcessTestCase.test_pathlike_executableuslw||BGOOCN$C$C$244\40'/'?'?		A	A	A	A	Arctjdg}|||t|j|t
ddS)Nr
rr)rWrXrrbNONEXISTING_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)rXshell)rrWrXr#s rtest_executable_replaces_shellz.ProcessTestCase.test_executable_replaces_shells'	
B3>FFFFFrcn|gtjtjddSr)rrrrWrXr#s r$test_bytes_executable_replaces_shellz4ProcessTestCase.test_bytes_executable_replaces_shells<B2;s~+F+F"&		(	(	(	(	(rcd|gttjddSr)rr	rWrXr#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!)rrrealpathrWrXsplit)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)rBrT)rrDrErrBrIr)rYrrrnormcasereaddecode)r$expected_cwd
python_argr:rKrs      r_assert_cwdzProcessTestCase._assert_cwds
j$-.
(
(&0_

(!'
(
(	
'''	Q\***7#,//!!(--//"8"8":":;;	=	=	=	=	=rctj}||}||tj|dSNr)r
gettempdirrr
rWrXr$temp_dirs  rtest_cwdzProcessTestCase.test_cwdsF&((&&x003>x@@@@@rctj}||}||tjt
j|dSr)rrrr
rWrXrrrs  rtest_cwd_with_bytesz#ProcessTestCase.test_cwd_with_bytessP&((&&x003>r{87L7LMMMMMrctj}||}||tjt
|dSr)rrrr
rWrXr	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_cwdrbFileNotFoundErrorrrDrr
)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)NsomethingyoudonthaverrXrr)r$rrr doesntexistr!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)
rrrrrrrrbrrrDrr
)r$rr
abs_pythonr r!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
rWrX)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
rrrWrXr#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)rrDrWrXrErArrIr)rYrrJs  rtest_stdin_pipezProcessTestCase.test_stdin_pipe
s}cndKM(o
/
/
/	


g	

	q)))))rctj}||j|}tj|dtj|ddtj	tjddg|}||
|jddSNrrr
r0rr)rrrrIfilenorrlseekrrDrWrXr)rYrr$rdrKs    rtest_stdin_filedesz"ProcessTestCase.test_stdin_filedess

#
%
%!!!IIKK
G
AqcndKM 
"
"
"	
q)))))rcXtj}||j|d|dt
jtj	ddg|}|
||jddSr3)
rrrrIrrrrDrWrXr)rYrr$rrKs   rtest_stdin_fileobjz"ProcessTestCase.test_stdin_fileobj!s

#
%
%!!!




cndKM!
#
#
#	
q)))))rctjtjddgtj}|5||jdddddS#1swxYwYdS)Nr
&import sys; sys.stdout.write("orange")rsorangerrDrWrXrErYrBr	rJs  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=rsrr>rrrrIr4rrDrWrXr)rr5rYr	r6s    rtest_stdout_filedesz#ProcessTestCase.test_stdout_filedes5s

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

AqD))955555rcHtj}||jt	jtjddg|}||	d|
|ddS)Nr
r=rsrr>rrrrIrrDrWrXr)rrYr	r:s   rtest_stdout_fileobjz#ProcessTestCase.test_stdout_fileobjAs

#
%
%!!!cndBD "
$
$
$	




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

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

AqD))=99999rcHtj}||jt	jtjddg|}||	d|
|ddS)Nr
rJrrrKrGr:s   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)rs42rrrrDrWrXrErrYrr$rKrBrCs    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)	rrDrWrXrErrYrBr	rJs  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
rVrrrWrGr:s   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)rs)rrDrWrXDEVNULLr)rYrBrJs  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)rrDrWrXr^r)rYrCrJs  rtest_stderr_devnullz#ProcessTestCase.test_stderr_devnulls^cnd=>&0%7	
9
9
9
	
4(((((rctjtjddgtj}|||jddS)Nr
zimport sys;sys.stdin.read(1)r)rrDrWrXr^r)rYrArJs  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!")rArBrCpipesizer)rpipefcntlrdrIunittestSkipTestrrDrWrXrErArBrCrYr4rkillr))r$test_pipe_rtest_pipe_wpipesize_defaultrirKfifos       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
rgrh)rrDrWrXrErrjrkrdrIrYrAr4rBrCrn)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"))rBrr>)
rrrrrDrWrXrErrYr$rrKrBrCs     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.cdtjtjddgtji5}|\}}t
|}||tfd|D}|
|gddddS#1swxYwYdS)z+Verify that env={} is as empty as possible.cTd|vp$d|vp |dkp|dp|dkS)z:Determine if an environment variable is under our control.	VERSIONER__CF
LD_PRELOADSANDBOXLC_CTYPE)
startswith)ns ris_env_var_to_ignorez<ProcessTestCase.test_empty_env.<locals>.is_env_var_to_ignore$sI
 1$$!$%$)*i)@)@$O
%rr
z)import os; print(list(os.environ.keys()))rc*g|]}|
|Sr3r3).0krs  r
<listcomp>z2ProcessTestCase.test_empty_env.<locals>.<listcomp>3s8???Q&:&:1&=&=?q???rN)rrDrWrXrErevalstriprFlistrY)r$rKrBrCchild_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	2sA8B88B<?B<c^tjdz}|t5t	j|ddgdddn#1swxYwY|t5t	jtjddgddddS#1swxYwYdS)Nr
rzpass#)rWrXrbryrrD)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"))rsorange=lemon)
rrrrbryrrDrrWrXrErrYrs     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")rrrrRrJs  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")rs	pineapplerrDrWrXrErrYrSs    rtest_communicate_stdoutz'ProcessTestCase.test_communicate_stdoutgsscndIK$.O
5
5
5==??...&&&&&rctjtjddgtj}|\}}||d||ddS)Nr
z)import sys; sys.stderr.write("pineapple")rrrrSs    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)rrDrWrXrErrBrIrCrArrYrSs    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)rrArBrCrg333333?r`spineapple
pear
)
rrDrWrXrErbrcrrYencoderSs    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));rsg?r`i)
rrDrWrXrErbrcrrYlen)r$rKrB_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)NFTrArBrC)
rrErDrrrA
assertTrueclosedrBrC)r$
stdin_pipestdout_pipestderr_pipeoptionsrKs      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
rS)rrDrWrXrrYrSs    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)rrjrIrrDrWrXr
PIPE_MAX_SIZErErrBrCrArrY)r$xyrKstring_to_writerBrCs       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)
rrDrWrXrErrBrIrCrArrrYrSs    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");)rrrArBTzline1
zline3
zline2
zline4
line5
line6
line7
line8)rWrX	SETBINARYrrDrErArflushrYrBreadlinerIrr	)r$r9extra_kwargrKs    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)rCrBrz#line2
line4
line5
line6
line7
line8)rrDrWrXrrErrBrIrCrrYrSs    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)rArline1
line3
r)rrDrWrXrtextwrapdedentrErrYrrSs    r)test_universal_newlines_communicate_stdinz9ProcessTestCase.test_universal_newlines_communicate_stdin/scnd.:X_N">#>##$$.?01
3
3
3==)9::q)))))rctjttjtjd}|||jddS)NT)rArBrr)rrDrrErrYrrJs  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)rArCrBrrrzline1
line2
line3
line4
line5
zeline2
eline6
eline7
)rrDrWrXrrrrErrBrIrCrrYrrrrSs    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
)rArBrrrz1
2
3
4)rWrXrrDrErrY)r$rrr9popenrBrCs       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)rArBrrrrz[{}])rWrXrrDrErrYformat)r$rexpectedrr9rrBrCs        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_CREATOSErrorerrnoEMFILEskipTestrIpoprrDrWrXrErrYrrmtree)
r$max_handleshandlestmpdiritmpfileerKdatahs
          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 cr7rz"a b c" d e)ab"c\r7z	ab\"c \ d)rz \r7z
ab\"c " \\" d)za\\\bzde fgrza\\\b "de fg" h)za\"brmr7z
a\\\"b c d)za\\b cr7rz"a\\b c" d e)za\\b\ cr7rz
"a\\b\ c" d eabrzab "")rYr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)rrDrWrXrErrArIassertIsNonepollrrr4r)rYrJs  r	test_pollzProcessTestCase.test_pollscnd8:#-?
4
4
4	

&&&!&&((###
!!4(((	1%%%%%rctjt}||d||ddSrfrrDrrYr)rJs  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)
rrDrWrXrbrcr)rwstrrkrYr
SHORT_TIMEOUT)r$rKrms   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})rbrrrDrr#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)rNrrJs  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)rArBrCrNrr)rrDrWrXrEr^rArrrIr4rBrrSuppressCrashReportrrYr)r$linerrrK	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)NrCr)rrbrrrDrrE)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)rCrrr)msvcrtCrtSetReportModeAttributeErrorImportErrorrrrrrWrXrrDrErrYr)r$r$rrrvrCs      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?)rextendrrjtimesleep)rfdss ropen_fdsz<ProcessTestCase.test_double_close_on_error.<locals>.open_fdsLsM2YY
"
"

2799%%%
5!!!!
"
"r)targetr@)
	threadingThreadstartrbEnvironmentErrorrrDrrErrrIr)r$r0texcfdrr/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
|
|dd
|fd|fgdS)z?Issue21291: Popen.wait() needs to be threadsafe for returncode.r
zimport time; time.sleep(12)NcBdfdjfdjfdS)Nthread-start-poll-resultthread-after-kill-and-waitthread-after-second-wait)rrrnr)r)rvresultssrkill_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>)rrDrWrXrYrr2Timerr4r'r)rrr)r$r@r6expected_errorcodervr?s    @@rtest_threadsafe_waitz$ProcessTestCase.test_threadsafe_waitfsq!>!@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!)rrrvrWrXrrascii)r$rr{s   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@)rmkstemprrDrrrIremover+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)
rrDrrErrBrIrCrArrJs  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__r0rlrpatchobjectrrDrrYrepr)	r$path_cmdpathlib_clscasesrrrsxrKs	         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)NrrXrY)	rrDrrErrArIr)rrJs  r!test_communicate_epipe_only_stdinz1ProcessTestCase.test_communicate_epipe_only_stdins__#-?
4
4
4
&&&		

dUl#####rSIGUSR1zRequires signal.SIGUSR1rnzRequires 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)	signalrnrrWrXrrErDr)r$rtold_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)z;Test for the fork() failure fd leak reported in issue16327.r|r@N)
rgetpidlistdirrbr5r7rrrErY)r$fd_directoryfds_before_popenfds_after_exceptions    r!test_failed_child_execute_fd_leakz1ProcessTestCase.test_failed_child_execute_fd_leaks%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)+>?????s7BBBz+behavior currently not supported on Windowsc|t5}tjgddddn#1swxYwY||jjddS)N)/opt/nonexistent_binarywithsomer9r)rbrrrVrYrkfilenamerls  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)rbrrrDrYrkrrls  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!)rFrrDbytestypesGenericAliasCompletedProcessrr#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
rru
_USE_VFORKF)rrrRuntimeErrorside_effectrbrrWrXassert_called_once	call_argsr9rrdrer+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)r0r1r2rLrPr\rdrhrnr|rrrrrrrrrrrrequires_resourcerrrrrrrrrrrrlskipIfr'rrrrrr
rrrr"r'r*rWbase_prefixprefixr,	sysconfigis_python_buildr.r1r8r;r@rErHrLrNrPrTrXrZr\r_rarc
skipUnlessrkhasattrrsr{rplatformget_config_varrrrrrrrrrrrrrrrrrrrrrrrrrr
rrrrrr"r(r9rFrJrVrZrkrmrvrr{risdirr~rrrrrrdrr3rrr>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)RunFuncTestCasecDtjd|g}tj|fi|S)z4Run Python code in a subprocess using subprocess.runr
rWrXrr)r$rr:argvs    r
run_pythonzRunFuncTestCase.run_python+s(d+~d--f---rc|d}||jd|tj5|ddddS#1swxYwYdSr)rrYrrbrrjcheck_returncoder$cps  rtest_returncodezRunFuncTestCase.test_returncode0s
__7
8
8+++


z<
=
=	"	"!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"sA22A69A6c|tj5}|dddddn#1swxYwY||jjddS)NrSTrtrT)rbrrjrrYrkrrls  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)NTrtr)rrrrYrrs  rtest_check_zerozRunFuncTestCase.test_check_zero<s4
^O4
8
8
8*****rc|tj5|ddddddS#1swxYwYdS)Nr^r
r`)rbrrcrr#s rtest_timeoutzRunFuncTestCase.test_timeoutAs


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

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

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

#
%
%!!!





__I22	


gry)))))rc|ddtj}|d|jdS)Nrr)rrBrrrs  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)
NrrrrBrrrrAr)rrrrIrrrbryrrwrkr9rs    rrz6RunFuncTestCase.test_check_output_stdin_with_input_arges

#
%
%!!!







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


gq{/2333

gq{/233333s4BB Brc8|tj5}|ddtj}dddn#1swxYwY||jjd||jjddS)Nrr)rarBrr)	rbrrcrrErYrkr{rB)r$rmrs   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!)rrrrrYr)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 testrsrT)rBr)r'rrrr	rrr^rYrrbr)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)rrrWrXrrrYrr$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	rWrXrrrYrrs    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_outputrrsFLUFL)rrwrBrCrs  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.rBrT)rrBrBrr
rrrrIrbryrrwrkr9rs    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.rBrT)rrCrCrrrrs    r#test_stderr_with_capture_output_argz3RunFuncTestCase.test_stderr_with_capture_output_argrrz)requires posix like 'sleep' shell commandcLtj}	tjdddd|dnB#tj$r0}tj}t
j}Yd}~nd}~wwxYw|||z
dd|d	
dS)zJOutput capturing after a timeout mustn't hang forever on open filehandles.zsleep 3Tr_)rrarzTimeoutExpired not raised.Ng?z/TimeoutExpired was delayed! Bad traceback:
```
z```rB)	r-	monotonicrrrrc	traceback
format_exc
assertLess)r$before_secsr7
after_secsstackss     r.test_run_with_shell_timeout_and_capture_outputz>RunFuncTestCase.test_run_with_shell_timeout_and_capture_outputsn&&	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
Trrfrs<string>:2: EncodingWarning: rs<string>:3: EncodingWarning: )rrrrrWrXrC
splitlinesrYrrr)r$rrliness    rtest_encoding_warningz%RunFuncTestCase.test_encoding_warnings 
^S^-FdS+/111	$$&&UQ...a++,LMMNNNa++,LMMNNNNNrN)r0r1r2rrrrrrrrrrrrrrrrrrlrr'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.)rgetgrnamKeyErrorrlrm)
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$rcs 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)z;Test error in the child raised in the parent for a bad cwd.r
rrExpected OSError: %sNrrrDrWrXrrrrYrstrerrorrr$rrKrs    rtest_exception_cwdz'POSIXProcessTestCase.test_exception_cwds 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 CC
c|}	tjtjddg|j}|d|zdS#t$rk}||j	|j	||j
|j
||j|jYd}~dSd}~wwxYw)zBTest error in the child raised in the parent for a bad executable.r
rrrNrrs    rtest_exception_bad_executablez2POSIXProcessTestCase.test_exception_bad_executables 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)z?Test error in the child raised in the parent for a bad args[0].r
rrN)
rrrDrrrrYrrrrs    rtest_exception_bad_args_0z.POSIXProcessTestCase.test_exception_bad_args_0-s 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__CrurN)r0r1r2r
r3rrPopenNoDestructorrBs#					rrrcd}||_tjdt5|t
5|dgdddn#1swxYwYddddS#1swxYwYdS)z>Test error passing done through errpipe_write in the good casec|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_commandN)rrrdChildProcessErrorrbIsADirectoryErrorr)r$	fork_execrs   rtest_exception_errpipe_normalz2POSIXProcessTestCase.test_exception_errpipe_normalFsC			!-	
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<<BBcdfd}||_tjdt5|t
j5}|dgdddn#1swxYwYdddn#1swxYwY|tt|jdS)zZTest error passing done through errpipe_write where its not
        in the expected formatsޭcB|d}tj|dS)Nrr)rr)r9r
error_datas  r	bad_errorzGPOSIXProcessTestCase.test_exception_errpipe_bad_data.<locals>.bad_error\s% HM
H]J///1rrrrN)rrrdrrbrSubprocessErrorrrwrfrrk)r$rr!rr s    @rtest_exception_errpipe_bad_dataz4POSIXProcessTestCase.test_exception_errpipe_bad_dataWso)
					!*	
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 BA."B.A2	2B5A2	6BB	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.rB)rrvrrrassertNotEqual)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)rrvrWrXrgetsidintr(PermissionErrorrEPERM)r$r{
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)rrvrWrXrr9r1r(r2rr3)r$r{parent_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%+%%&%%%%%	r7setreuidzno 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())rurE)rrrE)rgeteuidrWrpwdgetpwnamrrsubTestrrvrX
isinstancerpw_uidr1rYr2rrEACCESr3rbryrgr
OverflowErrorrr)
r$uid
test_usersname_uidrErFr{user_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)NrGrbryrrgrr#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)NrArBr)grouprFr
zimport os; print(os.getgid())rur^rH)rrr^)rgetegidrrrrLrrvrWrXrMrrgr_gidr1rYr2rbryrgrrPrr)	r$gid
group_listrr^rFr{	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)NrXr_rYr#s rtest_group_errorz%POSIXProcessTestCase.test_group_error
s


z
*
*	@	@!/????	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@	@r[	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)NrArBFr
z;import os, sys, json; json.dump(os.getgroups(), sys.stdout)extra_groupscng|]2}t|trtj|jn|3Sr3)rMrrrra)rgs  rrz:POSIXProcessTestCase.test_extra_groups.<locals>.<listcomp>(sI 5 5 5$%;EQ:L:L SQ 6 6RS 5 5 5rTrurH)rrrl)rr`rrrrrvrWrX	getgroupsjsonloadsrYsetrrr3rbryrgrrr)
r$rbrcr
perm_errorr{
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)NrkrYr#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	Dr[umaskzPOSIX 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()+)r{iiz != rB)rrrrrrrgrWrXstatst_moderYoctrr)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())rrrrDrWrXr)rYrrvSIGABRTrJs  rtest_run_abortz#POSIXProcessTestCase.test_run_abort[s

(
*
*		 #.$"9";<<A
FFHHH																
!,77777s6AAAcTtjttjd}t|}|d||d||ttj|dS)Nfake cmdrvSIG)rrjr1rvrrrwlowerr$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.rrjrrwrs   r*test_CalledProcessError_str_unknown_signalz?POSIXProcessTestCase.test_CalledProcessError_str_unknown_signalns:+HjAA3xx

/>>>>>rcztjdd}t|}|d|dS)Nrfrznon-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)rB
preexec_fnappler?rJs  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?ryr3rrraise_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)rrDrWrXrr"r
_fork_execryrwr9)r$rrKrs    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-ceZdZdZdZdZdS)+POSIXProcessTestCase._TestExecuteChildPopenz3Used to test behavior at the end of _execute_child.cH||_tjj|g|Ri|dSr!)	_testcaserrDr)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.rB)rrDr;rrrrAr4rBrCrrI)r$r9r:devzero_fdsr8s     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)r0r1r2r<rr;r3rr_TestExecuteChildPopenrs8AA	=	=	=	%	%	%	%	%rrrz/dev/zero required.c	d}|tj5||ttjtjtj|ddddS#1swxYwYdS)z6Issue16140: Don't double close pipes on preexec error.c*tjd)Nz-force the _execute_child() errpipe_data path.)rr"r3rrrzWPOSIXProcessTestCase.test_preexec_errpipe_does_not_double_close_pipes.<locals>.raise_its,CEE
Er)rArBrCrN)rbrr"rrrE)r$rs  r0test_preexec_errpipe_does_not_double_close_pipeszEPOSIXProcessTestCase.test_preexec_errpipe_does_not_double_close_pipess	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?A//A36A3ctj}	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+rrVrWrXenabler)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DD66ErCz!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'rrrrVrWrXBlockingIOError)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)'
irT)rrMrrr
unix_shellrWrXrchmodrrDr)rNrYr)r$r8fnamefobjrKs     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
rSrTstartupinfo
creationflagsrbryrrVrWrXr#s rrz&POSIXProcessTestCase.test_invalid_argssx*jo>457&(		*	*	*	
*jo>457(*		,	,	,	,	,rcHtj}d|d<tjdgdtj|}|5||j	ddddddS#1swxYwYdSNrrzecho $FRUITrrrBrs 	
r
rrrrrDrErYrBr	rr$rrKs   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)rrMrrrrrWrXrrrrVrNrY)r$r8rrr[s     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)rXrrBrI)rrrisfilerrislinkrrDrErYrBr	rr)r$shellsrrshrKs      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)
                                 TrFrArBrCr)rvSIGINTdefault_int_handlerrrDrWrXrErBr	getattr)r$methodr9rwrKs     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)rrDrWrXrErBr	r-r.rr)r$rr9rKs    r_kill_dead_processz'POSIXProcessTestCase._kill_dead_processL	s

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


a
1


6D!!	

rc|dtj}|\}}|d|||ddS)Nsend_signalsKeyboardInterruptr)rrvrrrwr(r)r$rKrrCs    rtest_send_signalz%POSIXProcessTestCase.test_send_signalc	sc}fm<<MMOO	6

*F333AFFHHa(((((rc|d}|\}}||d||tjdS)Nrnr)rrrYr)rvSIGKILLrs    r	test_killzPOSIXProcessTestCase.test_killi	sdv&&MMOO	6%%%FN?33333rc|d}|\}}||d||tjdS)N	terminater)rrrYr)rvSIGTERMrs    rtest_terminatez#POSIXProcessTestCase.test_terminateo	sd{++MMOO	6%%%FN?33333rcF|dtjdSNr)rrvrr#s rtest_send_signal_deadz*POSIXProcessTestCase.test_send_signal_deadu	s 
v}=====rc0|ddSNrnrr#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/r8inheritablesaveds      r	_save_fdszPOSIXProcessTestCase._save_fds	sT	1	1B,R00KF2JJEJJE;/0000
rcn|D]1\}}}tj|||tj|2dS)N)r)rdup2rI)r$r/r8r
rs     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
rVr@rr>)rrrIrrDrWrXrErrYr)	r$r/rA	saved_fdsr8r
rrrs	         rcheck_close_std_fdsz(POSIXProcessTestCase.check_close_std_fds	sNN3''	&/		"B{Qww	)

!';)<
#(o(o///0;{}}
C
S(+++S),,,i(((((Di((((sBCC-c2|dgdSrfrr#s rtest_close_fd_0z$POSIXProcessTestCase.test_close_fd_0	  !%%%%%rc2|dgdSNrrr#s rtest_close_fd_1z$POSIXProcessTestCase.test_close_fd_1	rrc2|dgdS)Nrfrr#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)Nrrfrr#s rtest_close_fds_0_2z'POSIXProcessTestCase.test_close_fds_0_2	r rc4|ddgdS)Nrrfrr#s rtest_close_fds_1_2z'POSIXProcessTestCase.test_close_fds_1_2	r rc4|gddS)N)rrrfrr#s rtest_close_fds_0_1_2z)POSIXProcessTestCase.test_close_fds_0_1_2	s"	
  +++++rc`tjd}tjd}	tjdtjdtjt
jddgtj|dtj|dtj|tj|dS#tj|dtj|dtj|tj|wxYw)z=Issue #15798: Popen should work when stdio fds are available.rrr
z*print('AssertionError:0:CLOEXEC failure.')N)	rr
rIrrDrWrXr)r)r$	new_stdin
new_stdouts   rtest_small_errpipe_write_fdz0POSIXProcessTestCase.test_small_errpipe_write_fd	sF1II	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|]}tjSr3rrMrrs  rrz?POSIXProcessTestCase.test_remapping_std_fds.<locals>.<listcomp>	!666!##666rrcg|]\}}|Sr3r3rr8rs   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")rfr@rC	got STDINerr)rrunlinkrr5r	enumeraterrrDrWrXr)rr	rrYrI)
r$tempstemp_fdsr8rrtemp_fdrKrrs
          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|]\}}|Sr3r3r1s   rrz7POSIXProcessTestCase.check_swap_fds.<locals>.<listcomp>
s...92uB...rr2rr
r3r@rCr4r5)rrr6rr7rrr5rrDrWrXr)r	rrrYrI)
r$stdin_no	stdout_no	stderr_nor8r9r8rrr:rKrrs
             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)Nrrrf)rBr#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
rrCrIz"
                    When testing z to z4 redirection,
                    parent descriptor z5 got redirected
                    to descriptor(s) z instead of descriptor z.
                )rrrrrrr4rrrrIziprrrrVrWrXrrYr5SEEK_SETr	rmapr1r
r)r$from_fdsto_fdsrfrom_fdffd_to_close	arg_namesr:to_fdr
skipped_fdr[
read_bytesread_fdsrCs                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)Nrrf)	itertoolscombinationsrpermutationsrS)r$rIrJs   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.SubprocessErrorr[z!Exception occurred in preexec_fn.)rrVrrryrrrYrr"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)utest42rIrz&import os; print(ascii(os.getenv(%s)))CLC_ALLr
rs

z'import os; print(ascii(os.getenvb(%s))))
rrfrrrrrvrWrXrrYr
rI)r$keyvalue
encoded_valuescriptr
decoded_valuerBs        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)rrrrrrrrVrYrrrrenvironb)	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)rArBrCrFrrBrF,zExpected no fds from z to be open in child, found )rfindfilerrDrWrXrErrrrrHr1rrAr4rBrCr+)	r$sleeper	fd_statusp1p2r{error
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.pyrtruzqgrep.pyszxcvbn
F)rArBrFcT	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)rrzrrDrWrXrErBrr)rArrIselectrrYr	)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)Nrwrtrurr	TFrxryzSome fds were closedzSome fds were left openzSubprocess failedc3@K|]}VdSr!)r)rrr0s  r	<genexpr>z6POSIXProcessTestCase.test_close_fds.<locals>.<genexpr>s+;;Q(,,..;;;;;;rrrBrFpass_fdsz'Some fds not in pass_fds were left open)rrzrrjrrIrrrrdevnullraddset_inheritablerrDrWrXrErrHr1rrYr+rw)r$r|r/rr8rKr{ignored
remaining_fdsfds_to_keepr0s          @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 FreeBSDctjdd}tjtjdt
jd|zgtj}|	\}}|
}|t|dd|z	ttt|d
d}ttt|dd}|||zd
	dS)z;Confirm that issue21618 is fixed (may fail under valgrind).rwrtrur
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))
        rsrfz(expected exactly two lines of output:
%rrBrryrzSome fds were left open.N)rrzrrDrWrXrrrErrrYrrrrHr1rrr+)r$r|rKr{
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[
$^<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)Nrwrtrur~rrTrryzfd to be passed not passedzfd to be closed passedF)rFrzoverriding close_fds)rrzrrrrrjrrIrupdaterrDrWrXrErrHr1rrwr+assertWarnsrrVrrwarning)r$r|r0rr/r8rKr{rr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)	NrwrtruTFrryz	output=%a)rrzrrjrrIrrWrXrrHrrrDrErrrr1rrYr	)
r$rgrnon_inheritablerr9rKr{rr/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<<eDDDDDrcNtjdd}g}tdD]`}tjtjtj}|tj||	|atj
\}}|tj||tj||d|tj
tj|g|d|d|dd|5tj|d	}d
d
d
n#1swxYwYd|dD}||hd
t'|zd|d
S)z7Regression test for https://bugs.python.org/issue32270.rwrtrurfrrT)rArBrCrFrrCNc,h|]}t|Sr3)r1)rnums  r	<setcomp>z@POSIXProcessTestCase.test_pass_fds_redirected.<locals>.<setcomp>s666Cs3xx666rry>rrrfzoutput=)rrzrrrrO_RDWRrrIrrjinsertrrDrWrXr	rrY	frozenset)	r$r|rrr8stdout_rstdout_wr{r/s	         rtest_pass_fds_redirectedz-POSIXProcessTestCase.test_pass_fds_redirecteds$^<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+)rBrArGrrrrrDrr)r$inoutrKs   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)rCrArrs   r%test_stderr_stdin_are_single_inout_fdz:POSIXProcessTestCase.test_stderr_stdin_are_single_inout_fdrrc2tjdd}tjtj|gtjtj}|\}}|d|j	d|
dzdS)Nzsigchild_ignore.pyrtrurrz6sigchild_ignore.py exited non-zero with this error:
%sr)rrzrrDrWrXrErrYrr
)r$sigchild_ignorerKrBrCs     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)rBrNrsapplg)r
import_modulerrDrWrXrErBrrIrYr	rwrr))r$rrKrLs    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)rrDrWrXrErrBrIrCrpidrcheck_warningsResourceWarningr'rr(rw)r$rKidentrs    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rrrArc,g|]}t|Sr3rrs  rrzJPOSIXProcessTestCase.test_leak_fast_process_del_killed.<locals>.<listcomp>@s$G$G$GqRUU$G$G$Gr)rrDrWrXrErrBrIrCrrrrrr
gc_collectrrnrvrr'rr(rwr-r.rbrrwaitpidr)r$rKrrrvs     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)	NrwrtrurTc.tjdSr)rr)r8srrzCPOSIXProcessTestCase.test_close_fds_after_preexec.<locals>.<lambda>Ls2r)rBrFrry)rrzrr
rrIrrDrWrXrErrrrHr1rr)r$r|rKr{rrr8s      @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]sexeenvsargTr3rurrfrrFz
takes exactly)_posixsubprocessrrrrbrrrrrkr)	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!)re)r$res  rrzSPOSIXProcessTestCase.test_fork_exec_sorted_fd_sanity_check.<locals>.BadInt.__init__s
"


rc:|jrd|_|jSt)NF)firstreryr#s r__int__zRPOSIXProcessTestCase.test_fork_exec_sorted_fd_sanity_check.<locals>.BadInt.__int__s!:&!&DJ:%  rN)r0r1r2rrrr3rrBadIntrs7E
#
#
#
!
!
!
!
!rr)rurfrrr~)rr)*l)r~r)rr_r_rrrfzfds_to_keep={}rBsfalseTrrurrr)rrrrrbryrrrwrrkr)r$rrrrrms      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)NrA)rrDrrrdreBrokenPipeErrorrIrrassert_called_withr$rvmock_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)NrAstuff)rrDrrrdrerrrrassert_called_once_withrIrs   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-hrrAwbr)rrDrWrXrErrdrerrrrrrr4return_valuerr)r$rvrdev_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)NrrrAir`)
rrDrWrXrErrdrerrIrrrrs   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_STOPCODEcXt}tj|}tj|jdt
jd}tj	d|j|f5|
}dddn#1swxYwY||ddS)zATest wait() behavior when waitpid returns WIFSTOPPED; issue29335.rrprr)rN)rrrDrwait_processr	_testcapirrrdr)rY)r$r9rvstatusrs     rtest_stoppedz!POSIXProcessTestCase.test_stoppeds
%%	TX2222%a((
Z/tx>P
Q
Q
Q	%	%J	%	%	%	%	%	%	%	%	%	%	%	%	%	%	%	
R(((((s(B		B
B
ctjt}tj|jd||jtj	d5}|
tjdddn#1swxYwY|
||jdS)Nrr
zos.kill)rrDrrrrrrrrdrrvrassert_not_calledr])r$rv	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)
rrDrWrXrrrrdrerrvrrnrJs  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)rsTr_r`)rrDrWrXrErrcr$rvs  r1test_communicate_repeated_call_after_stdout_closezFPOSIXProcessTestCase.test_communicate_repeated_call_after_stdout_close
s{!N!P'1888	
   ---,



		sAAA)or0r1r2r%rrrr	rrDrrrdrr#rlrrrrOr-r6rrr>rVrZrfrhrxrzr'rrrrrrrrrrrWrrrrrrrrrrrrrrrrrrrrrrrrr"r$r&r*r;rBrDrSrXr^rirrrrrrst_devrrrequires_mac_verrrrrrrrrrrrcpython_onlyrrrrrr
rrrrr
__classcell__rcs@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)rSTARTUPINFOdwFlagswShowWindowrVr)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&rVr)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)Nrfr)rBrCrrhandle_list)rr&r)r'SW_HIDEr(rrrrrrDrrrYrr	hStdInput
hStdOutput	hStdErrorlpAttributeList)r$rrrnullrvs      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)rWrCrrrVrX)r$CREATE_NEW_CONSOLEs  rtest_creationflagsz'Win32ProcessTestCase.test_creationflagsQ
sQ
CDDD=>&8	:	:	:	:	:	:rcr|ttjtjddgddS)Nr
rScdSrr3r3rrrz8Win32ProcessTestCase.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
sDDDrrBr)dictrbrrrDr)r$rBs  rtest_issue31471z$Win32ProcessTestCase.test_issue31471`
s					T			


y
)
)	<	<_&&((;;;;	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<s$AA#&A#cxtjtjddgd}||ddS)Nr
rST)rFrTrUrZs  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))Frx)rBrCrFsOSErrorr0)rBrCrrFz.*overriding close_fds)r$rrjrrIrr
get_osfhandlerrDrWrXrrErrYrr1rrwr&r5rrr)
r$r$r/rr8rKrBrCr0rs
          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&r5rVrr$rs  rtest_empty_attribute_listz.Win32ProcessTestCase.test_empty_attribute_list
s@ ,..&(#$/	1	1	1	1	1	1rcttj}dgi|_tjt|dS)Nr0rrJrKs  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#1swxYwYdSNphysalisrrrrrsphysalis	rrrrrDrErwrBr	rs   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#1swxYwYdSrPrRrs   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)ansioemrQrrrr)rrBrrrR)r$encrrKs    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)"rTrUrZs  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)rrDrWrXrErBr	rrrYr)r()r$rr9rKrrCrs       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)
rrDrWrXrErBr	r-r.rrrYr))r$rr9rKrrCr[s       rrz'Win32ProcessTestCase._kill_dead_process
s#cnd5!"$.?$.O$.O
5
5
5
	
	
HMM!JqMMMGAv%%

IAvVS)))B
	
	
	
	
	
	
	
	
	
	
	
	
	
	
		
R     sBCCCcF|dtjdSr)rrvrr#s rrz%Win32ProcessTestCase.test_send_signals =&.99999rc0|ddSrrr#s rrzWin32ProcessTestCase.test_kills6"""""rc0|ddSrr^r#s rrz#Win32ProcessTestCase.test_terminates;'''''rcF|dtjdSr)rrvrr#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.r7r;rrr rDrrHrLrNrrrXrrrrrrrrrr3rrr$r$
su
1
1
1111 OOO6:::000
<<<!!!0.0.0.d111111888888
@
@
@!!!+++*!!!.:::###(((???(((-----rr$ceZdZGddejZejejddZ	dZ
dZdZdZ
d	Zd
S)	MiscTestsc&eZdZdZgZfdZxZS)MiscTests.RecordingPopenz<A Popen that saves a reference to each instance for testing.cntj|i||j|dSr!)rrinstances_createdr)r$r9r:rcs   rrz!MiscTests.RecordingPopen.__init__s<EGGd-f---"))$/////r)r0r1r2r<rhrr!r"s@rRecordingPopenrfsDJJ	0	0	0	0	0	0	0	0	0rri_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)
aFake a SIGINT happening during Popen._communicate() and ._wait().

        This avoids the need to actually try and get test environments to send
        and receive signals reliably across platforms.  The net effect of a ^C
        happening during a blocking subprocess execution which we want to clean
        up from is a KeyboardInterrupt coming out of communicate() or wait().
        _waitrDr
zLimport time
time.sleep(9)
import sys
sys.stderr.write('\n!runaway child!\n')rBNrr`z.no open-ended wait() after the first allowed: g?rfrB)KeyboardInterruptrrrdrerrDrirbrWrXr^rr(rVrassertLessEqual
call_countrYrrhrrnr))r$popenermock__communicater:
mock__waitrVsigint_callsrzs        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%8F20C#B:.C:B>>CB>CF2C	F2C	C
F2&H%2F66H%9F6:H%%A(J
cH|tjddSNgT㥛 @r`)rtrrVr#s r#test_call_keyboardinterrupt_no_killz-MiscTests.test_call_keyboardinterrupt_no_killHs#,,Z_e,LLLLLrcH|tjddSrv)rtrrr#s r"test_run_keyboardinterrupt_no_killz,MiscTests.test_run_keyboardinterrupt_no_killKs#,,Z^U,KKKKKrc6d}||dS)NcNtj|i|5}t#1swxYwYdSr!)rrDrm)r9r:unused_processs   rpopen_via_context_managerz[MiscTests.test_context_manager_keyboardinterrupt_no_kill.<locals>.popen_via_context_managerOsW!42622
(n''
(
(
(
(
(
(
(
(
(
(s)rt)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)rYr	getoutputgetstatusoutputrrrrrr'r(rmdir)r$dirrrr{s     rtest_getoutputzMiscTests.test_getoutputTs-l;;WEEE3LAA%	'	'	'	"$$C7<<U++D'7%16T9;;NFF***




s



s
A,CC3cbhd}ttj}t}ddl}tjD]G\}}|drt||jfr2|	|H|
|||z
dS)z*Ensure that __all__ is populated properly.>rrJrkHandlerrNr)rrr__all__r__dict__itemsrrM
ModuleTyperrY)r$intentionally_excludedexportedpossible_exportsrrres       rtest__all__zMiscTests.test__all__gs!R!R!Rz)**55%.4466	'	'KD%s##
%%"2!455
  &&&&#36L#LMMMMMrN)r0r1r2rrDrirrdrertrwryr~rrr3rrrdrds00000)000
Zz'88)H)H98)HVMMMLLLHHH&NNNNNrrd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%rrMrrrrrI)r$rLrrcs   rr%zCommandsWithSpaces.setUpsh


#E7335[[^^

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


																		sA	A99A=A=c	f|dtjd|jdddddS)N"" "ab cdrr`rrWrXrr#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)rrDrWrXrErYrBr	rCrrrs  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)rrDrWrXrYrrs  rrz#ContextManagerTests.test_returncodes

s~t:<==	@D																
#.....s044ctjtjddgtj5}|d||jdddddS#1swxYwYdS)Nr
z2import sys;sys.exit(sys.stdin.read() == 'context')rscontextrrRrs  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)rbrrrDrrErs  rrz%ContextManagerTests.test_invalid_argss


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














																		s51A2AA2A	A2!A	"A22A69A6ctjttjtjdz}|}|jdtjz|	|j
|t|j
ddd||j
d||jjdS)z9Broken pipe error should not prevent wait() (Issue 21619)rf)rArNrXNr)rrDrrErr	__enter__rArrrrbr__exit__rYrrrs  rtest_broken_pipe_cleanupz,ContextManagerTests.test_broken_pipe_cleanups&0o(/(=a(?AAA~~	
 55666$/***'4=$dCCC!,,,
)*****rN)r0r1r2rrrrrr3rrrrs_,,,///111+++++rr__main__)Frlrr`rtest.supportrrrrrrWrvrGrUrrrr-rrrrrrr2rrrpratest.support.os_helperr	rr'rJrrkPGOrmhas_subprocess_supportrr'rrrNotADirectoryErrorr2rrXrrTestCaser	Exceptionr5rDr7r>rrrrrr$rdrrrrr0mainr3rr<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