& PsSSKrSSKJr SSKJr SSKJr SSKJr SSKJr SSKJr SSK J r SSK r SSK r SSK r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSS KJr SSK r SSK"r"SSK#r#SSK$r$SSK%r%\RL(a\RN"S 5e\RP(d\RN"S 5e\ RRS :Hr*\*(aS r+OSr+Sr,\-\.\/4r0\ RbSS4q2Sr3"SS\Rh5r5"SS\65r7"SS\ Rp5r9"SS\55r:"SS\55r;Sr<\Rz"\*S5"SS \555r>\R~"\*S!5"S"S#\555r@"S$S%\Rh5rA\R~"\B"\S&5S'5"S(S)\:55rC\R~"\*S*5"S+S,\555rD"S-S.\55rE\FS/:Xa\R"5 gg!\!a Sr GNf=f!\!a Sr"GNf=f!\!a Sr#GNf=f!\!a Sr$GNf=f! Sr%GN=f)0N)mock)support)check_sanitizer) import_helper) os_helper)warnings_helper)assert_python_ok)FakePathztest is not helpful for PGOztest module requires subprocesswin32z@import msvcrt; msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY);)nonexisting_i_hope-cpassc[R"S5nUcg[R"U[R5(a*[ R "U/5RS:XaU4qggg)Ntruer) shutilwhichosaccessX_OK subprocessrun returncodeZERO_RETURN_CMD) shell_trues ;/opt/alt/python313/lib64/python3.13/test/test_subprocess.py setUpModulerNsXf%J *bgg&& |$//14%- 5 'c \rSrSrSrSrSrg) BaseTestCaseXc.[R"5 gN)r reap_childrenselfs rsetUpBaseTestCase.setUpYs rc[(d\[RHnUR5 M [R"5 UR [RS5 UR 5 [R"5 g)Nzsubprocess._active not empty) mswindowsr_activewait_cleanup assertFalse doCleanupsrr$)r&insts rtearDownBaseTestCase.tearDown^s^y"** +    !   ""$B  rN__name__ __module__ __qualname____firstlineno__r'r1__static_attributes__r3rrr r Xs   rr c\rSrSrSrg)PopenTestExceptionkr3N)r5r6r7r8r9r3rrr;r;ksrr;c\rSrSrSrSrg)PopenExecuteChildRaisesoc[S5e)NzForced Exception for Test)r;)r&argskwargss r_execute_child&PopenExecuteChildRaises._execute_childss !<==rr3N)r5r6r7r8rCr9r3rrr>r>os>rr>c\rSrSrSrSrSrSrSrSr Sr S r S r S r S rS rSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr \!RD"\#S5S 5r$\!RD"\#S5S!5r%\!RD"\#S5S"5r&S#r'S$r(S%r)S&r*S'r+S(r,\!RD"\#S)5S*5r-\!RD"\#S)5S+5r.S,r/\!RD"\0Rb\0Rd:gS-5S.5r3\!RD"\0Rb\0Rd:gS-5\!RD"\4Rj"5S/5S055r6S1r7S2r8S3r9S4r:S5r;S6rS9r?S:r@S;rAS<rBS=rCS>rDS?rES@rF\!R"\H=(a \I"\HSA5SB5SC5rJ\!R"\H=(a \I"\HSA5SB5SD5rKSErL\!R"\0RSF:HSG5SH5rN\!RD"\0RSF:HSI5\!RD"\4R"SJ5SK:HSL5\!RD"\P"SMSN9SO5SP555rQ\!RD"\4R"SJ5SK:HSQ5\!RD"\P"SMSN9SO5SR55rRSSrSSTrT\!R"\0RSF:HSG5SU5rUSVrVSWrWSXrXSYrYSZrZS[r[S\r\S]r]S^r^S_r_S`r`SaraSbrbScrcSdrdSereSfrfSgrgShrhSiriSjrjSkrkSlrlSmrmSnrnSoroSprp\qR"Sq5Sr5rsSsrtStruSurvSvrwSwrxSxrySyrzSzr{\!R"\I"\|S{5S|5\!R"\I"\}S}5S~5\!R"\I"\}S5S5S555r~\!R"\}RGRS\}GR"5-5S5S5r\!RD"\#S5S5r\!RD"\#S5S5rSr\!R"\I"\S5S5S5rSrg)ProcessTestCasewc[R"[[R[R[RS9nUR UR [ R5 UR UR[ R5 UR UR[ R5 UR R5 URR5 URR5 UR5 g!UR R5 URR5 URR5 UR5 f=f)Nstdinstdoutstderr) rPopenrPIPEassertIsInstancerJioBufferedIOBaserKrLcloser,r&ps rtest_io_buffered_by_default+ProcessTestCase.test_io_buffered_by_defaultys   _#-??:??$.OO 5   ! !!''2+<+< =  ! !!((B,=,= >  ! !!((B,=,= > GGMMO HHNN  HHNN  FFH GGMMO HHNN  HHNN  FFHsA>D$$A Fc[R"[[R[R[RSS9nUR UR [ R5 UR UR[ R5 UR UR[ R5 UR R5 URR5 URR5 UR5 g!UR R5 URR5 URR5 UR5 f=f)Nr)rJrKrLbufsize) rrMrrNrOrJrP RawIOBaserKrLrRr,rSs rtest_io_unbuffered_works(ProcessTestCase.test_io_unbuffered_workss   _#-??:??$.OOQ @   ! !!''2<< 8  ! !!((BLL 9  ! !!((BLL 9 GGMMO HHNN  HHNN  FFH GGMMO HHNN  HHNN  FFHsA>D%%A Fcv[R"[RSS/5nUR US5 gNrimport sys; sys.exit(47)/rcallsys executable assertEqualr&rcs r test_call_seqProcessTestCase.test_call_seqs0 __cnnd8:; R rcUR[R[R[R SS/SS9 g)Nrwhile True: pass皙?timeout) assertRaisesrTimeoutExpiredrarbrcr%s rtest_call_timeout!ProcessTestCase.test_call_timeouts7 *33Z__>>41CD"%  'rc[R"[RSS/SS9 UR S5 [R"[RSS/SS9 UR S5 g![R a%nUR S[U55 SnANmSnAff=f![R a%nUR S[U55 SnAgSnAff=f) Nrzimport time;time.sleep(9)rlz,Expected TimeoutExpired exception not raisedz -1 secondsrz 0 seconds)rrrbrcfailroassertInstr)r&es rtest_timeout_exception&ProcessTestCase.test_timeout_exceptions F NNCNND2MNZ\ ] IID E F NNCNND2MNZ[ \ IID E(( 0 MM,A / / 0 (( / MM+s1v . . /s.&A2&B.2B+B&&B+.C'C""C'c\[R"[5nURUS5 gNr)r check_callrrdres rtest_check_call_zero$ProcessTestCase.test_check_call_zeros"  " "? 3 QrcUR[R5n[R"[R SS/5 SSS5 UR WRRS5 g!,(df  N5=fr]) rnrCalledProcessErrorr|rbrcrd exceptionrr&cs rtest_check_call_nonzero'ProcessTestCase.test_check_call_nonzerosa   z<< =  ! !3>>4#=#? @> //4> = (A77 Bc[R"[RSS/5nUR SU5 UR [ S5 [R"/SS9 SSS5 UR [ S5 [R"/SS9 SSS5 g!,(df  NC=f!,(df  g=f) Nr print('BDFL')BDFLz2stdout argument not allowed, it will be overriddenrKz1check argument not allowed, it will be overriddenFcheck)r check_outputrbrcruassertRaisesRegex ValueErrorr&outputs rtest_check_output!ProcessTestCase.test_check_outputs((79 gv&  # #JDF  # #Bt 4F # #JCE  # #Be 4EE FFEEsB#B4# B14 CcUR[R5n[R"[R SS/5 SSS5 UR WRRS5 g!,(df  N5=f)Nrzimport sys; sys.exit(5)) rnrrrrbrcrdrrrs rtest_check_output_nonzero)ProcessTestCase.test_check_output_nonzeros`   z<< =  # #^^T+DE G> //3> =rc[R"[RSS/[RS9nUR SU5 g)Nr$import sys; sys.stderr.write('BDFL')rLr)rrrbrcSTDOUTrurs rtest_check_output_stderr(ProcessTestCase.test_check_output_stderrs:(('MN!((* gv&rc[R"5nURUR5 UR S5 UR S5 [ R"[RSS/US9nURSU5 g)Npearrr6import sys; sys.stdout.write(sys.stdin.read().upper())rJPEAR) tempfile TemporaryFile addCleanuprRwriteseekrrrbrcru)r&tfrs rtest_check_output_stdin_arg+ProcessTestCase.test_check_output_stdin_argsl  # # % !   ((IK gv&rct[R"[RSS/SS9nUR SU5 g)Nrrrinputrrrrbrcrurs rtest_check_output_input_arg+ProcessTestCase.test_check_output_input_args7((IK gv&rct[R"[RSS/SS9nUR SU5 g)Nr3import sys; print('XX' if sys.stdin.read() else '')rsXXrrrbrc assertNotInrs rtest_check_output_input_none,ProcessTestCase.test_check_output_input_nones9((FH 'rcv[R"[RSS/SSS9nUR SU5 g)NrrT)rtextXXrrs r!test_check_output_input_none_text1ProcessTestCase.test_check_output_input_none_texts;((FH' v&rcv[R"[RSS/SSS9nUR SU5 g)NrrT)runiversal_newlinesrrrs r/test_check_output_input_none_universal_newlines?ProcessTestCase.test_check_output_input_none_universal_newliness;((FHt5 v&rcx[R"[RSS/SSSS9nUR SU5 g)Nrz print('foo')utf-8ignore)rencodingerrorsfoorrs r,test_check_output_input_none_encoding_errorsUR[5n[R"[R SS/[R S9nURS5 SSS5 URSWRRS5 g!,(df  N8=f)Nrprint('will not be run')rz-Expected ValueError when stdout arg supplied.rKr) rnrrrrbrcrKrtrurrAr&rrs rtest_check_output_stdout_arg,ProcessTestCase.test_check_output_stdout_arg st   z *a,,^^T+EF::'F IIE F + h 0 0 34 + *s AB Bc[R"5nURUR5 UR S5 UR S5 UR [5n[R"[RSS/USS9nURS5 SSS5 URSWRRS5 URS URRS5 g!,(df  Na=f) NrrrrharerJr7Expected ValueError when stdin and input args supplied.rJr)rrrrRrrrnrrrrbrcrtrurrAr&rrrs r&test_check_output_stdin_with_input_arg6ProcessTestCase.test_check_output_stdin_with_input_args  # # % !     z *a,,^^T+EFG-F IIO P + gq{{//23 gq{{//23 + *s (9C<< D cUR[R5n[R"[R SS/SS9nSSS5 g!,(df  g=f)Nrimport time; time.sleep(3600)rkrl)rnrrorrbrcrs rtest_check_output_timeout)ProcessTestCase.test_check_output_timeout!sH   z88 9Q,,^^T46!F: 9 9s 'A Ac[RR5nSUS'[R"[ R SS/US9nURUS5 g)NbananaFRUITrz5import sys, os;sys.exit(os.getenv("FRUIT")=="banana")env)renvironcopyrrarbrcrd)r&newenvrfs rtest_call_kwargs ProcessTestCase.test_call_kwargs)sT""w __cnndGH"() Qrc[R"5nUR[[R SS9 [R R RRnS/US--nUR"[[R /UQ76 SSS5 URWR5S5 g!,(df  N/=f)Nr)invalid_arg_namerr ) rcaptured_stderrrn TypeErrorrrM__init____code__ co_argcountrdgetvalue)r&sargcount too_many_argss rtest_invalid_args!ProcessTestCase.test_invalid_args3s $ $ &!   i)9)9A  N!''0099EEHC8a<0M   i)9)9 JM J ' r* ' &s BC Ccv[R"[RSS/[R[RS9nUR UR R5 UR URR5 UR5 URURS5 g)Nrprint("banana")rKrL) rrMrbrcrNrrKrRrLr,rdrJrSs rtest_stdin_noneProcessTestCase.test_stdin_none=ss   cnnd4EF *  I ' '  $'rcSn[R"[RSU/[R[RS9nUR UR R5 UR URR5 UR5up4URURSU5 URUR5S5 g)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;rrrstest_stdout_none rrMrbrcrNrrKrRrL communicaterdrrstripr&coderTouterrs rtest_stdout_none ProcessTestCase.test_stdout_noneFs5   cnndD9$.OOJOO M ' '==? q#. ':;rcv[R"[RSS/[R[RS9nUR UR R5 UR URR5 UR5 URURS5 g)NrrrJrK) rrMrbrcrNrrKrRrJr,rdrLrSs rtest_stderr_none ProcessTestCase.test_stderr_none]ss   cnnd4EF)z H '  &  4(rc US/-n[R"U40UD6nUR5 URSUR5 gNr^r_)rrMr,rdr)r&pre_argsrBrArTs r_assert_pythonProcessTestCase._assert_pythonfsD566   T ,V ,  Q\\*rc[RR[RR[R 5S5nUR US/[R S9 gN doesnotexistrrc)rpathjoindirnamerbrcrr&r s rtest_executableProcessTestCase.test_executablensHww||BGGOOCNN$C$24  \40S^^Lrc[RR[RR[R 5S5nUR US/[R"[R 5S9 gr )rr r rrbrcrfsencoders rtest_bytes_executable%ProcessTestCase.test_bytes_executableysUww||BGGOOCNN$C$24  \40'){{3>>'B  Drc[RR[RR[R 5S5nUR US/[[R 5S9 gr )rr r rrbrcrr rs rtest_pathlike_executable(ProcessTestCase.test_pathlike_executablesQww||BGGOOCNN$C$24  \40'/'?  Arc[RS/nURU5 UR[URU[ SS9 g)Nrrr )rbrcrrnNONEXISTING_ERRORSNONEXISTING_CMD)r&rs r test_executable_takes_precedence0ProcessTestCase.test_executable_takes_precedencesINND) H% ,--x%4Q%7  9rz"executable argument replaces shellcBUR/[RSS9 gNT)rcshell)rrbrcr%s rtest_executable_replaces_shell.ProcessTestCase.test_executable_replaces_shells B3>>FrcjUR/[R"[R5SS9 gr)rrrrbrcr%s r$test_bytes_executable_replaces_shell4ProcessTestCase.test_bytes_executable_replaces_shells) B2;;s~~+F"&  (rcTUR/[[R5SS9 gr)rr rbrcr%s r'test_pathlike_executable_replaces_shell7ProcessTestCase.test_pathlike_executable_replaces_shells% B8CNN+C"&  (rc[R"U5 [R"5sSSS5 $!,(df  g=fr#)r change_cwdrgetcwd)r&cwds r_normalize_cwdProcessTestCase._normalize_cwds' ! !# &99;' & &s 6 Ac[RR[R5n[RR U5$r#)rr realpathrbrcsplit)r& python_paths r_split_python_path"ProcessTestCase._split_python_paths-gg&&s~~6 ww}}[))rc [R"USS/4S[R0UD6nURURR 5 UR 5 URSUR5 [RRnURU"U5U"URR5R555 g)Nrzcimport os, sys; buf = sys.stdout.buffer; buf.write(os.getcwd().encode()); buf.flush(); sys.exit(47)rKr_)rrMrNrrKrRr,rdrrr normcasereaddecode)r& expected_cwd python_argrBrTr6s r _assert_cwdProcessTestCase._assert_cwds   j$-. ( &0__  (!' ( '  Q\\*77## ,/!!((--/"8"8":; =rc[R"5nURU5nURU[R US9 gNr,)r gettempdirr-r;rbrcr&temp_dirs rtest_cwdProcessTestCase.test_cwds9&&(&&x0 3>>x@rc[R"5nURU5nURU[R [ R"U5S9 gr>)rr@r-r;rbrcrrrAs rtest_cwd_with_bytes#ProcessTestCase.test_cwd_with_bytessB&&(&&x0 3>>r{{87LMrc[R"5nURU5nURU[R [ U5S9 gr>)rr@r-r;rbrcr rAs rtest_cwd_with_pathlike&ProcessTestCase.test_cwd_with_pathlikes>&&(&&x0 3>>x7IJrz"pending resolution of issue #15533cUR5up[RR[RU5n[ R "5nUR[[RU/5 UR[[RU/US9 URU5nURXUS9 SSS5 g!,(df  g=fr> r3rr r curdirrtemp_cwdrnFileNotFoundErrorrrMr-r;)r& python_dir python_base rel_python wrong_dirs rtest_cwd_with_relative_arg*ProcessTestCase.test_cwd_with_relative_args#'"9"9"; WW\\"))[9    !Y   /1A1A)l ,   /1A1A)l   ;,,Z8J   Z  D" ! !s A-C  Cc UR5up[RR[RU5nSn[ R "5nUR[[RU/US9 UR[[RU/UUS9 URU5nURXUUS9 SSS5 g!,(df  g=f)Nsomethingyoudonthaver rcr,rL)r&rPrQrR doesntexistrSs r!test_cwd_with_relative_executable1ProcessTestCase.test_cwd_with_relative_executables#'"9"9"; WW\\"))[9 ,    !Y   /1A1A*m   D   /1A1A*m "+  -,,Z8J   Z!+  -" ! !s A.C CcUR5up[RRX5n[RR[RU5n[ R "5nUR[[RU/US9 URU5nURXSUS9 SSS5 g!,(df  g=fr>) r3rr r rMrrBrnrOrrMr-r;)r&rPrQ abs_pythonrRrSs rtest_cwd_with_absolute_arg*ProcessTestCase.test_cwd_with_absolute_args#'"9"9"; WW\\*: WW\\"))[9    !Y   /1A1A)l   ;++I6I   Y  B " ! !s 5AC CzTest is not venv-compatiblecUR5upURU5nURUS[RUS9 g)NrWrX)r3r-r;rbrc)r&rPrQs rtest_executable_with_cwd(ProcessTestCase.test_executable_with_cwdsG#'"9"9"; ((4  %;$'NN   Drz#need an installed Python. See #7774chUR[R"5S[RS9 g)NrWr )r;rr+rbrcr%s rtest_executable_without_cwd+ProcessTestCase.test_executable_without_cwd s) &<$'NN  4rc.[R"[RSS/[RS9nUR R S5 UR R5 UR5 URURS5 g)Nr0import sys; sys.exit(sys.stdin.read() == "pear")rrr) rrMrbrcrNrJrrRr,rdrrSs rtest_stdin_pipeProcessTestCase.test_stdin_pipesf   cnndKM(oo /  g    q)rc[R"5nURUR5 UR 5n[ R "US5 [ R"USS5 [R"[RSS/US9nUR5 URURS5 gNrrrrgrr)rrrrRfilenorrlseekrrMrbrcr,rdrr&rdrTs rtest_stdin_filedes"ProcessTestCase.test_stdin_filedess  # # % ! IIK G Aq   cnndKM  "  q)rcL[R"5nURUR5 UR S5 UR S5 [ R"[RSS/US9nUR5 URURS5 grk) rrrrRrrrrMrbrcr,rdrr&rrTs rtest_stdin_fileobj"ProcessTestCase.test_stdin_fileobj+sz  # # % !     cnndKM! #  q)rc[R"[RSS/[RS9nU UR UR R5S5 SSS5 g!,(df  g=f)Nr&import sys; sys.stdout.write("orange")rorangerrMrbrcrNrdrKr7rSs rtest_stdout_pipe ProcessTestCase.test_stdout_pipe7sS   cnndBD * 1   QXX]]_i 8QQ +A++ A9cn[R"5nURUR5 UR 5n[ R "[RSS/US9nUR5 [R"USS5 UR[R"US5S5 g)NrrwrrrxrrrrRrlrrMrbrcr,rrmrdr7rns rtest_stdout_filedes#ProcessTestCase.test_stdout_filedes?s  # # % ! IIK   cnndBD ! #  Aq D)95rc2[R"5nURUR5 [R "[ RSS/US9nUR5 URS5 URUR5S5 g)Nrrwrrrx rrrrRrrMrbrcr,rrdr7rss rtest_stdout_fileobj#ProcessTestCase.test_stdout_fileobjKsp  # # % !   cnndBD " $    I.rc[R"[RSS/[RS9nU UR UR R5S5 SSS5 g!,(df  g=f)Nr*import sys; sys.stderr.write("strawberry")r strawberry)rrMrbrcrNrdrLr7rSs rtest_stderr_pipe ProcessTestCase.test_stderr_pipeVsS   cnndFH * 1   QXX]]_m <QQr|cn[R"5nURUR5 UR 5n[ R "[RSS/US9nUR5 [R"USS5 UR[R"US5S5 g)Nrrrrr~rrrns rtest_stderr_filedes#ProcessTestCase.test_stderr_filedes^s  # # % ! IIK   cnndFH ! #  Aq D)=9rc2[R"5nURUR5 [R "[ RSS/US9nUR5 URS5 URUR5S5 g)Nrrrrrrrss rtest_stderr_fileobj#ProcessTestCase.test_stderr_fileobjjsp  # # % !   cnndFH " $    M2rc.[R"[RSS/[R[RS9nUR 5up#UR US5 UR US5 UR URS5 g)Nrzimport sys, subprocess;rc = subprocess.call([sys.executable, "-c", "import sys;" "sys.stderr.write('42')"], stderr=subprocess.STDOUT);sys.exit(rc)rs42rrrrMrbrcrNrrdrr&rTrKrLs r,test_stderr_redirect_with_no_stdout_redirect&0%7%7  9  4(rc[R"[RSS/[RS9nUR 5 UR URS5 g)Nrzimport sys;sys.stdin.read(1)r)rrMrbrcrr,rdrJrSs rtest_stdin_devnull"ProcessTestCase.test_stdin_devnullsN   cnnd23%/$6$6 8  $'r F_GETPIPE_SZz%fcntl.F_GETPIPE_SZ required for test.c[R"5up[R"U[R5n[R"U5 [R"U5 US-n[ R "5nXE:a[R"S5e[R"[RSS/[R[R[RUS9nURURUR 4HFnUR#[R"UR%5[R5U5 MH URR'S5 URR 5 URR 5 UR R 5 UR)5 UR+5 g![R"U5 [R"U5 f=f!UR)5 UR+5 f=f)Nz+default pipesize too small to perform test.rQimport sys; sys.stdin.read(); sys.stdout.write("out"); sys.stderr.write("error!")rJrKrLpipesizer)rpipefcntlrrRr get_pagesizeunittestSkipTestrrMrbrcrNrJrKrLrdrlrkillr,)r& test_pipe_r test_pipe_wpipesize_defaultrpagesize_defaultrTfifos rtest_pipesizesProcessTestCase.test_pipesizess$&779  "${{;8J8JK  HH[ ! HH[ !#q("//1  &##=? ?    ^^T* +//*//??X  7  !((AHH5  KK u/A/AB6 GGMM' " GGMMO HHNN  HHNN  FFH FFH7 HH[ ! HH[ !2 FFH FFHs%G*3CH*.H"H=c|[R"[RSS/[R[R[RSS9nU [ R "5up#[R"U[R5n[R"U[R5n[ R"U5 [ R"U5 UR[R"URR5[R5U5 UR[R"URR5[R5U5 UR[R"URR5[R5U5 UR5 SSS5 g![ R"U5 [ R"U5 f=f!UR5 f=f!,(df  g=f)Nrrrsr)rrMrbrcrNrrrrrRrdrJrlrKrLr)r&procfp_rfp_wdefault_read_pipesizedefault_write_pipesizes rtest_pipesize_default%ProcessTestCase.test_pipesize_defaultsy ^^T* +//*//??R 1 WWY #,1KKe>P>P,Q)-2[[u?Q?Q-R*HHTNHHTN  KK 1 1 3U5G5GH)+  KK 2 2 4e6H6HI*,  KK 2 2 4e6H6HI*,  -THHTNHHTN -Ts>H-H0A G':DH H-'.HHH**H-- H;c0[RR5nSUS'[R"[ R SS/[RUS9nUR5up4URUS5 SSS5 g!,(df  g=f)Norangerr2import sys,os;sys.stdout.write(os.getenv("FRUIT"))rKrrx) rrrrrMrbrcrNrrdr&rrTrKrLs rtest_envProcessTestCase.test_envs{""w   s~~t FG&0__"( *./]]_NF   VY / ***s %B Br zWindows only issuecL[RR5nSUS'SUS'SUS'SUS'[R"/S Q[R US 9nUR 5up4URUR5S 5 SSS5 g!,(df  g=f) NcherryfRUitlemonfruitrrrfrUitCMDz/cSETrrs frUit=banana) rrrrrMrNrrdstrip)r&rrTrK_s rtest_win32_duplicate_envs)ProcessTestCase.test_win32_duplicate_envs#s""w!w"w"w   ;%/__"(*-. IF   V\\^_ = ***s 3B B#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.cSn[R"[RSS/[R0S9nUR 5up4[ UR55nURU[5 UVs/sHnU"U5(aMUPM nnURU/5 SSS5 gs snf!,(df  g=f)NcSU;=(d5 SU;=(d) US:H=(d URS5=(d US:H$)N VERSIONER__CF LD_PRELOADSANDBOXLC_CTYPE) startswith)ns ris_env_var_to_ignore.is_env_var_to_ignore<sF  1$$! $%$)*i)@$O %rrz)import os; print(list(os.environ.keys()))r) rrMrbrcrNrevalrrOlistrd)r&rrTrKrLchild_env_namesks rtest_empty_envProcessTestCase.test_empty_env2s %  s~~tJL%/__">AB]]_NF"6<<>2O  ! !/4 8*9?/Q&:1&= !/O?   _b 1>> ? >>s$AB<?B7B7B<7B<< C zLThe Python shared library cannot be loaded without some system environments.cTSS0n[RSS/n[RS:Xa/SQn[R"U[R [R US9nUR 5upEUR(aM[R(a8[SURS S 55 [S URS S 55 URURS 5 URUR5S 5 SSS5 g!,(df  g=f)Nrrrz;import sys,os;sys.stdout.write("fruit="+os.getenv("fruit"))r r)rKrLrzSTDOUT:asciireplacezSTDERR:rs fruit=orange)rbrcplatformrrMrNrrrverboseprintr8rdr)r&rcmdrTrKrLs rtest_one_environment_variable-ProcessTestCase.test_one_environment_variableOs 8$~~t OP <<7 "/C   c*//*//W] ^bc]]_NF||iw !BCiw !BC   Q\\1 -   V\\^_ = _ ^ ^s #B-D D'cf[RS-nUR[5 [R "USS/5 SSS5 UR[5 [R "[RSS/5 SSS5 g!,(df  NT=f!,(df  g=f)Nrrzpass#)rbrcrnrrrM)r&rs rtest_invalid_cmd ProcessTestCase.test_invalid_cmdcs{nnt#   z *   c40 1+  z *   cnndI> ?+ * + *+ *sB (B" B" B0c[RR5nSUS'UR[5 [ R "[US9 SSS5 [RR5nSUS'UR[5 [ R "[US9 SSS5 [RR5nSUS'UR[5 [ R "[US9 SSS5 [RR5nSUS'[ R "[RS S /[ RUS 9nUR5up4URUS 5 SSS5 g!,(df  GNI=f!,(df  GN=f!,(df  N=f!,(df  g=f) NcabbagezFRUITVEGETABLErzorangeVEGETABLE=cabbagerrz FRUIT=ORANGEz orange=lemonrz3import sys, os;sys.stdout.write(os.getenv("FRUIT"))rs orange=lemon) rrrrnrrrMrrbrcrNrrdrs rtest_invalid_env ProcessTestCase.test_invalid_envmsX"%.!"   z *   _& 9+"5w   z *   _& 9+"!(~   z *   _& 9+"(w   s~~t FG&0__"( *./]]_NF   V_ 5 **%+ * + * + * **s/FF'-F9'%G  F$' F69 G Gc[RR5nSUS'UR[5 [ R "[US9 SSS5 [RR5nSUS'UR[5 [ R "[US9 SSS5 g!,(df  Ni=f!,(df  g=f)NrzFRUIT=VEGETABLErz==FRUIT)rrrrnrrrMr)r&rs rtest_win32_invalid_env&ProcessTestCase.test_win32_invalid_envs"$- !   z *   _& 9+"%y   z *   _& 9+ * + * + *sB6C6 C Cc[R"[RSS/[RS9nUR S5 UR URS5 g)Nrz/import sys;sys.exit(sys.stdin.read() == "pear")rrrrrSs rtest_communicate_stdin&ProcessTestCase.test_communicate_stdinsQ   cnndEF$.?? 4 g q)rc[R"[RSS/[RS9nUR 5up#UR US5 UR US5 g)Nrz)import sys; sys.stdout.write("pineapple")r pineapplerrMrbrcrNrrdrs rtest_communicate_stdout'ProcessTestCase.test_communicate_stdoutsZ   cnndIK$.OO 5==? . &rc[R"[RSS/[RS9nUR 5up#UR US5 UR US5 g)Nrz)import sys; sys.stderr.write("pineapple")rrrrs rtest_communicate_stderr'ProcessTestCase.test_communicate_stderrsZ   cnndIK$.OO 5==? & .rc[R"[RSS/[R[R[RS9nUR UR R5 UR URR5 UR URR5 URS5up#URUS5 URUS5 g)NrzNimport sys,os;sys.stderr.write("pineapple");sys.stdout.write(sys.stdin.read())rIbananar) rrMrbrcrNrrKrRrLrJrrdrs rtest_communicate ProcessTestCase.test_communicates   cnndCD$.??$.OO$.OO  5 ' '  &==3 + .rc[R"[RSS/S[R[R[RS9nUR [R URSSS9 UR5up#URUS5 URUR5S5 g) Nrz~import sys,os,time;sys.stderr.write("pineapple\n");time.sleep(1);sys.stderr.write("pear\n");sys.stdout.write(sys.stdin.read())T)rrJrKrLrg333333?rlspineapple pear ) rrMrbrcrNrnrorrdencoders rtest_communicate_timeout(ProcessTestCase.test_communicate_timeouts   cnndCD 15#-??$.OO$.OO 5 *33Q]]H"%  '==? * *>?rc[R"[RSS/[RS9nUR [R URSS9 UR5up#UR[U5S5 g)Nrzimport 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));rg?rli) rrMrbrcrNrnrorrdlen)r&rTrKrs r%test_communicate_timeout_large_output5ProcessTestCase.test_communicate_timeout_large_outputsq   cnndEF%/OO 5 *33Q]]CPmmo  Vm4rc~SGH6nSGH+nSGH n0nU(a[RUS'U(a[RUS'U(a[RUS'U(dM][R"[40UD6nUR 5 UR b%UR UR R5 URb%UR URR5 URcMUR URR5 GM# GM. GM9 g)NFTrJrKrL) rrNrMrrrJ assertTrueclosedrKrL)r& stdin_pipe stdout_pipe stderr_pipeoptionsrTs rtest_communicate_pipe_fd_leak-ProcessTestCase.test_communicate_pipe_fd_leaks'J, #0K G!+5??(",6OO)",6OO)" "((DGDAMMOww*7xx+8xx+8#$1 -(rc[R"[RSS/5nUR 5up#UR US5 UR US5 g)Nrr^)rrMrbrcrrdrs rtest_communicate_returns(ProcessTestCase.test_communicate_returnssP   cnnd8: ;==? & &rc[R"5up[R"U5 [R"U5 [R"[ R SS[R-/[R[R[RS9nURURR5 URURR5 URURR5 S[R-nURU5upVURXT5 g)Nrzpimport sys,os;sys.stdout.write(sys.stdin.read(47));sys.stderr.write("x" * %d);sys.stdout.write(sys.stdin.read())rIa)rrrRrrMrbrcr PIPE_MAX_SIZErNrrKrLrJrrd)r&xyrTstring_to_writerKrLs rtest_communicate_pipe_buf)ProcessTestCase.test_communicate_pipe_bufswwy      cnndC&33 45 $.??$.OO$.OO 5 ' '  &!6!66==9 1rc*[R"[RSS/[R[R[RS9nUR UR R5 UR URR5 UR URR5 URRS5 URS5up#URUS5 URUS5 g)Nrz0import sys,os;sys.stdout.write(sys.stdin.read())rIr ssplits bananasplitr) rrMrbrcrNrrKrRrLrJrrrdrs rtest_writes_before_communicate.ProcessTestCase.test_writes_before_communicates   cnndCD$.??$.OO$.OO  5 ' '  &  i ==2 0 %rc r[RSS[-S-/nSGHn[R"U40S[R S[R US0D6nU UR RS5 UR R5 URURR5S5 UR RS 5 UR R5 URURR5 URURR5S 5 URURRS 5S 5 URURR5S 5 SSS5 GM g!,(df  GM=f) Nrimport 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");)rrrJrKTzline1 zline3 zline2 zline4 line5 line6 line7 line8)rbrc SETBINARYrrMrNrJrflushrdrKreadlinerRrr7)r&rA extra_kwargrTs r test_universal_newlines_and_text0ProcessTestCase.test_universal_newlines_and_text(s? NND y ( & &'(:K  >':??*2JOO*5t*=>A i(   !2!2!4i@ i( /  !2!2!4!*,  q!1!*,  !DF :s D9F&& F6 c|[R"[RSS[-S-/[R [R SS9nUR URR5 UR URR5 UR5up#URUS5 g)Nrr1zbuf = 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)rLrKrz#line2 line4 line5 line6 line7 line8) rrMrbrcr3rNrrKrRrLrrdrs r#test_universal_newlines_communicate3ProcessTestCase.test_universal_newlines_communicateOs   cnnd.: 8 8 9%/OO$.OO01! 3" ' '==? C Erc[R"[RSS[-[ R "S5-/[RSS9nURS5up#URURS5 g)Nrr1a s = sys.stdin.readline() assert s == "line1\n", repr(s) s = sys.stdin.read() assert s == "line3\n", repr(s) r)rJr line1 line3 r) rrMrbrcr3textwrapdedentrNrrdrrs r)test_universal_newlines_communicate_stdin9ProcessTestCase.test_universal_newlines_communicate_stdinhsq   cnnd.:X__N">##$$.??01 3==)9: q)rc[R"[[R[RSS9nUR 5 UR UR S5 g)NT)rJrKrr)rrMrrNrrdrrSs r.test_universal_newlines_communicate_input_none>ProcessTestCase.test_universal_newlines_communicate_input_nonevsF   _#-??$.OO04 6  q)rc<[R"[RSS[-[ R "S5-/[R[R[RSS9nURURR5 URURR5 URS5up#URURS5 URSU5 URUR!S 55 g) Nrr1a 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)rJrLrKrr=rzline1 line2 line3 line4 line5 zeline2 eline6 eline7 )rrMrbrcr3r>r?rNrrKrRrLrrdrrrrs r7test_universal_newlines_communicate_stdin_stdout_stderrGProcessTestCase.test_universal_newlines_communicate_stdin_stdout_stderrs   cnnd.:X__ N" ># # $$.??$.OO$.OO04! 6" ' '==)9: q) >G ))*DEFrcSHqnSU-n[RSU/n[R"U[R[RUS9nUR SS9upVUR US5 Ms g)N)zutf-16z utf-32-bez@import sys; sys.stdout.buffer.write('1\r\n2\r3\n4'.encode('%s'))r)rJrKrr rz1 2 3 4)rbrcrrMrNrrd)r&rrrApopenrKrLs r-test_universal_newlines_communicate_encodings=ProcessTestCase.test_universal_newlines_communicate_encodingss|0HLDNND$/D$$T+5??,6OO.68E#..R.8NF   V\ 20rc SHupSn[RSU/n[R"U[R[RSUS9nUR SS9upgUR USRU55 M g) N))rr )ru��)surrogateescapeu)backslashreplacez\x80\x80z2import sys; sys.stdout.buffer.write(b'[\x80\x80]')rr)rJrKrrr rz[{}])rbrcrrMrNrrdformat)r&rexpectedrrArIrKrLs rtest_communicate_errors'ProcessTestCase.test_communicate_errorss! F >DNND$/D$$T+5??,6OO.5,2 4E #..R.8NF   VV]]8%< =%! rc[(dSnOSn[(a[R"[R5up#US:aW[R"[RSU45 UR [R[RX#45 /n[R"5n[U5Hwn[RRU[R5nUR![R""U[R$[R&-55 My UR-SU-5 UR/5 [S5H'n[R0"UR355 M) [S5H{n[4R6"[8R:SS/[4R<[4R<[4R<S 9n U R?S 5S n URAU S 5 M} UHn [R0"U 5 M [BRD"U5 g![ [4a GNf=f![ a,nUR([(R*:waeSnA GMNSnAff=f!UHn [R0"U 5 M [BRD"U5 f=f) Niir~z4failed to reach the file descriptor limit (tried %d) rz-import sys;sys.stdout.write(sys.stdin.read())rIslimer)#r*resource getrlimit RLIMIT_NOFILE setrlimitrOSErrorrrmkdtemprangerr r rTESTFNappendopenO_WRONLYO_CREATerrnoEMFILEskipTestreverserRpoprrMrbrcrNrrdrrmtree) r& max_handlessofthardhandlestmpdiritmpfilerwrTdatahs rtest_no_leakingProcessTestCase.test_no_leakings yKK 8 %//0F0FG $;&&x'='=d|LOOH$6$68N8N%)L2!!# ";' ggll693C3CDGNN2777BKK 4J#KL( !#./0 OO 2Y'2Y$$cnnd'K&L,6??,6OO,6OO = }}W-a0  w/  MM& !GZ(  ww%,,.0  MM& !sJBI8J(A3I/:C(J(I,+I,/ J%9J J( J%%J((7KcUR[R"/SQ5S5 UR[R"/SQ5S5 UR[R"/SQ5S5 UR[R"/SQ5S5 UR[R"/S Q5S 5 UR[R"/S Q5S 5 UR[R"/S Q5S5 UR[R"SS/5S5 g)N)za b crorwz "a b c" d e)ab"c\roz ab\"c \ d)rtz \roz ab\"c " \\" d)za\\\bzde fgrpza\\\b "de fg" h)za\"brroz a\\\"b c d)za\\b crorwz "a\\b c" d e)za\\b\ crorwz "a\\b\ c" d eabr zab "")rdr list2cmdliner%s rtest_list2cmdline!ProcessTestCase.test_list2cmdlines 001DE& ( 001DE& ( 001EF+ - 001KL- / 001DE( * 001GH) + 001IJ+ - 00$<  "rc[R"[RSS/[RS9nUR UR R5 URUR55 [R"UR R5S5 UR5 URUR5S5 g)Nrzimport os; os.read(0, 1)rAr)rrMrbrcrNrrJrR assertIsNonepollrrrlr,rdrSs r test_pollProcessTestCase.test_polls   cnnd8:#-?? 4  & !&&(# !4(  1%rc[R"[5nURUR 5S5 URUR 5S5 gr{rrMrrdr,rSs r test_waitProcessTestCase.test_waits>   _ - 1% 1%rc[R"[RSS/5nUR [R 5nUR SS9 SSS5 URS[WR55 URUR [RS9S5 g!,(df  Na=f)Nrzimport time; time.sleep(0.3)-C6?rlz0.0001r) rrMrbrcrnror,rurvrrdr SHORT_TIMEOUT)r&rTrs rtest_wait_timeout!ProcessTestCase.test_wait_timeouts   cnn"$BD E   z88 9Q FF6F ": hAKK 01 (=(=>B: 9s B22 CcUR[5 [R"[S5 SSS5 g!,(df  g=f)Nr)rnrrrMrr%s rtest_invalid_bufsize$ProcessTestCase.test_invalid_bufsize's.  y )   _h 7* ) )s ; A c[R"[S5nURUR 5S5 [R"[SS9nURUR 5S5 g)Nr)rXrrSs rtest_bufsize_is_none$ProcessTestCase.test_bufsize_is_none-sR   _d 3 1%   _d ; 1%rc [R"[RSS/[R[R[R SUS9nUR RU5 [R"UR R55 URR5n[R"5 UR R5 SSS5 SUlSSS5 UR!WR"S5 UR!WU5 g![a NRf=f!,(df  N\=f!,(df  N^=f)NrzDimport sys;sys.stdout.write(sys.stdin.readline());sys.stdout.flush()r)rJrKrLrXrr)rrMrbrcrNrrJrrrRrlrKr5rSuppressCrashReportrZrdr)r&linerPrrT read_lines r_test_bufsize_equal_one'ProcessTestCase._test_bufsize_equal_one5s   s~~t645%/OO%/__%/%7%7&'1CEIJ GGMM$  HHQWW^^% &))+I,,.GGMMO/ AG!E" q) H- /.EEsCA9EED0*E0 D=:E<D==E E E Ec(SnURXSS9 g)Nzline Tr)rr&rs r test_bufsize_equal_one_text_mode0ProcessTestCase.test_bufsize_equal_one_text_modeKs $$TD$IrcS[RR5-nUR[S5 UR USSS9 SSS5 g!,(df  g=f)Nslinezline bufferingrFr)rlineseprassertWarnsRegexRuntimeWarningrrs r"test_bufsize_equal_one_binary_mode2ProcessTestCase.test_bufsize_equal_one_binary_modeQsN**,,  " ">3C D  ( (su ( ME D Ds A A!cpuc[S5HWnUR[5 [R"[ [R [R S9 SSS5 MY g!,(df  Mk=f)Nr~r)r\rnrrrMrrN)r&rms rtest_leaking_fds_on_error)ProcessTestCase.test_leaking_fds_on_errorXsNtA""#56  (2(297666s 7A(( A7 cSSKnUR [ R "S[<S35n[RSU/n[R"U[RSS9nU UR5SnSSS5 URWS 5 URURS5 g![[4a UR S5 Nf=f!,(df  Nd=f) 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 rT)rLrrr )msvcrtCrtSetReportModeAttributeError ImportErrorrdr>r?rrbrcrrMrNrrdr)r&rrrrrLs rtest_nonexisting_with_pipes+ProcessTestCase.test_nonexisting_with_pipeses :   # #$#%&   &~~tT*'1379%%'*F $ !,; , : MM8 9 :4TsB5*C5!CC C*c^/mU4Sjn[R"US9nUR5 UR[5 [ R "[[ R[ R[ RS9 SSS5 UR5 SnTHn[R"U5 M UbUeg!,(df  NF=f![a nUnSnAMGSnAff=f!UR5 SnTH4n[R"U5 M![a nUnSnAM.SnAff=f UbUef=f)Nc>[S5H=nTR[R"55 [R "S5 M? g)NgMbP?)r\extendrrtimesleep)rmfdss ropen_fds.open_fdss/2Y 2779% 5!r)targetrI) threadingThreadstartrnrZrrMrrNr rrR)r&rtexcfdrwrs @rtest_double_close_on_error*ProcessTestCase.test_double_close_on_errors "   H -   ""7+  '1(2(29, FFHCHHRL  !,+C FFHCHHRLC  sfC5AC  C5*C CC5 C2%C--C25ED&$E& D= 0D8 2E8D= = Ec&^^[R"[RSS/5mUR TR S5 /mUU4Sjn[ R"SU5nUR5 [(aSnOSnTR[RS9 UR TR USS 9 TR5 UR TR US S 9 UR5 UR S S U4S U4/T5 g)Nrzimport time; time.sleep(12)c>TRSTR545 TR5 TR5 TRSTR45 TR5 TRSTR45 g)Nthread-start-poll-resultthread-after-kill-and-waitthread-after-second-wait)r^r}rr,r)rresultssrkill_proc_timer_threadDProcessTestCase.test_threadsafe_wait..kill_proc_timer_threadsb NN6 D E IIK IIK NN8$//J K IIK NN6H Ir皙?rirlz*unexpected result in wait from main threadmsgz&unexpected result in second main wait.)rNrr)rrMrbrcrdrrTimerrr*r,rrr )r&rrexpected_errorcoderrs @@rtest_threadsafe_wait$ProcessTestCase.test_threadsafe_waits!>!@A $/ J OOC!7 8  9!" "$  '// 0 *<I  K  *<E  G  <79KL57IJL! "rcSRS5n[R"[RSU/5nUR UR S5[U55 g)N;)zimport subprocess, syszJretcode = subprocess.call([sys.executable, '-c', 'print("Hello World!")'])zassert retcode == 0rs Hello World!)r rrrbrcrrr)r&rrs rtest_issue8780ProcessTestCase.test_issue8780sQxx#$ ((#..$)EF ))/:E&MJrc[R"5up[R"5up4[R"5upV[R"S/XUS9 UR[ RRU55 UR[ RRU55 UR[ RRU55 g![a [ R "U5 [ R"U5 [ R "U5 [ R"U5 [ R "U5 [ R"U5 GNf=f)N*rI) rmkstemprrMrZrrRremover.r exists)r&ifhandleifnameofhandleofnameefhandleefnames r test_handles_closed_on_exception0ProcessTestCase.test_handles_closed_on_exceptions$++-#++-#++-    se8  /0 /0 /0  HHX  IIf  HHX  IIf  HHX  IIf   sC))BE;:E;c[R"[[R[R[RS9nUR UR R 5 UR URR 5 UR URR 5 URSS-5 g)NrIx) rrMrrNrrKrRrLrJrrSs rtest_communicate_epipe&ProcessTestCase.test_communicate_epipesw   _#-??$.OO$.OO 5 ' '  & dUl#rc~SSS/SSS4/SQSSS4[R"S5SS S 4/n[RRR [ RS 5 UH;up#pE[ R"X#S 9nXFlUR[U5U5 M= SSS5 g!,(df  g=f) N)lsT{z#)daaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTrzPrFz&)rz --my-optsrzPz my-tool.pyz4>rCr ) rr rrpatchobjectrrMrrdrepr)r&casesrr rsxrTs r test_reprProcessTestCase.test_repr s D aVUD"J K +UD _ a    -ua C E  ]] ' ' (8(8:J K(-$D$$S6#   a"-).L K Ks #AB.. B<c[R"[[RS9nUR UR R 5 UR5 URSS-5 g)Nrrr) rrMrrNrrJrRr,rrSs r!test_communicate_epipe_only_stdin1ProcessTestCase.test_communicate_epipe_only_stdinsH   _#-?? 4  &  dUl#rSIGUSR1zRequires signal.SIGUSR1rzRequires os.killgetppidzRequires os.getppidcSn[R"[RU5nUR[R[RU5 [RSS/nSHEnU[ R 0n[ R"U40UD6nUR5 SSS5 MG g!,(df  MY=f)Ncgr#r3)signumframes rhandler7ProcessTestCase.test_communicate_eintr..handler* rrz7import os, signal;os.kill(os.getppid(), signal.SIGUSR1)r) signalrrrbrcrrNrMr)r&r old_handlerrAstreamkwprocesss rtest_communicate_eintr&ProcessTestCase.test_communicate_eintr"s mmFNNG<   v~~{C89+F*//*B!!$-"-##%.-+--s B77 C /proc/%d/fdzLinux specificcS[R"5-n[R"U5nUR[5 [ [ [R[R[RS9 SSS5 [R"U5nURX#5 g!,(df  N6=f)NrrI) rgetpidlistdirrnr;r>rrrNrd)r& fd_directoryfds_before_popenfds_after_exceptions r!test_failed_child_execute_fd_leak1ProcessTestCase.test_failed_child_execute_fd_leak;s%ryy{2 ::l3   1 2 ##:??%??:?? D3!jj6 )?3 2s ;B// B=z+behavior currently not supported on WindowscUR[5n[R"/SQ5 SSS5 UR WR R S5 g!,(df  N5=f)N)/opt/nonexistent_binarywithsomerAr )rnrOrrardrfilenamers r%test_file_not_found_includes_filename5ProcessTestCase.test_file_not_found_includes_filenameMsI   0 1Q OOO P2 --/HI2 1s A A,cUR[5n[R"SS/SS9 SSS5 UR WR R S5 g!,(df  N5=f)Nexit0z/some/nonexistent/directoryr?)rnrOrrMrdrrrs r test_file_not_found_with_bad_cwd0ProcessTestCase.test_file_not_found_with_bad_cwdSsQ   0 1Q   fc]0M N2 --/LM2 1s A A+cUR[R[[R 5 UR[R [[R 5 gr#)rOrrMbytestypes GenericAliasCompletedProcessrvr%s rtest_class_getitems#ProcessTestCase.test_class_getitemsYsD j..u5u7I7IJ j99#>@R@RSr_winapizneed subprocess._winapic[R"[5nU [RR [R S[R RS9nUnURS5 URURS5 SUl SSS5 URUR5S5 SSS5 g!,(df  N7=f!,(df  g=f)NWaitForSingleObject return_valuersr) rrMrrrrr WAIT_OBJECT_0r,assert_called_once_with_handlerrd)r&rr mock_waits rtest_wait_negative_timeout*ProcessTestCase.test_wait_negative_timeout]s0 JJ%%""%'//==&?E) " 11$,,B"&   TYY[! ,T  Ts$AC%5C (C C C C*r3N)r5r6r7r8rUrZrgrprxr}rrrrrrrrrrrrrrrrrrrrrrrrskipIfr*r!r$r'r-r3r;rCrFrIrTrZr^rb base_prefixprefixra sysconfigis_python_buildrdrhrprtrzrrrrrrrrrrrr skipUnlessrhasattrrrrrrget_config_varrrrrrrrrr rrrr r#r+r.r7r:r@rCrFrJrQrqrxr~rrrrrrrrrequires_resourcerrrrrrrrrrrrr isdirrr rrrrr'r9r3rrrFrFws  ! ' F 5 54' ''(''% 5 4! +(<.)+ MD A 9__Y DEGFG __Y DE(F(__Y DE(F( * =&A N K __Y DE EF E__Y DE-F-$ C__S__ 224D4D __S__ 224 __Y..0:<4<44 * * *9 6 /= : 3** > 4>&))(A75.#A@B!B!FA75.#A@BB@ 002FG >H >__S\\W,:< __Y--.@AQF23___T2@B2B3<2,__Y--.@AQF9:___T2@B >B: >@6<02FG :H :*'/ /@&5"9,'2.& %FNE2 * *G83,>*1"f"$ && C8 &.,J N u% 9& 9'-R:2"h K1( $."$324 V,+- Y/.0&0-4 &&}ryy{'BC)+@+@ __Y MNJOJ __Y MNNON TY724 -4 -rrFc\rSrSrSrSrSrSrSrSr Sr S r S r S r S rS rSrSrSr\R("\S5S5rSrSrSrSr\R6"\S5S5rSrSrg)RunFuncTestCaseinc V[RSU/n[R"U40UD6$)Nrrbrcrr)r&rrBargvs r run_pythonRunFuncTestCase.run_pythonos&d+~~d-f--rcURS5nURURS5 UR[R 5 UR 5 SSS5 g!,(df  g=fr)r8rdrrnrrcheck_returncoder&cps rtest_returncodeRunFuncTestCase.test_returncodetsQ __7 8 +   z<< =    !> = =s A'' A5cUR[R5nURSSS9 SSS5 UR WR R S5 g!,(df  N5=f)Nr^Trr_)rnrrr8rdrrrs r test_checkRunFuncTestCase.test_check{sQ   z<< = OO6dO C> //4> =s A  A.cn[R"[SS9nURURS5 g)NTrr)rrrrdrr<s rtest_check_zeroRunFuncTestCase.test_check_zeros& ^^O4 8 *rcUR[R5 URSSS9 SSS5 g!,(df  g=f)Nrjrrl)rnrror8r%s r test_timeoutRunFuncTestCase.test_timeouts5   z88 9 OO.O ?: 9 9s : AcxURS[RS9nURSUR5 g)Nrrrr8rrNrurKr<s rtest_capture_stdout#RunFuncTestCase.test_capture_stdouts* ___Z___ E gryy)rcxURS[RS9nURSUR5 g)Nrrr)r8rrNrurLr<s rtest_capture_stderr#RunFuncTestCase.test_capture_stderrs1 __C$.OO5 gryy)rc[R"5nURUR5 UR S5 UR S5 UR SU[RS9nURSUR5 g)Nrrrrr) rrrrRrrr8rrNrurK)r&rr=s rr+RunFuncTestCase.test_check_output_stdin_argsj  # # % !   __I2 gryy)rczURSS[RS9nURSUR5 g)Nrr)rrKrrJr<s rr+RunFuncTestCase.test_check_output_input_args5 __Hjoo7 gryy)rc[R"5nURUR5 UR S5 UR S5 UR [SS9nURSUSS9nSSS5 URSWRRS5 URS URRS5 g!,(df  Na=f) NrrrrrrrrJr) rrrrRrrrnrr8rurrArs rr6RunFuncTestCase.test_check_output_stdin_with_input_args  # # % !     zKMPQ__%?+-W%>FM gq{{//23 gq{{//23 MMs 'C C"cUR[R5nURSS[RS9nSSS5 g!,(df  g=f)Nrrk)rmrK)rnrror8rN)r&rr=s rr)RunFuncTestCase.test_check_output_timeoutsC   z88 9Q3 !9B: 9 9s A  Ac[RR5nSUS'URSUS9nUR UR S5 g)NrrzCimport sys, os;sys.exit(33 if os.getenv("FRUIT")=="banana" else 31)r!)rrrr8rdr)r&rr=s rtest_run_kwargsRunFuncTestCase.test_run_kwargssM""w __M!') +rc[(aSOSn[R"U5nUcURUS35 [ U5n[ R "U[ RS9nURURS5 UR[5 [ R "U[ RSS9 SSS5 g!,(df  g=f)Nztree.comrz required for this testrrT)rKr ) r*rrrdr rrrrdrrnr)r&progr ress rtest_run_with_pathlike_path+RunFuncTestCase.test_run_with_pathlike_paths'YzD||D! < MMTF"9: ;~nnT**<*<= +   y ) NN4 (:(:$ G* ) )s %C  Cc[R"[R5nUSS/n[R "U5nUR URS5 g)Nrsimport sys; sys.exit(57)9)rrrbrcrrrdrr&r rAr^s r&test_run_with_bytes_path_and_arguments6RunFuncTestCase.test_run_with_bytes_path_and_argumentssC{{3>>*d78nnT" ,rc[[R5nUSS/n[R"U5nUR UR S5 g)Nrzimport sys; sys.exit(57)rb)r rbrcrrrdrrcs r)test_run_with_pathlike_path_and_arguments9RunFuncTestCase.test_run_with_pathlike_path_and_argumentss?'d67nnT" ,rz#Maybe test trigger a leak on UbuntucT[RSS/n[R"U0S9 g)Nrrrr6)r&rAs rtest_run_with_an_empty_env*RunFuncTestCase.test_run_with_an_empty_envs$f- t$rcURSSS9nURSUR5 URSUR5 g)Nz>import sys;sys.stdout.write('BDFL'); sys.stderr.write('FLUFL')Tcapture_outputrsFLUFL)r8rurKrLr<s rtest_capture_output#RunFuncTestCase.test_capture_outputsE __:-12 gryy) h *rcUR[SS9 URS[RS9 SSS5 g!,(df  g=f)Nz"STDOUT can only be used for stderrrrr)rnrr8rrr%s rtest_stdout_stdout"RunFuncTestCase.test_stdout_stdoutsG   z9< OO6#-#4#4  6<<RunFuncTestCase.test_run_with_shell_timeout_and_capture_outputsnn&  4 NN9D#*. 0 II2 3  [0#O!(#'  ( (( ,)J))+F ,sAB ,*BB cv[R"S5n[R"[R SSU/SS9nUR R5nUR[U5SU5 URUSRS55 URUS RS 55 g) Nz from subprocess import * run("echo hello", shell=True, text=True) check_output("echo hello", shell=True, text=True) z-Xwarn_default_encodingrTrmrrs:2: EncodingWarning: rs:3: EncodingWarning: ) r>r?rrrbrcrL splitlinesrdrrr)r&rr=liness rtest_encoding_warning%RunFuncTestCase.test_encoding_warning#s  ^^S^^-FdS+/1 $$& UQ. a++,LMN a++,LMNrr3N)r5r6r7r8r8r>rArDrGrKrNrrrrrZr_rdrgrr.r*rjrorrrvr{r)rrr9r3rrr4r4ns. "5 + @* * ** 49 , H--$IJ%K%+6 = = __Y KL (M ( Orr4cSH)n[(dM[R"U5 Us $ [R"S5e![a MPf=f)N)staffnogroupgrpnobody nfsnobodyz?No identified group name to use for this test on this platform.)rgetgrnamKeyErrorrr) name_groups r_get_test_grp_namer1sSH 3  Z(  I abb   sA AAzPOSIX specific testscb ^\rSrSrU4SjrSrSrSrSr"SS\ R5r \ R"S 5S 5r\ R"S 5S 5r\R""\R&R)S 5(+S 5S5rSr\R."\"\S5=(a \"\S5S5S5r\R."\"\S5S5S5r\R""\"\S5S5S5r\R."\"\S5S5S5r\R""\"\S5S5S5r\R."\"\S5S5S 5r\R."\"\S5S5S!5rS"r S#r!\R""\"=(d \"\S$5(+S%5S&5r#S'r$S(r%S)r&S*r'S+r(S,r)"S-S.\ R5r*\R""\R&R)S/5(+S05S15r+S2r,\R""\-R\S3:HS45S55r/S6r0S7r1S8r2S9r3S:r4S;r5S<r6\R""\-R\RoS=5S>5S?5r8S@r9SAr:SBr;SCrSFr?SGr@SHrASIrBSJrCSKrDSLrESMrFSNrGSOrHSPrISQrJSRrKSSrLSTrMSUrNSVrOSWrPSXrQSYrRSZrSS[rT\R""\-R\RoS\5=(a9 \R"S]5R\R"S^5R:HS_5S`5rW\XR"SaSb5Sc5rZSdr[Ser\Sfr]Sgr^Shr_Sir`SjraSkrbSlrcSmrd\XRSn5rf\XRSo5rgSprhSqriSrrjSsrk\R."\lStL=(a \"\lSu5Sv5Sw5rmSxrnSyroSzrpS{rq\R""\rR"S|5(+S}5\ R"S 5\ R"S~SS9S555rt\R""\rR"S|5(+S}5\R""\-R\S:gS5\ R"S~SS9S555ruSrvU=rw$)POSIXProcessTestCasei=c0>[TU]5 SUlg)Nz/_this/pa.th/does/not/exist)superr'_nonexistent_dirr& __class__s rr'POSIXProcessTestCase.setUp@s   =rc[R"UR5 URSUR-5 W$![a nUnSnAU$SnAff=f)Nz,chdir to nonexistent directory %s succeeded.)rchdirrrtrZ)r&rwdesired_exceptions r_get_chdir_exception)POSIXProcessTestCase._get_chdir_exceptionDs` - HHT** + IID++, -   "!" !  "s A A AAcUR5n[R"[RSS/UR S9nUR SU-5 g![a|nURURUR5 URURUR5 URURUR5 SnAgSnAff=f)Nrr r?Expected OSError: %s rrrMrbrcrrtrZrdrbstrerrorrr&rrTrws rtest_exception_cwd'POSIXProcessTestCase.test_exception_cwdQs 557 B  #..$!;%)%:%:   .77 D   .77 D D  E0A C!A2CCcUR5n[R"[RSS/UR S9nUR SU-5 g![a|nURURUR5 URURUR5 URURUR5 SnAgSnAff=f)Nrr r rrrs rtest_exception_bad_executable2POSIXProcessTestCase.test_exception_bad_executable`s 557 B  #..$!;,0,A,ACA II,/@@ A E   .44agg >   .77 D   .77 D D  ErcUR5n[R"URSS/5nUR SU-5 g![ a|nUR URUR5 UR URUR5 UR URUR5 SnAgSnAff=f)Nrr r) rrrMrrtrZrdrbrrrs rtest_exception_bad_args_0.POSIXProcessTestCase.test_exception_bad_args_0os 557 B  $"7"7r!BCA II,/@@ A E   .44agg >   .77 D   .77 D D  Es#A CA2C  Cc\rSrSrSrSrg)&POSIXProcessTestCase.PopenNoDestructoricgr#r3r%s r__del__.POSIXProcessTestCase.PopenNoDestructor.__del__rrr3N)r5r6r7r8rr9r3rrPopenNoDestructorrs rrzsubprocess._fork_execcSnX!l[R"S[S9 UR [ 5 UR S/5 SSS5 SSS5 g!,(df  N=f!,(df  g=f)NcUSnSR[R5R5n[R "USU-S-5 g)N z{:x}sOSError::r)rOrbEISDIRrrr)rA errpipe_writeerr_codes r proper_errorHPOSIXProcessTestCase.test_exception_errpipe_normal..proper_errorsA HM}}U\\299;H HH]K($:T$A Brsubprocess.os.waitpid side_effectnon_existent_command)rrrChildProcessErrorrnIsADirectoryErrorr)r& fork_execrs rtest_exception_errpipe_normal2POSIXProcessTestCase.test_exception_errpipe_normalsc !- ZZ/$57""#45&&(>'?@6775577s"A.A A. A+ 'A.. A<cz^SmU4SjnX!l[R"S[S9 UR [ R 5nURS/5 SSS5 SSS5 UR[T5[WR55 g!,(df  NE=f!,(df  NN=f)Nsޭc>>USn[R"UT5 g)Nrr)rr)rAr error_datas r bad_errorGPOSIXProcessTestCase.test_exception_errpipe_bad_data..bad_errors HM HH]J /rrrr) rrrrrnrSubprocessErrorrrurrvr)r&rrrwrs @rtest_exception_errpipe_bad_data4POSIXProcessTestCase.test_exception_errpipe_bad_datas)  !* ZZ/$57"":#=#=>!&&(>'?@?7 d:&AKK(89?>77s# B, BB, B) %B,, B:/proc/self/statuszneed /proc/self/statusch[R"SS/SS9nUR5HnURS5(dMUn O UR S5 [R"SS/SS9nUR5HnURS5(dMUn O UR WWSS 9 g) NcatrF)restore_signalssSigIgnz&SigIgn not found in /proc/self/status.Tz=restore_signals=True should've unblocked SIGPIPE and friends.r)rrrrrdassertNotEqual)r&default_proc_statusrdefault_sig_ign_maskrestored_proc_statusrestored_sig_ign_masks rtest_restore_signals)POSIXProcessTestCase.test_restore_signalss)55+, %'(224Dy))'+$5 MMB C)66+, $ &)335Dy))(,%6 02G!3  4rc"[R"[RSS/SS9n[R "S5n[ U5nURX#5 g![a)nUR[R:waeSnAgSnAff=f)Nrzimport os; print(os.getsid(0))T)start_new_sessionr) rrrbrcrgetsidintrPermissionErrorrbEPERM)r&r parent_sid child_sidrws rtest_start_new_session+POSIXProcessTestCase.test_start_new_sessionsy 7,,^^T+KL&*,F1JF I    6  ww%++%& &A B%B  Bsetpgidgetpgidz!no setpgid or getpgid on platformc"[R"[RSS/SS9n[R "S5n[ U5nURX#5 g![a)nUR[R:waeSnAgSnAff=f)Nrzimport os; print(os.getpgid(0))r) process_group) rrrbrcrrrrrrbr)r&r parent_pgid child_pgidrws rtest_process_group_0)POSIXProcessTestCase.test_process_group_0sy 9,,^^T+LM"#%F**Q-KVJ    8  ww%++%& rsetreuidzno setreuid on platformc v[R"5nUS:waSOSU/n[RS:waSOSn[b([R "U5 UR U5 UHnSHnURXES9 [R"[RSS /UUS9n[U[5(a![R "U5RnOUn[U5nUR!X5 SSS5 M M UR-[.5 [R0"[2S S 9 SSS5 UR-[45 [R0"[2[R6[R8S S 9 SSS5 [c<Ub8UR-[.5 [R0"[2US 9 SSS5 ggg![a SnGNf=f!["atn U R$[$R&:Xa0UR!U R([R5 Sn A GNKUR+U R(5 Sn A GNlSn A ff=f!,(df  GM=f!,(df  GNO=f!,(df  GN =f!,(df  g=f)Ndarwinrunknownr)user close_fdsrzimport os; print(os.getuid())rsr)r,rr)rgeteuidrbrpwdgetpwnamr^rsubTestrrrc isinstancervpw_uidrrdrrbEACCESrr|rnrr|r OverflowErrorrMr) r&uid test_usersname_uidrrruser_uid child_userrws r test_userPOSIXProcessTestCase.test_users jjl"e|e< "||x78Y ?  X&!!(+ D* \\t\A?!+!8!8!$!@!B%)*3 "5&dC00'*||D'9'@'@H'+H%([ ((>%BA+.  z *  ! !/ ;+  } -  ! !/&(iiRZZe M. ;8/"":.%%oHE/.0;E  +:77ell2 ,,QZZHH --ajj99 :BA(+ *. - /.sz'GI3'G2+AI3$J8J:J* G/.G/2 I0 + * * 9 Asetregidzno setregid() on platformc b[R"5nUS:waSOS/n[5n[bUR U5 X!/-HnSHnUR XES9 [ R"[RSS/UUS9n[U[5(a![R"U5RnOUn[U5nURX5 SSS5 M M UR'[(5 [ R*"[,SS9 SSS5 UR'[.5 [ R*"[,[R0[R2S S 9 SSS5 [c8UR'[(5 [ R*"[,US9 SSS5 gg![ a&n UR#U R$5 Sn A GNSn A ff=f!,(df  GM=f!,(df  N=f!,(df  N=f!,(df  g=f) Nrrr)grouprrzimport os; print(os.getgid())rsrr)r,rr)rgetegidrrr^rrrrbrcrrvrgr_gidrrdrr|rrnrr|rrrMr) r&gid group_listrrrr group_gid child_grouprws r test_groupPOSIXProcessTestCase.test_group"sjjl"e|e7 ') ?   j )%'E* \\\CA!+!8!8!$!@!B&+*3 "5&eS11(+ U(;(B(BI(-I&)&k ((@!DC+(,  z *  ! !/ <+  } -  ! !/&(iiRZZu N. ;"":.%%oZH/. '+6))!**556DC&+ *. - /.s[G+!'F8AG+G>88HH 8 G( G# G+#G( (G++ G; > H  H H.z setregid() available on platformcUR[5 [R"[SS9 SSS5 g!,(df  g=f)Nr rr r%s rtest_group_error%POSIXProcessTestCase.test_group_errorLs,   z *  ! !/ ?+ * *r  setgroupszno setgroups() on platformcb[R"5nUS:waSOS/nURXS9 g)Nrrrr)rr_test_extra_groups_impl)r&rrs rtest_extra_groups&POSIXProcessTestCase.test_extra_groupsQs.jjl"e|e7  $$$DrcJUR[R"5/S9 g)Nr)r rrr%s rtest_extra_groups_empty_list1POSIXProcessTestCase.test_extra_groups_empty_listWs $$"$Erc[5n[bURU5 [R"[ R SS/US9n[R"5n[R"U5n[bHUVs/sH:n[U[5(a [R"U5ROUPM< nnOUnUR[!U5[!U55 [c9UR+[,5 [R."[0U/S9 SSS5 ggs snf!["a6n UR%U R&5 UR)S5 Sn A NSn A ff=f!,(df  g=f)Nrz;import os, sys, json; json.dump(os.getgroups(), sys.stdout) extra_groupsz-setgroup() EPERM; this test may require root.)rrr^rrrbrcr getgroupsjsonloadsrrvrrrdsetrr|rrdrnrr|r) r&rrrr parent_groups child_groupsg desired_gidsrws rr ,POSIXProcessTestCase._test_extra_groups_impl[sF') ?   j ) C,,^^TRT!+-FLLNM::f-L)3 5)3A;EQ:L:L Q 6 6RS S)3 5  *   S.L0A B ;"":.%%o4><A/.  5 K   ajj ) MMI J J K /.s*&D0AD+E30 E0:,E++E03 FcdUR[5 [R"[S/S9 SSS5 UR[5 [R"[[ R [ RS/S9 SSS5 g!,(df  Ne=f!,(df  g=f)Nrsr'r)r,rr()rnrrr|rrrMrr%s r&test_extra_groups_invalid_gid_t_values;POSIXProcessTestCase.test_extra_groups_invalid_gid_t_values{ss   z *  ! !/ E+  z *  ! !/&(iiRZZ05w 8+ *+ *+ *sB9B! B! B/umaskzPOSIX umask() is not available.c Sn[R"5n[RR US5n[ R "[RSSU<S3/SS9 [R"U5RS-nSnURXC[U5S [U53S 9 Ub[R"U5 gg!Ub[R"U5 ff=f) Nbeansrzopen(z, 'w').close()+)r5iiz != r)rr[rr r rr|rbrcstatst_moderdoctrrg)r&rlnamer: expected_modes r test_umaskPOSIXProcessTestCase.test_umasks &%%'F77<<0D  ! !^^TU4(.+IJ ! ggdm++e3G!M   ]$' $6#7tCL>!J  L! f%"v! f%"s B,C C'c&[R"5 [R"[R SS/5nUR 5 SSS5 URWR*[R5 g!,(df  N:=f)Nrzimport os; os.abort()) rrrrMrbrcr,rdrrSIGABRTrSs rtest_run_abort#POSIXProcessTestCase.test_run_abortsa  ( ( *  #..$"9";rcl[R"SS5n[U5nURSU5 g)NrrEznon-zero exit status 2.rMrHs r$test_CalledProcessError_str_non_zero9POSIXProcessTestCase.test_CalledProcessError_str_non_zeros,++Az:3x  />rc[R"[RSS/[RSS9nU UR UR R5S5 SSS5 g!,(df  g=f)Nrrc0[R"SS5$)Nrapple)rputenvr3rr3POSIXProcessTestCase.test_preexec..s '70Kr)rK preexec_fnappleryrSs r test_preexec!POSIXProcessTestCase.test_preexecs^   cnndEF%/OO(K  M    QXX]]_h 7QQs +A-- A;c^Sn[R"[RSS/US9nUR S5 g![R a*nUR [RS5 SnAgSnAf[a)nURSURS5 SnAgSnAff=f) Nc[S5e)Nz'What if two swallows carried a coconut?rr3rrraise_it=POSIXProcessTestCase.test_preexec_exception..raise_itsFG Grrr rYzEException raised by preexec_fn did not make it to the parent process.z)Expected a ValueError from the preexec_fncoconutr) rrMrbrcrtrr _fork_execrrurA)r&r`rTrws rtest_preexec_exception+POSIXProcessTestCase.test_preexec_exceptions H 0  #..$!;,46A II/ 0)) A OO))? A A 0 MM)QVVAY / / 0s!&=B, A66 B,B''B,c \rSrSrSrSrSrg)+POSIXProcessTestCase._TestExecuteChildPopenicXXl[RR"U/UQ70UD6 gr#) _testcaserrMr)r&testcaserArBs rr4POSIXProcessTestCase._TestExecuteChildPopen.__init__s%%N    % %d .raise_its,,CE Er)rJrKrLrY)rnrrrsrrN)r&r`s r0test_preexec_errpipe_does_not_double_close_pipesEPOSIXProcessTestCase.test_preexec_errpipe_does_not_double_close_pipessY E  z99 :  ' 'o(oojoo)8 ( E; : :s AA// A=c[R"5n[R"5 UR[R"55 [R "[ RSS/SS9 UR[R"5S5 [R"5 UR[R"55 [R "[ RSS/SS9 UR[R"5S5 U(d[R"5 gg!U(d[R"5 ff=f)Nrr cgr#r3r3rrrWEPOSIXProcessTestCase.test_preexec_gc_module_failure.. trrbz#Popen enabled gc when it shouldn't.cgr#r3r3rrrWr{ r|rzPopen left gc disabled.) gc isenableddisabler.rrarbrcenabler)r&enableds rtest_preexec_gc_module_failure3POSIXProcessTestCase.test_preexec_gc_module_failures,,.  JJL   R\\^ , OOS^^T26'3 5   R\\^B D IIK OOBLLN + OOS^^T26'3 5 OOBLLN,E F 7 s D D??Erz!setrlimit() seems to fail on OS XcNSSKJnJnJn W"W5nUupgW"USU45 UR X#U5 [R"[RSS/SS9 UR S5 g![anUR U5 SnANSnAff=f![a gf=f)Nr)rWrY RLIMIT_NPROCrr cgr#r3r3rrrW@POSIXProcessTestCase.test_preexec_fork_failure.. r|rrbz.RLIMIT_NPROC had no effect; probably superuser) rVrWrYrrrdrrrarbrcBlockingIOError)r&rWrYrrlimitsrrjs rtest_preexec_fork_failure.POSIXProcessTestCase.test_preexec_fork_failure s   C C<( ,D *  8 L OOS^^T26'3 5 MMJ K  MM#      s( A/'B/ B9BB B$#B$c[R"5up[USSS9nURS[R -5 URS[ R-5 SSS5 [R"US5 [R"U5nUR5 [R"U5 URURS5 g!,(df  N~=fNwrM)rz#!%s z(exec '%s' -c 'import sys; sys.exit(47)' ir_)rrr_rr unix_shellrbrcrchmodrrMr,rrdr)r&rfnamefobjrTs rtest_args_string%POSIXProcessTestCase.test_args_string$ s$$&  "c"3 4 JJx'"4"44 5 JJB~~& '5    U #  % r*5 4s AC  C.cUR[[R[R SS/SS9 UR[[R[R SS/SS9 g)Nrr^r_ startupinfo creationflagsrnrrrarbrcr%s rr&POSIXProcessTestCase.test_invalid_args2 sb *joo>>457&(  * *joo>>457(*  ,rc@[RR5nSUS'[R"S/S[R US9nU UR URR5RS5S5 SSS5 g!,(df  g=fNrUrz echo $FRUITrr rKrs rZ rrrrrMrNrdrKr7rr&rrTs rtest_shell_sequence(POSIXProcessTestCase.test_shell_sequence= so"!w   m_A$.OO!' )   QXX]]_22<@( KQQs :B Bc>[RR5nSUS'[R"SS[R US9nU UR URR5RS5S5 SSS5 g!,(df  g=frrrs rtest_shell_string&POSIXProcessTestCase.test_shell_stringG sm"!w   ]!$.OO!' )   QXX]]_22<@( KQQs :B Bc[R"5up[USSS9nURS[R -5 URS[ R-5 SSS5 [R"US5 [R"U5n[R"U5 URUS5 g!,(df  Nd=fr)rrr_rrrrbrcrrrrarrd)r&rrrrfs rtest_call_string%POSIXProcessTestCase.test_call_stringQ s$$&  "c"3 4 JJx'"4"44 5 JJB~~& '5  __U # % R 5 4s AC Cc /nSHbnSHYn[RRX#5n[RRU5(dMHUR U5 M[ Md U(dUR S5 Sn[RRU5(a5[RR U5(dUR U5 UHun[R"SUS[RS9nU URURR5R5[US55 SSS5 Mw g!,(df  M=f) N)z/binz /usr/bin/z/usr/local/bin)bashkshz"bash or ksh required for this testz/bin/shzecho $0T)rcr rKr)rr r isfiler^rdislinkrrMrNrdrKr7rr)r&shellsr+r<shrTs rtest_specific_shell(POSIXProcessTestCase.test_specific_shell^ s=F'WW\\&/77>>"%%MM"%(>  MM> ?  77>>"  bggnnR&8&8 MM" B  r(29A  !6!6!8%G:LMs AE E) c[R"[R[R5n[R"[ R SS/S[R[R[RS9n[R"[RU5 URRS5 [XA5"U6 U$![R"[RU5 f=f)Nrzif 1: import sys, time sys.stdout.write('x\n') sys.stdout.flush() time.sleep(30) TrrJrKrLr) rSIGINTdefault_int_handlerrrMrbrcrNrKr7getattr)r&methodrArrTs r _kill_process"POSIXProcessTestCase._kill_processr s mmFMM63M3MN  6  #..$9%"& ,0'1(2(2 9A MM&-- 5  aD! MM&-- 5s AC'C?)netbsdopenbsdz"Due to known OS bug (issue #16762)cH[R"[RSS/S[R[R[RS9nUR R S5 [R"S5 [X15"U6 UR5 g)Nrzif 1: import sys, time sys.stdout.write('x\n') sys.stdout.flush() Trr) rrMrbrcrNrKr7rrrr)r&rrArTs r_kill_dead_process'POSIXProcessTestCase._kill_dead_process ss   cnnd5!" (,#-??$.OO$.OO 5  a 1 D! rcURS[R5nUR5up#UR SU5 UR UR 5S5 g)N send_signalsKeyboardInterruptr)rrrrrurr,r&rTrrLs rtest_send_signal%POSIXProcessTestCase.test_send_signal sJ   }fmm <MMO  *F3 AFFHa(rcURS5nUR5up#URUS5 URUR5[R *5 g)Nrr)rrrdr,rSIGKILLrs r test_killPOSIXProcessTestCase.test_kill sK   v &MMO  % FNN?3rcURS5nUR5up#URUS5 URUR5[R *5 g)N terminater)rrrdr,rSIGTERMrs rtest_terminate#POSIXProcessTestCase.test_terminate sK   { +MMO  % FNN?3rcDURS[R5 gNr)rrrr%s rtest_send_signal_dead*POSIXProcessTestCase.test_send_signal_dead s  v}}=rc&URS5 gNrrr%s rtest_kill_dead#POSIXProcessTestCase.test_kill_dead s 'rc&URS5 gNrrr%s rtest_terminate_dead(POSIXProcessTestCase.test_terminate_dead s  ,rc/nUHBn[R"U5n[R"U5nURX5U45 MD U$r#)rget_inheritabledupr^)r&save_fdsrr inheritablesaveds r _save_fdsPOSIXProcessTestCase._save_fds sFB,,R0KFF2JE JJ;/ 0 rcrUH1up#n[R"X2US9 [R"U5 M3 g)N)r)rdup2rR)r&rrrrs r _restore_fds!POSIXProcessTestCase._restore_fds s*&) "B{ GGE; 7 HHUO'*rcSnURU5nUHupEnUS:XdMUn O UHn[R"U5 M [R"[ R SS/U[R[RS9R5upxURUS5 URUS5 URU5 g!URU5 f=f)NrrrrIrZrx) rrrRrrMrbrcrNrrdr) r&rrJ saved_fdsrrrrrs rcheck_close_std_fds(POSIXProcessTestCase.check_close_std_fds sNN3' &/ "B{Qw'0 ) !'';)< #(oo(oo/0;{} C   S( +   S) ,   i (D  i (s BCC'c(URS/5 gr{rr%s rtest_close_fd_0$POSIXProcessTestCase.test_close_fd_0    !%rc(URS/5 gNrrr%s rtest_close_fd_1$POSIXProcessTestCase.test_close_fd_1 rrc(URS/5 g)Nrrr%s rtest_close_fd_2$POSIXProcessTestCase.test_close_fd_2 rrc*URSS/5 g)Nrrrr%s rtest_close_fds_0_1'POSIXProcessTestCase.test_close_fds_0_1    !Q(rc*URSS/5 g)Nrrrr%s rtest_close_fds_0_2'POSIXProcessTestCase.test_close_fds_0_2 rrc*URSS/5 g)Nrrrr%s rtest_close_fds_1_2'POSIXProcessTestCase.test_close_fds_1_2 rrc*UR/SQ5 g)N)rrrrr%s rtest_close_fds_0_1_2)POSIXProcessTestCase.test_close_fds_0_1_2 s   +rc[R"S5n[R"S5n[R"S5 [R"S5 [R"[ R SS/5R5 [R"US5 [R"US5 [R"U5 [R"U5 g![R"US5 [R"US5 [R"U5 [R"U5 f=f)Nrrrz*print('AssertionError:0:CLOEXEC failure.')) rrrRrrMrbrcr,r)r& new_stdin new_stdouts rtest_small_errpipe_write_fd0POSIXProcessTestCase.test_small_errpipe_write_fd sFF1I VVAY  ! HHQK HHQK   NND@B CCG46 GGIq ! GGJ " HHY  HHZ  GGIq ! GGJ " HHY  HHZ s A!C**AEc>[S5Vs/sHn[R"5PM nnUVVs/sHup4UPM nnnUHup4[R"U5 M [R "USS5 [R "USSS5 UR[S55n[U5Hup7[R"Xs5 M [R"[RSS/USUSUSS9nUR5 URU5 UHn[R "USS5 M [R "USS 5n [R "USS 5R#5n UR%U S 5 UR%U S 5 UHn[R&"U5 M gs snfs snnf!URU5 f=f!WHn[R&"U5 M f=f) NrSTDINrrZimport sys; got = sys.stdin.read();sys.stdout.write("got %s"%got); sys.stderr.write("err")rrIr~ got STDINerr)r\rrrunlinkrrmr enumeraterrrMrbrcr,rr7rrdrR) r&rmtempsrrtemp_fdsrtemp_fdrTrrs rtest_remapping_std_fds+POSIXProcessTestCase.test_remapping_std_fds s-21X6X!!#X6( ,12EyrEH2#  % # HHXa[( + HHXa[!Q 'uQx0I -#,X#6KBGGG($7 $$cnndN&O#1+#A;#A; ( !!),Q"''(1+t,C''(1+t,224C   S, /   S& ) Q726!!), s<GG;GA3G;7A+G%"BG;G;%G88G;;!Hc[S5Vs/sHn[R"5PM nnUVVs/sHupgUPM nnnUHupg[R"U5 M UR [S55n [ U5Hupj[R"X5 M [R"US5 [R"USS5 [R"[RSS/UUUS9n U R5 UHn[R"USS5 M [R"US5n [R"US5R!5n UR#U 5 UR%U S5 UR%U S 5 UHn[R&"U5 M gs snfs snnf!UR#U 5 f=f!UHn[R&"U5 M f=f) Nr r rrr rIr~r r)r\rrrrrrrrrmrrMrbrcr,r7rrrdrR)r&stdin_no stdout_no stderr_normrrrrrrrTrrs rcheck_swap_fds#POSIXProcessTestCase.check_swap_fds? s-21X6X!!#X6(-.92B.' "  % #uQx0I -#,X#6KBGGG($78,1a($$cnndN&O#$$ & "BHHRA&#ggi.ggi.446!!),   S, /   S& ) Q7.B!!),  s/GG ;G&C.G05G&G##G&&!HcURSSS5 URSSS5 URSSS5 URSSS5 URSSS5 URSSS5 g)Nrrr)rr%s r test_swap_fds"POSIXProcessTestCase.test_swap_fdso sn Aq!$ Aq!$ Aq!$ Aq!$ Aq!$ Aq!$rcUR[S55nUHFn[R"5n[R "UR 5U5 SSS5 MH [[S55[U5- R5n[R"U5 /SQn0n[X5H upIXHXy'M [R"S5n [[S55[U5- R5n [R"[R SU [#U 5/40UD6n UR%U S5 [X5HupI[R&"US[R(5 [R*"US5n [-[/[0U R3S555n[R"SUS US US US U S 3 5nUR%U /X5 M UR5U5 g!,(df  GM =f!UR5U5 f=f)Nr rIz 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')) rrr~rz" When testing z to z4 redirection, parent descriptor z5 got redirected to descriptor(s) z instead of descriptor z. )rr\rrrrrlr,rfrRzipr>r?rrarbrcrvrdrmSEEK_SETr7rmaprr8r)r&from_fdsto_fdsrfrom_fdf fd_to_close arg_namesrBto_fdr skipped_fdrf read_bytesread_fdsrs r#_check_swap_std_fds_with_one_closed8POSIXProcessTestCase._check_swap_std_fds_with_one_closedw sNN58, & )#++-GGAHHJ0.-$uQx=3x=8==?K HH[ !5IF"%h"7+2y'(#8??$DeAh-#f+5::c[R"[S5S5H;n[R"[S5S5HnUR X5 M M= g)Nr r) itertools combinationsr\ permutationsr-)r&r#r$s r!test_swap_std_fds_with_one_closed6POSIXProcessTestCase.test_swap_std_fds_with_one_closed sF!..uQx;H#00q1=88J>.prepare s/0 0rrbz1Expected ValueError or subprocess.SubprocessErrorr7z!Exception occurred in preexec_fn.) rrarrtrr|rdrdrvrassertIsNotNone)r&r8rs rtest_surrogates_error_message2POSIXProcessTestCase.test_surrogates_error_message s 1 K OO" $ III J ;   j33 4   SX'9 : :)) L  !6!6 7   SX'J K K Ls 0 C:A99C:CCcSGHSupURSS5nS[U5-n[RR 5nX%U'SUS'Un[ R "[RSU/US9nURS 5nURURS5[U55 URSS5nS [U5-n[RR 5nX5U'[ R "[RSU/US9nURS 5nURURS5[U55 GMV g) N))testuabc)utest42rrMz&import os; print(ascii(os.getenv(%s)))CLC_ALLrrs z'import os; print(ascii(os.getenvb(%s)))) rrrrrrrrbrcrrdr8r)r&keyvalue encoded_valuescriptr decoded_valuerKs rtest_undecodable_env)POSIXProcessTestCase.test_undecodable_env s-GJC!LL2CDM>S IF**//#CH CM!M,,v.F]]7+F   V]]73U=5I J**W&78C>cJF**//#C$H,,v.F]]7+F   V]]73U=5I J5Hrc,[R"[S5n[[SS5n[RR [S5up4[R"U5n[ R"U/U-5nURUS5 SUSRU5RS54-n[ R"USS9nURUS5 [RR5nX7S'[ R"U/U-US 9nURUS5 [RR5n[R"U5US '[ R"U/U-US 9nURUS5 g) Nrrs'%s' %s rTrPATHrsPATH)rrrrr r1rrardr rrrenvironb) r& abs_programrAr programexitcoderrenvbs rtest_bytes_program'POSIXProcessTestCase.test_bytes_program sCkk/!"45 OAB'( oa&89 ++g&??K=#56 1%K$)>)>w)GHH??3d3 1%jjooF ??G9T>s; 1%{{! D)W ??G9T>t< 1%rc[R"SSS9n[R"SSS9n[R"[R U/[R [R [R SS9nURURS5 [R"[R U/[R SS9nUR5upV[[[URS 555n[URR5URR5UR R5/5nUR#Xx-S U<S Xx-<35 g) Nzinput_reader.pysubprocessdatasubdir fd_status.pyF)rJrKrLrrrKr,zExpected no fds from z to be open in child, found )rfindfilerrMrbrcrNrrr,r"rr1rJrlrKrLr.) r&sleeper fd_statusp1p2rerror result_fds unwanted_fdss rtest_pipe_cloexec&POSIXProcessTestCase.test_pipe_cloexec s""#4=MN$$^TR5 g![a gf=fr#rProcessLookupError)r]srkill_p1BPOSIXProcessTestCase.test_pipe_cloexec_real_tools..kill_p1 #  %    !!cH>TR5 g![a gf=fr#rh)r^srkill_p2BPOSIXProcessTestCase.test_pipe_cloexec_real_tools..kill_p2 rlrmrTzThe child hung)rrZrrMrbrcrNrKrr,rJrrRselectrrdr7) r&qcatqgrepsubdatarorjro readfilesignored1ignored2r]r^s @@rtest_pipe_cloexec_real_tools1POSIXProcessTestCase.test_pipe_cloexec_real_tools s] 2BC  4DE{U"   s~~t4$.OOJOO(-/  s~~u>$&IIjoo(-/            t (. ryyk2r2(N% X  #34 )40  rc^ [R"SSS9n[R"5nUR [R US5 UR [R US5 [ U5m [S5Hgn[R"[R[R5nUR [R U5 T RU5 Mi T Hn[R"US5 M [R"[R U/[R"SS 9nUR%5upg[ ['[(UR+S 555nUR-UT -T S 5 [R"[R U/[R"SS 9nUR%5upg[ ['[(UR+S 555nUR/UT -S 5 UR1SUS 5 [ U 4Sj[S555n [R"[R U/[R"SU S9nUR%5upg[ ['[(UR+S 555nUR/X- T -S5 UR1SUS 5 g)NrWrTrUrr TFrXrYzSome fds were closedzSome fds were left openzSubprocess failedc3D># UHnTR5v M g7fr#)rf).0rrs r 6POSIXProcessTestCase.test_close_fds..W s;(Q(,,..(s rnrKrpass_fdsz'Some fds not in pass_fds were left open)rrZrrrrRr,r\r_devnullrpaddset_inheritablerrMrbrcrNrr"rr1rdr.ru) r&r\rrrrTrignored remaining_fds fds_to_keeprs @rtest_close_fds#POSIXProcessTestCase.test_close_fds3 s($$^r?rNrrrdrr,r"rrr1r.)r&r\rTr unused_stderr output_lines opened_fdsrs r%test_close_fds_when_max_fd_is_lowered:POSIXProcessTestCase.test_close_fds_when_max_fd_is_loweredc s $$^rrrzoutput=)rrZr\rr_rO_RDWRrrRr^rinsertrrMrbrcr7r1rrd frozenset) r&r\rrrstdout_rstdout_wrnumrs rtest_pass_fds_redirected-POSIXProcessTestCase.test_pass_fds_redirected sB$$^$.OOJOO M ALL+:w/+0 1rc [R"S5n[R"[R SS/[R SS9nURnURUR5 URURS5S5 URX1R"U///S5S5 UR5 g!UR5 f=f) Nrqrz$import sys;sys.stdout.write("apple")r)rKrXresapplg)r import_modulerrMrbrcrNrKrrRrdr7rurqr,)r&rqrTr&s rtest_select_unbuffered+POSIXProcessTestCase.test_select_unbuffered- s,,X6   cnnd:;%/OO%&  ( HH      QVVAY 0 MM!]]A3B s   cnnd01%/OO$.OO  5 ' '1ee  + +R,A BAC 9   j00 1 MM%1C1C!D1CA"Q%1C!D EC B"EsD2E 2 Ec R[R"[RSS/[R[RS9nUR UR R5 UR URR5 [U5nURn[R"S[45 Sn[R"5 SSS5 [ R""U[$R&5 [((a UR+[R,5 O:UR/U[R,Vs/sHn[U5PM sn5 [0R2"S5 UR5[65 [R"[8[R[RS9nSSS5 SSS5 UR5[6[ R:US5 [((a UR+[R,5 gUR=U[R,Vs/sHn[U5PM sn5 g!,(df  GN=fs snf!,(df  N=f!,(df  N=fs snf)Nrzimport time;time.sleep(3)rr rr)rrMrbrcrNrrKrRrLrrrrrr gc_collectrrrrr*r|r+rurrrnrZrwaitpidr)r&rTrrrrs r!test_leak_fast_process_del_killed6POSIXProcessTestCase.test_leak_fast_process_del_killedV s   cnnd./%/OO$.OO  5 ' '1ee  + +R,A BA    C V^^$ 9   j00 1 MM%1C1C!D1CA"Q%1C!D E 3   w '!!/)3)3:=A:( '2::sA6 9   j00 1   UJ4F4F$G4FqRU4F$G H5C B"E ::( '%Hs<I+I= 7J JJJ$ + I: J J J!c^[R"SSS9n[R"S5mUR [R T5 [ R"[RU/[ RSU4SjS9nUR5up4[[[URS555nUR!TU5 g) NrWrTrUrTc2>[R"ST5$r)rr)rsrrWCPOSIXProcessTestCase.test_close_fds_after_preexec.. s2r)rKrrYrY)rrZrrrrRrrMrbrcrNrr,r"rr1r)r&r\rTrrrrs @rtest_close_fds_after_preexec1POSIXProcessTestCase.test_close_fds_after_preexec s$$^ @--/CV\\$%789  ]+rc*SSKn[R"5nSn[R"5 SS/SS/4S/SSS/4S/S/SS/4S/S/SS44HnupEpgUR [ 5nUR XESSXgS S S S S S S S SSSS/SS US5 SSS5 URS[WR55 Mp U(d[R"5 gg!,(df  NU=f!U(d[R"5 ff=f)Nrcgr#r3r3rrrW5POSIXProcessTestCase.test_fork_exec.. s4rrsexeenvsargTr3rsrrr reFz takes exactly) _posixsubprocessr~rrrnrrrrvrr) r&r gc_enabledfuncrAexe_listr,env_listrs rtest_fork_exec#POSIXProcessTestCase.test_fork_exec s \\^   D IIKF8TF843TF84F8SF84F8T3/ 2- &&y1S$..b#BB1adAr1be%2   #cmm2DE-20 %21$ s$AC3-&C"1C3" C0 ,C33DcFSSKn"SS5n[R"5n[R"5 SSSSSU"S 5U"S 544H~nUR [ S R U5S 9nURS /S /SUSS/SSSSS S SSSSSSSSSSS5 SSS5 URS[WR55 M U(d[R"5 gg!,(df  NU=f!U(d[R"5 ff=f)Nrc$\rSrSrSrSrSrSrg)JPOSIXProcessTestCase.test_fork_exec_sorted_fd_sanity_check..BadInti TcXlgr#)rC)r&rCs rrSPOSIXProcessTestCase.test_fork_exec_sorted_fd_sanity_check..BadInt.__init__ s" rcVUR(aSUlUR$[e)NF)firstrCrr%s r__int__RPOSIXProcessTestCase.test_fork_exec_sorted_fd_sanity_check..BadInt.__int__ s ::!&DJ::%  r)rrCN)r5r6r7r8rrrr9r3rrBadIntr sE # !rr)rsrr rer)rvre)*l)rre)r2rrrnrrzfds_to_keep={}rsfalseTrrsr rer) rr~rrrnrrOrrurvrr)r&rrrrrs r%test_fork_exec_sorted_fd_sanity_check:POSIXProcessTestCase.test_fork_exec_sorted_fd_sanity_check s  ! !\\^   IIK!#F1I&   &&",33K@'BEF$..! XJk4&BB1adAdD"d$B mS-=>' * BB s$AD6+C0!1D0 C> :DD cb[R"[5nU [RR US5n[ URlUR5 URR5 SSS5 SSS5 g!,(df  N=f!,(df  g=f)NrJ) rrMrrrrBrokenPipeErrorrRrrassert_called_withr&rmock_proc_stdins r,test_communicate_BrokenPipeError_stdin_closeAPOSIXProcessTestCase.test_communicate_BrokenPipeError_stdin_close sm0 4::$$T730?O ! ! -      ! ! 4 4 64TT33TTs#!B AB>B  B B  B.c[R"[5nU [RR US5n[ URlURS5 URRS5 URR5 SSS5 SSS5 g!,(df  N=f!,(df  g=f)NrJstuff) rrMrrrrrrrrr$rRrs r,test_communicate_BrokenPipeError_stdin_writeAPOSIXProcessTestCase.test_communicate_BrokenPipeError_stdin_write s0 4::$$T730?O ! ! -   X &  ! ! 9 9( C  ! ! 9 9 ; 4TT33TTs#!B<AB+B<+ B9 5B<< C cZ[R"[RS/[R[RS9nU [ R RUS5n[[RS5n[URl UR5URlUR!S5 URR#5 SSS5 SSS5 SSS5 g!,(df  N=f!,(df  N(=f!,(df  g=f)N-hrrJwbr)rrMrbrcrNrrrr_rrrr4rrlr"rr$)r&rrdev_nulls r,test_communicate_BrokenPipeError_stdin_flushAPOSIXProcessTestCase.test_communicate_BrokenPipeError_stdin_flush s 6&0oo'184::$$T73RZZ&(0?O ! ! -2://2CO " " /   X &  ! ! 9 9 ; '4TT&&43TTs=!D&D A C:!D )D: D D  D D D*c[R"[RS/[R[RS9nU [ R RUS5n[URl URSS9 URR5 SSS5 SSS5 g!,(df  N=f!,(df  g=f)NrrrJirl) rrMrbrcrNrrrrrRrrr$rs r9test_communicate_BrokenPipeError_stdin_close_with_timeoutNPOSIXProcessTestCase.test_communicate_BrokenPipeError_stdin_close_with_timeout s 6&0oo'184::$$T730?O ! ! -   S  )  ! ! 9 9 ; 4TT33TTs$!C&?B6%C6 C C CN W_STOPCODEzneed _testcapi.W_STOPCODEc`[n[R"U5n[R"UR SS9 [ R"S5n[R"SUR U4S9 UR5nSSS5 URWS5 g!,(df  N!=f)NrrOr rr!) rrrMr wait_processr _testcapirrrr,rd)r&rArstatusrs r test_stopped!POSIXProcessTestCase.test_stopped s % TXX2%%a( ZZ/txx>P QJR R(R Qs 3B B-c[R"[5n[R"UR SS9 UR UR5 [R"S5nUR[R5 SSS5 WR5 URUR5 g!,(df  N:=f)Nrrzos.kill)rrMrrrrr|rrrrrrassert_not_calledr:)r&r mock_kills rtest_send_signal_race*POSIXProcessTestCase.test_send_signal_race# s0 TXX2 $//* ZZ "i   V^^ ,# ##% T__-# "s + B?? C c[R"[RSS/5nUR(d#UR 5 UR(dM#[ RRUSSS9 SUlUR[R5 SSS5 UR5 g!,(df  N=f)Nrzexit(1)r}cgr#r3r3rrrW=POSIXProcessTestCase.test_send_signal_race2..B sdrnew) rrMrbrcrr}rrrrrrrrSs rtest_send_signal_race2+POSIXProcessTestCase.test_send_signal_race29 s   cnndI> ?,, FFH,,,ZZ  q&l  ;AL MM&.. )< < ;s <'B<< C c[R"[RSS/[RS9nUR SS9 g![R a Of=fM-)Nrz+import os, time; os.close(1), time.sleep(2)rrkrl)rrMrbrcrNrror&rs r1test_communicate_repeated_call_after_stdout_closeFPOSIXProcessTestCase.test_communicate_repeated_call_after_stdout_closeG se!N!P'18    -,,   sAAAcS[S3n[SU5up#nURUR5S5 UR SU5 g)Nzif 1: import atexit import subprocess def dummy(): pass class AtFinalization: def __del__(self): print("OK") subprocess.Popen(zu, preexec_fn=dummy) print("shouldn't be printed") at_finalization = AtFinalization() rsOKs0preexec_fn not supported at interpreter shutdown)rr rdrru)r&rrrrs rtest_preexec_at_exit)POSIXProcessTestCase.test_preexec_at_exitR sR "#2!23   'tT2  e, I3Or HAVE_VFORKz!vfork() not enabled by configure.zsubprocess._USE_POSIX_SPAWNFrcUR[R5 [S5UlUR [5 [R "[RSS/5 SSS5 UR5 URURRS5 [RR[SS5 UR [5 [R "[RSS/5 SSS5 URUR SRS5 SSS5 g!,(df  N=f!,(df  NS=f!,(df  g=f)Nzjust testing argsrrrs _USE_VFORKF)rrr RuntimeErrorrrnrrbrcassert_called_once call_argsrArrrr.call_args_list)r&mock_fork_execs rtest__use_vfork$POSIXProcessTestCase.test__use_vforke s  --.%12E%F"   | , NNCNND&9 :-))+ 0055b9: ZZ  z< ?""<0f=>1   ^::2>CCBG H@ ?- ,10@ ?s0(E E.((E3E. E E+ 'E.. E<linuxzLinux only, requires strace.cZSnSnSnX/n[R"XC/-[R[RS9nURnUR nU(dSU;aURS5 URS S 9 [S [R"S U<S 35US9nURURS5 SSS5 SSSSS[R"53S4SSS[R "53S4S4HguppURU S 9 [S [R"SU SU<SU SU S3 5US9n UR#U RS5 SSS5 Mi g![ a SnSnGN.f=f!,(df  N=f!,(df  M=f)Nz/usr/bin/stracez6--trace=clone,clone2,clone3,fork,vfork,exit,exit_groupz /bin/true)rLrKrsr s+++ exited with 0 +++z,strace not found or not working as expected.default_is_vfork)r<rzQ import subprocess subprocess.check_call([z]))__run_using_commands (?i)vfork)z !use_vforkzsubprocess._USE_VFORK = Falser F)preexecr zpreexec_fn=lambda: NoneFsetgidzgroup=Tsetuidzuser=)rr zextra_groups=[]Tz: import subprocess zj try: subprocess.check_call( [z ], **dict(zN)) except PermissionError: if not z#: raise)rrrNrrrLrZrdrr r>r? assertRegexrrgetgidgetuidassertNotRegex)r& strace_binary strace_filter true_binarystrace_commanddoes_strace_work_processrfrL vfork_resultsub_namepreamblesp_kwargexpect_permission_errornon_vfork_results rtest_vfork_used_when_expected2POSIXProcessTestCase.test_vfork_used_when_expectedx s* P ! '7 '1~~"]2%??%--( $ *44B-44F *&8 MMH I \\1\ 2+OO),,7?"%@A)7 L   \--} =3 KA2 }5t<2ryy{m4d;: F AH8,#3OO)J"#. 8*E 789"%%&)7 $ ##$4$8$8-H-,F + BF  3 2,-,s,A E5AF A F5FF F F* )r)xr5r6r7r8r'rrrrrrMrrrrrrr)rr rrrr.r/rrr rrr!r$r r3r*r>rBrJrNrQr[rersrwrrbrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr-r3r;rGrQrbrxrr9st_devrrrequires_mac_verrrrrrrrrrrr cpython_onlyrrrrrrrrr rrrr,r0r"r:r9 __classcell__rs@rrr=s> ! B B B*J,, ZZ'(A)A  ZZ'(:):*__(;<<-/4/4,7 Y/JGB 4J<>9>9 Z02KL1FM1Ff__WR,.PQ?R?Z02MN'IO'IR__WR,.PQ@R@[13OPEQE [13OPFQFA@8__Y:gb'&:":68&8&(8 9? ? 80 %!1!1%2__ 446KL EM E*__  "EGLGL( + ,LL !N(2__S\\,,-BC9;;*) 4 4 >(- )2&&&))), !*+Z+`%()XK K&K:&6I.'R-=`__S\\,,Y7IWWV_++rwwy/A/H/HHEGI9GI9` b!$H%HBE<U4   1"F0)IV," %%N ''R7< < <$.>$Y =46 )6 ).,  P&__11,??8: ZZ'( ZZ-59 I:): I__11,??8: __S\\W,.LM ZZ-59?I:N:?IrrzWindows specific testsc\rSrSrSrSrSrSrSr\ RS5r Sr S r S rS rS rS rSrSrSrSrSrSrSrSrSrSrSrg)Win32ProcessTestCasei cSnSn[R"5nXlX#l[R"[ US9 g)Nrr r)r STARTUPINFOdwFlags wShowWindowrar)r&STARTF_USESHOWWINDOW SW_MAXIMIZErs rtest_startupinfo%Win32ProcessTestCase.test_startupinfo s< !  ,,. 2"- $/ 1rchSnSn[R"UUS9n[R"[US9 g)Nrr )rErFr)rrDrar)r&STARTF_USERSHOWWINDOWrHrs rtest_startupinfo_keywords.Win32ProcessTestCase.test_startupinfo_keywords s8!"  ,,)#  $/ 1rc ~[R"5n[RUl[RUl[ S5GHLn[n[[RS5n[R"UU[RUS9nU UR5 SSS5 URURS5 SSS5 URUR[R5 UR!UR"5 UR!UR$5 UR!UR&5 URUR [R5 URUR(S/05 GMO g!,(df  N=f!,(df  N=f)Nrr)rKrLrr handle_list)rrDrGrESW_HIDErFr\rr_rrrMrrrdrr| hStdInput hStdOutput hStdErrorlpAttributeList)r&rrrnullrs rtest_startupinfo_copy*Win32ProcessTestCase.test_startupinfo_copy sG ,,. (== ","4"4 qA!Cbjj#&$!''/3/9/@/@4?A$$&  !4'   [00'<< >   k33 4   k44 5   k33 4   [44j6H6H I   [88=":M N#T '&s$/(F.F($F. F+ 'F.. F< cSn[RRS5 [R"[R S-US9 g)Nz' a DOS box should flash briefly ... z# -c "import time; time.sleep(0.25)"r)rbrLrrrarc)r&CREATE_NEW_CONSOLEs rtest_creationflags'Win32ProcessTestCase.test_creationflags s8 CD=>&8 :rcpUR[[R[R SS/SS9 g)Nrr^cgrr3r3rrrW8Win32ProcessTestCase.test_invalid_args..sQrrbrr%s rr&Win32ProcessTestCase.test_invalid_argss1 *joo>>457%.  0rc"SS[5nUR[5 [R"[ U"5S9 SSS5 g!,(df  g=f)Nc\rSrSrSrSrg)4Win32ProcessTestCase.test_issue31471..BadEnviNr3)r5r6r7r8keysr9r3rrBadEnvrdsDrrfr)dictrnrrrMr)r&rfs rtest_issue31471$Win32ProcessTestCase.test_issue31471 s: T    y )   _&( ;* ) )s A  Act[R"[RSS/SS9nUR US5 g)Nrr^T)rr_r`res rr#Win32ProcessTestCase.test_close_fdss5 __cnnd8:(,. R rc SSKn[R"5nUR[RUS5 UR[RUS5 /nUH:n[R "US5 UR URU55 M< [R"[RSSRUS5/[RSS9nUR5upgURUR S5 [#UR%55 [R"[RSSRUS5/[R[RSS9nUR5upgURUR S5 UR'S U5 /n[R("5n S U0U l[R"[RSSRUS5/[R[RU SS 9nUR5upgURUR S5 UR'S U5 [,R."S [045 [R("5n S USS0U l[R"[RSSRUS5/[R[RU SS 9nUR5upgURUR S5 SSS5 g!,(df  g=f) NrrTrz2import msvcrt; print(msvcrt.open_osfhandle({}, 0))FrX)rKrLrsOSErrorrP)rKrLrrz.*overriding close_fds)rrrrrRrr^ get_osfhandlerrMrbrcrOrNrrdrrrrurDrUrrr) r&rrrkrrTrKrLrPrs rtest_close_fds_with_stdio.Win32ProcessTestCase.test_close_fds_with_stdiosggi #a&) #a&)B   r4 ( NN6//3 4   cnndRYYZabcZdeg$.OOu F q) FLLN   cnndRYYZabcZdeg$.OOJOOW[ ] q) j&)  ,,. '4k&B #   cnndRYYZabcZdeg$.OOJOO)4 F q) j&) + +-E-;-=>$002K+8'!**EK '  #..$"V"]"]^efg^h"i"k(2 -8EKA]]_NF   Q\\1 ->>>s B'M  Mcn[R"5n0Ul[R"[US9 g)NrrrDrUrarr&rs rtest_empty_attribute_list.Win32ProcessTestCase.test_empty_attribute_listLs) ,,. &( #$/ 1rcr[R"5nS/0Ul[R"[US9 g)NrPrrqrrs rtest_empty_handle_list+Win32ProcessTestCase.test_empty_handle_listRs. ,,. '4b&9 #$/ 1rc"[RR5nSUS'[R"S/S[R US9nU UR SURR55 SSS5 g!,(df  g=fNphysalisrr,rrsphysalis rrrrrMrNrurKr7rs rr(Win32ProcessTestCase.test_shell_sequenceXsb"$w   eWA$.OO!' ) MM+qxx}} 7QQs +B Bc [RR5nSUS'[R"SS[R US9nU UR SURR55 SSS5 g!,(df  g=fryr{rs rr&Win32ProcessTestCase.test_shell_stringbs`"$w   U!$.OO!' ) MM+qxx}} 7QQs +A?? B c 8SHn[RR5nSUS'[R"SS[R UUS9nU UR SURR5U5 SSS5 M g!,(df  M=f)N)ansioemrzrr,r)r rKrrr{)r&encrrTs rtest_shell_encodings)Win32ProcessTestCase.test_shell_encodingslst"CZZ__&F(F7O  a(2%+*-/A j!((--/3?#s ,B  B cv[R"[RS-5nUR US5 g)Nz -c "import sys; sys.exit(47)"r_r`res rr%Win32ProcessTestCase.test_call_stringxs. __S^^=>? R rc[R"[RSS/[R[R[RS9nU UR R S5 [X15"U6 UR5upEURUS5 UR5nSSS5 URWS5 g!,(df  N!=f)Nrzif 1: import sys, time sys.stdout.write('x\n') sys.stdout.flush() time.sleep(30) rIrrr) rrMrbrcrNrKr7rrrdr,r)r&rrArTrrLrs rr"Win32ProcessTestCase._kill_process~s   cnnd5!" $.??$.OO$.OO 5 HHMM!  A  % IA   VS )J J*Qs AC Cc[R"[RSS/[R[R[RS9nU UR R S5 [R"S5 [X15"U6 UR5upEURUS5 UR5nSSS5 URWS5 g!,(df  N!=f)Nrzif 1: import sys, time sys.stdout.write('x\n') sys.stdout.flush() sys.exit(42) rIrrr) rrMrbrcrNrKr7rrrrrdr,)r&rrArTrrLrfs rr'Win32ProcessTestCase._kill_dead_processs   cnnd5!" $.??$.OO$.OO 5 HHMM!  JJqM A  % IA   VS )B R Qs A4C$$ C2cDURS[R5 gr)rrrr%s rr%Win32ProcessTestCase.test_send_signals =&..9rc&URS5 grrr%s rrWin32ProcessTestCase.test_kills 6"rc&URS5 grrr%s rr#Win32ProcessTestCase.test_terminates ;'rcDURS[R5 gr)rrrr%s rr*Win32ProcessTestCase.test_send_signal_deads  v~~>rc&URS5 grrr%s rr#Win32ProcessTestCase.test_kill_deads 'rc&URS5 grrr%s rr(Win32ProcessTestCase.test_terminate_deads  ,rr3N)r5r6r7r8rIrMrWr\rrr>rhrrnrsrvrrrrrrrrrrrrr9r3rrrBrB s 11 O6:0 <<!0.d1 1 88 @! +*!.:#(?(-rrBc\rSrSr"SS\R 5r\RR\R S5S5r Sr Sr Sr S rS rS rg ) MiscTestsic,^\rSrSr/rU4SjrSrU=r$)MiscTests.RecordingPopenic\>[TU]"U0UD6 URRU5 gr#)rrinstances_createdr^)r&rArBrs rr!MiscTests.RecordingPopen.__init__s) G d -f -  " " ) )$ /rr3)r5r6r7r8rrr9r?r@s@rRecordingPopenrs 0 0rr _communicatec ^[Ul[RR [ R S5n[Ul[RR [ SUR5 UR[5 U"[RSS/4S[ R0UD6 SSS5 SSS5 URSSH5nURU[R"SS9SUR35 M7 /nURH.nU[R"S S9:XdMURU5 M0 UR!UR"S URS 9 UR%['U5SURS 9 SSS5 URR(R+5nUR-5 UR/5 UR%/URR(5 g!,(df  GN[=f!,(df  GNe=f!,(df  N=f!URR(R+5nUR-5 UR/5 UR%/URR(5 f=f) N_waitrMrzLimport time time.sleep(9) import sys sys.stderr.write('\n!runaway child!\n')rKrrlz.no open-ended wait() after the first allowed: g?rr)KeyboardInterruptrrrrrrMrrnrbrcrr rrar^assertLessEqual call_countrdrrrfrr,)r&popenermock__communicaterB mock__waitra sigint_callsrs r_test_keyboardinterrupt_no_kill)MiscTests._test_keyboardinterrupt_no_kills0):% H"":#3#3W=*; &ZZ&&z7'+':':<**+<="M!NE(2'9'9E>DE><'55ab9D'' $))D"9L)889;<: " &55Dtyy66$++D16$$Z%:%:A)3)B)B%D  \!2A%/%>%>!@->4));;??AG LLN LLN   R!4!4!F!F G/>=<< >=4));;??AG LLN LLN   R!4!4!F!F Gs[.I;H/6H +H 7H?A7H/:AH/I H H H, 'H// H=9IA,J,c@UR[RSS9 gNgT㥛 @rl)rrrar%s r#test_call_keyboardinterrupt_no_kill-MiscTests.test_call_keyboardinterrupt_no_kills ,,Z__e,Lrc@UR[RSS9 gr)rrrr%s r"test_run_keyboardinterrupt_no_kill,MiscTests.test_run_keyboardinterrupt_no_kills ,,Z^^U,Krc,SnURU5 g)Nc^[R"U0UD6n[e!,(df  g=fr#)rrMr)rArBunused_processs rpopen_via_context_manager[MiscTests.test_context_manager_keyboardinterrupt_no_kill..popen_via_context_managers&!!4262n''32s ,)r)r&rs r.test_context_manager_keyboardinterrupt_no_kill8MiscTests.test_context_manager_keyboardinterrupt_no_kills ( ,,-FGrcUR[R"S5S5 UR[R"S5S5 Sn[R "5n[ RRUS5n[R"[(aSOSU-5up4URUS5 Ub[ R"U5 gg!Ub[ R"U5 ff=f)Nz echo xyzzyxyzzy)rrrztype zcat r) rdr getoutputgetstatusoutputrr[rr r r*rrmdir)r&dirr<rrs rtest_getoutputMiscTests.test_getoutputs --l;WE 33LA% '  ""$C77<<U+D'77%I6T9;NF    * s s A/CC6c\1Skn[[R5n[5nSSKn[RR 5HKupVUR S5(aM[XdR45(aM:URU5 MM URX#U- 5 g)N>rrrHandlerwrr) r,r__all__r__dict__itemsrr ModuleTyperrd)r&intentionally_excludedexportedpossible_exportsrr<rCs r test__all__MiscTests.test__all__s!Rz))*5%..446KDs##%"2"2!455   & 7 6L#LMrr3N)r5r6r7r8rrMrrrrrrrrrrr9r3rrrrs_0))0 ZZz''8)H9)HVMLH & Nrr PollSelectorz!Test needs selectors.PollSelectorc \rSrSrSrSrSrg)ProcessTestCaseNoPolli c[RUl[R[l[ R U5 gr#)r_PopenSelector orig_selector selectorsSelectSelectorrFr'r%s rr'ProcessTestCaseNoPoll.setUp#s,'66$-$<$< !d#rcXUR[l[R U5 gr#)rrrrFr1r%s rr1ProcessTestCaseNoPoll.tearDown(s$($6$6 !  &r)rNr4r3rrrr s $ 'rrzWindows-specific testscR^\rSrSrU4SjrU4SjrSrSrSrSr Sr S r U=r $) CommandsWithSpacesi-c>[TU]5 [R"SS5upUR 5Ul[ R"US5 [ R"U5 g)Nz.pyzte stsVimport sys;sys.stdout.write('%d %s' % (len(sys.argv), [a.lower () for a in sys.argv]))) rr'rrrGrrrrR)r&r&rrs rr'CommandsWithSpaces.setUp0sN  ##E73[[^  c   rcb>[R"UR5 [TU]5 gr#)rrrrr1rs rr1CommandsWithSpaces.tearDown9s $** rc[RUS'[R"U0UD6nU URURR 5R S5SUR-5 SSS5 g!,(df  g=f)NrKmbcsz2 [%r, 'ab cd'])rrNrMrdrKr7r8r)r&rArBrTs r with_spacesCommandsWithSpaces.with_spaces=se%??x   d -f -    hhmm%%f-$**, QQs AA<< B c nURS[R<SUR<SS<S3SS9 g)N"" "ab cdrrrrbrcrr%s rtest_shell_string_with_spaces0CommandsWithSpaces.test_shell_string_with_spacesFs- S^^TZZ-46=>  @rcZUR[RURS/SS9 g)Nrrrrr%s rtest_shell_sequence_with_spaces2CommandsWithSpaces.test_shell_sequence_with_spacesKs$ #..$**g>aHrc pURS[R<SUR<SS<S35 g)Nrrrrr%s rtest_noshell_string_with_spaces2CommandsWithSpaces.test_noshell_string_with_spacesOs$ S^^TZZ$& 'rc\UR[RURS/5 g)Nrrr%s r!test_noshell_sequence_with_spaces4CommandsWithSpaces.test_noshell_sequence_with_spacesTs #..$**g>?r)r) r5r6r7r8r'r1rrrrrr9r?r@s@rrr-s/@ I' @@rrc2\rSrSrSrSrSrSrSrSr g) ContextManagerTestsiYc[R"[RSS/[R[RS9nUR UR R5S5 UR URR5S5 SSS5 URWR R5 URURR5 g!,(df  NY=f)NrzAimport sys;sys.stdout.write('stdout');sys.stderr.write('stderr');rsstdoutsstderr) rrMrbrcrNrdrKr7rLrrrs r test_pipeContextManagerTests.test_pipe[s   s~~t =>&0__%/__ 6 :>   T[[--/ ;   T[[--/ ;6  **+  **+66s AC,, C:c[R"[RSS/5nSSS5 UR WR S5 g!,(df  N+=f)Nrzimport sys; sys.exit(100)d)rrMrbrcrdrrs rr>#ContextManagerTests.test_returncodehsL   s~~t:<=@D = #. ==s A Ac[R"[RSS/[RS9nUR S5 UR URS5 SSS5 g!,(df  g=f)Nrz2import sys;sys.exit(sys.stdin.read() == 'context')rscontextrrrs rr*ContextManagerTests.test_communicate_stdinosd   s~~tHI$.??48<   Z (   T__a 0 444s .A,, A:cUR[5 [R"[[R [R S9nSSS5 SSS5 g!,(df  N=f!,(df  g=f)Nr)rnrrrMrrNrs rr%ContextManagerTests.test_invalid_argswsV   1 2!!/)3)3:=A:3 2::3 2s#7A1 A A1 A. *A11 A?c[R"[[R[R S-S9nUR 5nURRS[R -5 URUR5 UR[URSSS5 URURS5 URURR 5 g)Nr)rJrXrr)rrMrrNrr' __enter__rJrr|rrnrZ__exit__rdrrrs rtest_broken_pipe_cleanup,ContextManagerTests.test_broken_pipe_cleanup~s&0oo(/(=(=a(?A~~  5 556 $//* '4==$dC !,  ))*rr3N) r5r6r7r8rr>rrrr9r3rrrrYs ,/1+rr__main__)Hrrr>r test.supportrrrrtest.support.script_helperr rrbrrPr0rrbrrrrrr,rqrrr~r>r*test.support.os_helperr rrrrrVrPGOrhas_subprocess_supportrr*r3rrONotADirectoryErrorrrrcrrTestCaser Exceptionr;rMr>rFr4rr)rr.rBrr/rrrr5mainr3rrr s(&"(7       + ;;   9 ::%%   = >> \\W $  @II)');_M>>40( 8$$ &  >j..>t-lt-n/@Ol@OF c 23}I<}I4}I@4 Y 89{-<{-:{-zaN!!aNH WY78:'O':' Y 89(@,(@:(@V3+,3+l z MMO_{I  C CH  EsTH&H5 III"&H21H25IIIIII"I)