a  ze]h@sddlZddlZddlZddlZddlZddlmZddlZddlmZddlmZddl m Z ddl m Z ejdkrddlmZejd d gZejd d d gZd dZGdddejZGddde jZGdddZejdkr|GdddeZGdddee jZedGdddee jZGdddee jZGdddee jZd d!Z e!e d"Gd#d$d$ee jZ"nGd%d&d&ee jZ#Gd'd(d(Z$e%d)kre&dS)*N)mock)base_subprocess) subprocess)utils)supportwin32) unix_events-czimport time; time.sleep(3600);) import syszdata = sys.stdin.buffer.read()zsys.stdout.buffer.write(data)cCstddSN)asyncioZset_event_loop_policyrrU/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_asyncio/test_subprocess.pytearDownModulesrc@seZdZddZdS)TestSubprocessTransportcOs.t|_d|j_d|j_d|j_d|j_dS)N)rMock_procstdinstdoutstderrpid)selfargskwargsrrr_start!s  zTestSubprocessTransport._startN)__name__ __module__ __qualname__rrrrrr srcs6eZdZfddZd ddZddZdd ZZS) SubprocessTransportTestscs$t||_||jdSr )supersetUpZ new_test_looploopset_event_loopr __class__rrr"*s  zSubprocessTransportTests.setUpNc Cs>t}d|j_d|j_t|j|dgddddd|d }||fS)NFtestr)waiter)rrconnection_madeZ _is_coroutineprocess_exitedrr#)rr)protocol transportrrrcreate_transport/s  z)SubprocessTransportTests.create_transportcCs|j}||\}}|d|j|||d||jj ||j j ||j j ||j j dd| |||j||j||j|t|jtj|t|j|t|j|dS)Nrr )r# create_futurer._process_exitedrun_until_complete assertEqualget_returncode assertTruer*calledr+Zconnection_lostZ call_args assertFalseZ is_closing assertIsNoneZ_looprZ _protocol assertRaisesProcessLookupError send_signalsignalSIGTERM terminatekillcloserr)r-r,rrrtest_proc_exited8s&      z)SubprocessTransportTests.test_proc_exitedcCs||j}||\}}|d|j||t|dd|_|t|dd|_d|_|t|d| dS)Nr/z-z(z%) r#r0r.r1r2r3reprZ _returncode_pidr@rArrrtest_subprocess_reprRs(   z-SubprocessTransportTests.test_subprocess_repr)N)rrrr"r.rBrE __classcell__rrr&rr )s  r c@seZdZddZddZddZddZd d Zd d Ze e j d kdddZ ddZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6Z d7d8Z!d9d:Z"d;d<Z#d=d>Z$d?S)@SubprocessMixincsPtfdd}|d}t|d}|j|\}}||d||ddS)NcshtjtjtjdIdH}|j||jIdH|j|j IdH}| IdH}||fSN)rr) r create_subprocess_execrPIPErwritedrainr@rreadwait)dataprocexitcoderrrrunos  z.SubprocessMixin.test_stdin_stdout..run some datagN@r) PROGRAM_CATr wait_forr#r2r3rrStaskrQrrrRrtest_stdin_stdoutls   z!SubprocessMixin.test_stdin_stdoutcsRtfdd}|d}t|tj}|j|\}}||d||ddS)Ncs:tjtjtjdIdH}||IdH\}}|j|fSrH)r rIrrJ communicate returncode)rOrPrrrRrrrSsz-SubprocessMixin.test_communicate..runrTr)rUr rVrZ LONG_TIMEOUTr#r2r3rWrrRrtest_communicates  z SubprocessMixin.test_communicatecCs2|jtd}|j|}||ddS)Nzexit 7r#r2r create_subprocess_shellrNr3rrPrQrrr test_shells zSubprocessMixin.test_shellcCs6|jtjddd}|j|}||ddS)Nzexit 8T)start_new_sessionr^r`rrrtest_start_new_sessionsz&SubprocessMixin.test_start_new_sessioncCsZt}|jtj|}||j|}tjdkrF| |t n| t j |dSNr)PROGRAM_BLOCKEDr#r2r rIr?rNsysplatformassertIsInstanceintr3r<SIGKILLrrrPr[rrr test_kills zSubprocessMixin.test_killcCsZt}|jtj|}||j|}tjdkrF| |t n| t j |dSre)rfr#r2r rIr>rNrgrhrirjr3r<r=rlrrrtest_terminates zSubprocessMixin.test_terminaterzDon't have SIGHUPc sttjtj}zhd}tjd|g}jtj|dt j i}fdd}j||} tj |Wttj|nttj|0dS)Nz.send_signal) r<rpSIG_DFLrg executabler#r2r rIrrJr3)rZ old_handlercoderrPr;r[rr%rtest_send_signals  z SubprocessMixin.test_send_signalcCs0dtj}|jtjtjddtj d}||fS)Nxr passr) rZ PIPE_MAX_SIZEr#r2r rIrgrsrrJ)r large_datarPrrrprepare_broken_pipe_tests z(SubprocessMixin.prepare_broken_pipe_testcCsp|\}}dd}|||}t&|ttf|jj|Wdn1sR0Y|j|dS)Ncs0tdIdH|j||jIdHdS)Ng?)r sleeprrKrL)rPrOrrr write_stdins z;SubprocessMixin.test_stdin_broken_pipe..write_stdin) rz test_utilsdisable_loggerr9BrokenPipeErrorConnectionResetErrorr#r2rN)rrPryr|cororrrtest_stdin_broken_pipes    "z&SubprocessMixin.test_stdin_broken_pipecCsB|\}}|jdd|j|||j|dS)NcSsdSr r)r#msgrrrzESubprocessMixin.test_communicate_ignore_broken_pipe..)rzr#Zset_exception_handlerr2rZrN)rrPryrrr#test_communicate_ignore_broken_pipes z3SubprocessMixin.test_communicate_ignore_broken_pipecsbdddfdd}j|\}}|d|jj|jjdS)N cs|ddddf}jjfdd}|j_tjtjd|tjjtjjdIdH}|j d }| IdH\}}||fS) N r zsys.stdout.write("x" * %s)sys.stdout.flush()cs4|i|IdH\}}t|_t|_||fSr )rr pause_readingresume_reading)rkwr-r,connect_read_piperrconnect_read_pipe_mocks  z^SubprocessMixin.test_pause_reading..test_pause_reading..connect_read_pipe_mockr )rrlimitr) joinr#rr rIrgrsrrJZ _transportZget_pipe_transportrZ)rtrrPZstdout_transportrrrrsizerrtest_pause_reading s"   z>SubprocessMixin.test_pause_reading..test_pause_readingrv)r#r2r3r5rr6r)rrrr-rrrrs "z"SubprocessMixin.test_pause_readingcCs<dd}|j|d\}}||d||ddS)Nc sZd}tjtjd|tjjtjjtjjddIdH}||IdH\}}|IdH}||fSN5import sys; data = sys.stdin.read(); print(len(data))r Frrr close_fdsr rIrgrsrrJrZrN)messagertrPrrrQrrr len_message6s z?SubprocessMixin.test_stdin_not_inheritable..len_messageabc3rr#r2r3rstrip)rroutputrQrrrtest_stdin_not_inheritable3s z*SubprocessMixin.test_stdin_not_inheritablecCs:dd}|j|\}}||d||ddS)Nc sZd}tjtjd|tjjtjjtjjddIdH}|dIdH\}}|IdH}||fS)Nrr FrrrrtrPrrrQrrr empty_inputIs z5SubprocessMixin.test_empty_input..empty_input0rrrrrrQrrrtest_empty_inputGs z SubprocessMixin.test_empty_inputcCs:dd}|j|\}}||d||ddS)Nc sXd}tjtjd|tjjtjjtjjddIdH}|IdH\}}|IdH}||fSr) r rIrgrsrDEVNULLrJrZrNrrrrr\s z7SubprocessMixin.test_devnull_input..empty_inputrrrrrrrtest_devnull_inputZs z"SubprocessMixin.test_devnull_inputcCs6dd}|j|\}}||d||ddS)Nc sZd}tjtjd|tjjtjjtjjddIdH}|dIdH\}}|IdH}||fSNrr Frr r rIrgrsrrJrrZrNrrrr empty_outputos z9SubprocessMixin.test_devnull_output..empty_outputrr#r2r3)rrrrQrrrtest_devnull_outputms  z#SubprocessMixin.test_devnull_outputcCs6dd}|j|\}}||d||ddS)Nc sZd}tjtjd|tjjtjjtjjddIdH}|dIdH\}}|IdH}||fSrrrrrr empty_errors z7SubprocessMixin.test_devnull_error..empty_errorrr)rrrrQrrrtest_devnull_errors  z"SubprocessMixin.test_devnull_errorcsfdd}j|dS)NcsttjtIdH}j|}j|jz|IdHWntjyPYn0|| |IdHdSr ) r rIrfr# create_taskrN call_sooncancelCancelledErrorr?)rPrXr%rr cancel_waitsz=SubprocessMixin.test_cancel_process_wait..cancel_waitr#r2)rrrr%rtest_cancel_process_waits z(SubprocessMixin.test_cancel_process_waitcsFfdd}tj|Wdn1s80YdS)NcsLtjt}j|}j|jz|IdHWntjyFYn0dSr )r rIrfr#rrrrrrXr%rrcancel_make_transports  zYSubprocessMixin.test_cancel_make_subprocess_transport_exec..cancel_make_transport)r}r~r#r2rrrr%r*test_cancel_make_subprocess_transport_execs z:SubprocessMixin.test_cancel_make_subprocess_transport_execcsRfdd}t*j|tjWdn1sD0YdS)NcsXjjtjgtR}j|}j|jz|IdHWntjyRYn0dSr ) r#subprocess_execr SubprocessProtocolrfrrrrrr%rrrs  zDSubprocessMixin.test_cancel_post_init..cancel_make_transport)r}r~r#r2 run_brieflyrrr%rtest_cancel_post_inits z%SubprocessMixin.test_cancel_post_initc sfdd}tFzj|\}}WntjyJdYn0Wdn1s`0Y||t jdS)NcszjjtjgtR}|IdH\}}dfdd}|d}|j||_|}|t | dIdH|fS)NFcsddS)NTrrZ kill_calledZ orig_killrrr?szKSubprocessMixin.test_close_kill_running..kill_running..killr) r#rr rrfget_extra_infor?r4r@rV_wait)creater-r,r?rPr[r%rr kill_runnings  z=SubprocessMixin.test_close_kill_running..kill_runningz2Timeout failure on waiting for subprocess stopping) r}r~r#r2r TimeoutErrorZskipTestr8r5r)rrr[killedrr%rtest_close_kill_runnings   (  z'SubprocessMixin.test_close_kill_runningcsfdd}t*j|}tjWdn1sD0Y|\}}}|||tj dkrt t rt jdS)NcsnjjtjgtR}|IdH\}}|d}||t |_| }| }| |||jj fS)Nr)r#rr rrfrr?rNrrpollr4r@r6)rr-r,rPproc_returncodeZtransport_returncoder%rrrs   zCSubprocessMixin.test_close_dont_kill_finished..kill_runningr)r}r~r#r2rZassertIsNotNoner8r7rgrh isinstanceSubprocessFastWatcherTestsr get_child_watcherZ _callbacksclear)rrresultrZtransport_return_coderrr%rtest_close_dont_kill_finisheds  *     z-SubprocessMixin.test_close_dont_kill_finishedc stjdkrd}nd}t|}t}||_tjdd`}||*t j tj dd|dIdHWdn1sr0Y| |gWdn1s0YWdn1s0YdS) Nrzasyncio.windows_utils.Popenzsubprocess.PopenT)recordr rwrx) rgrhrZpatchZeroDivisionErrorZ side_effectwarningscatch_warningsr9r rIrsr3)rrtargetpopenexcZwarnsrrr_test_popen_errors   *z!SubprocessMixin._test_popen_errorcCs|j|jdddSNrx)r#r2rr%rrrtest_popen_error/sz SubprocessMixin.test_popen_errorcCs|j|jtjddSr)r#r2rrrJr%rrr test_popen_error_with_stdin_pipe4s z0SubprocessMixin.test_popen_error_with_stdin_pipecCsdd}|j|dS)Ncs\dgd}tjtjd|tjjdIdH}|jdIdH}|rXt dIdHq,qXq,dS)Nr)r zfor _ in range(64):z sys.stdout.write("x" * 4096)rz sys.exit(1)r )rig333333?) rr rIrgrsrrJrrMr{)rtprocessrOrrrexecute<s zDSubprocessMixin.test_read_stdout_after_process_exit..executerrrrrr#test_read_stdout_after_process_exit:sz3SubprocessMixin.test_read_stdout_after_process_exitcsfdd}j|dS)Ncst&tjtjddIdHWdn1s60Yt&tjtjddIdHWdn1sv0Yt&tjtjddIdHWdn1s0YdSNT)textzutf-8)encodingstrict)errors)r9 ValueErrorrrIrgrsrr%rrrRs * * zLSubprocessMixin.test_create_subprocess_exec_text_mode_fails..executerrrr%r+test_create_subprocess_exec_text_mode_failsQs z;SubprocessMixin.test_create_subprocess_exec_text_mode_failscsfdd}j|dS)Ncst&tjtjddIdHWdn1s60Yt&tjtjddIdHWdn1sv0Yt&tjtjddIdHWdn1s0YdSr)r9rrr_rgrsrr%rrrcs * * zMSubprocessMixin.test_create_subprocess_shell_text_mode_fails..executerrrr%r,test_create_subprocess_shell_text_mode_failsas z.executer8r#r2rrrr%test_create_subprocess_exec_with_pathrsz5SubprocessMixin.test_create_subprocess_exec_with_pathcsfdd}j|dS)NcsXt,tjtjddjdIdH}Wdn1s<0Y|IdHdS)Nr rwr#) assertWarnsDeprecationWarningr rIrgrsr#rNrPr%rrgo~s  *z5SubprocessMixin.test_exec_loop_deprecated..gorrrrr%rtest_exec_loop_deprecated}s z)SubprocessMixin.test_exec_loop_deprecatedcsfdd}j|dS)NcsRt&tjdjdIdH}Wdn1s60Y|IdHdS)Nzexit 0r)rrr r_r#rNrr%rrrs  *z6SubprocessMixin.test_shell_loop_deprecated..gorrrr%rtest_shell_loop_deprecateds z*SubprocessMixin.test_shell_loop_deprecatedN)%rrrrYr\rardrmrnunittestZskipIfrgrhrurzrrrrrrrrrrrrrrrrrrrrrrrrrrrGjs>    ,%)  rGcs,eZdZdZfddZfddZZS)SubprocessWatcherMixinNcsJtt}||_||j|}||j| |dSr ) r!r"r get_event_loop_policyZnew_event_loopr#r$Watcher attach_loopset_child_watcherrZpolicywatcherr&rrr"s    zSubprocessWatcherMixin.setUpcs:tt}|}|d|d|dSr )r!tearDownr rrrrr@rr&rrrs    zSubprocessWatcherMixin.tearDown)rrrrr"rrFrrr&rrs rc@seZdZejZdS)SubprocessThreadedWatcherTestsN)rrrrZThreadedChildWatcherrrrrrrsrzqbpo-38323: MultiLoopChildWatcher has a race condition and these tests can hang the test suitec@seZdZejZdS)SubprocessMultiLoopWatcherTestsN)rrrrZMultiLoopChildWatcherrrrrrrsrc@seZdZejZdS)SubprocessSafeWatcherTestsN)rrrrZSafeChildWatcherrrrrrrsrc@seZdZejZdS)rN)rrrrZFastChildWatcherrrrrrrsrcCs@ttdsdSztttWnty:YdS0dS)N pidfd_openFT)hasattrosr@rgetpidOSErrorrrrrhas_pidfd_supports  rz(operating system does not support pidfdsc@seZdZejZdS)SubprocessPidfdWatcherTestsN)rrrrZPidfdChildWatcherrrrrrrsrcseZdZfddZZS)SubprocessProactorTestscs$tt|_||jdSr )r!r"r ZProactorEventLoopr#r$r%r&rrr"s  zSubprocessProactorTests.setUp)rrrr"rFrrr&rr sr c@seZdZddZdS)GenericWatcherTestscs$fdd}j|dS)Ncsrttj}d|j_t|t,t t t jddIdHWdn1sZ0Y|jdS)NFr rw)rZcreate_authspecr ZAbstractChildWatcherZ is_activeZ return_valuerr9 RuntimeErrorrrIrrrgrsZadd_child_handlerZassert_not_called)rr%rrrs   (zWGenericWatcherTests.test_create_subprocess_fails_with_inactive_watcher..executerrrr%r2test_create_subprocess_fails_with_inactive_watchers zFGenericWatcherTests.test_create_subprocess_fails_with_inactive_watcherN)rrrr rrrrr sr __main__)'rr<rgrrrr rrZtest.test_asynciorr}r(rrhrrsrfrrUrZBaseSubprocessTransportrZTestCaser rGrrskiprrrrZ skipUnlessrr r rmainrrrrsf         A,