Your IP : 216.73.216.213


Current Path : /opt/alt/python39/lib64/python3.9/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python39/lib64/python3.9/test/test_asyncio/__pycache__/test_subprocess.cpython-39.pyc

a

XC?h]h�@s�ddlZddlZddlZddlZddlZddlmZddlZddlmZddlmZddl	m
Zddlm
Z
ejdkr�ddlmZejd	d
gZejd	d�d�gZd
d�ZGdd�dej�ZGdd�dej�ZGdd�d�Zejdk�r|Gdd�de�ZGdd�deej�Ze�d�Gdd�deej��ZGdd�deej�ZGdd�deej�Zd d!�Z e�!e �d"�Gd#d$�d$eej��Z"nGd%d&�d&eej�Z#Gd'd(�d(�Z$e%d)k�r�e�&�dS)*�N)�mock)�base_subprocess)�
subprocess)�utils)�support�win32)�unix_events�-czimport time; time.sleep(3600)�;)�
import syszdata = sys.stdin.buffer.read()zsys.stdout.buffer.write(data)cCst�d�dS�N)�asyncioZset_event_loop_policy�rr�F/opt/alt/python39/lib64/python3.9/test/test_asyncio/test_subprocess.py�tearDownModulesrc@seZdZdd�ZdS)�TestSubprocessTransportcOs.t��|_d|j_d|j_d|j_d|j_dS)N���)r�Mock�_proc�stdin�stdout�stderr�pid)�self�args�kwargsrrr�_start!s

zTestSubprocessTransport._startN)�__name__�
__module__�__qualname__rrrrrr srcs6eZdZ�fdd�Zd
dd�Zdd�Zdd	�Z�ZS)�SubprocessTransportTestscs$t���|��|_|�|j�dSr)�super�setUpZ
new_test_loop�loop�set_event_loop�r��	__class__rrr"*s

zSubprocessTransportTests.setUpNcCs>t��}d|j_d|j_t|j|dgddddd|d�	}||fS)NF�testr)�waiter)rr�connection_madeZ
_is_coroutine�process_exitedrr#)rr)�protocol�	transportrrr�create_transport/s
�z)SubprocessTransportTests.create_transportcCs�|j��}|�|�\}}|�d�|j�|�|�|��d�|�|jj	�|�|j
j	�|�|jj	�|�|jjdd�|�
|���|�|j�|�|j�|�|j�|�t|jtj�|�t|j�|�t|j�|��dS)N�rr)r#�
create_futurer.�_process_exited�run_until_complete�assertEqual�get_returncode�
assertTruer*�calledr+Zconnection_lostZ	call_args�assertFalseZ
is_closing�assertIsNoneZ_looprZ	_protocol�assertRaises�ProcessLookupError�send_signal�signal�SIGTERM�	terminate�kill�close�rr)r-r,rrr�test_proc_exited8s&

�z)SubprocessTransportTests.test_proc_exitedcCs||j��}|�|�\}}|�d�|j�|�|�t|�d�d|_|�t|�d�d|_d|_|�t|�d�|�	�dS)Nr/z-<TestSubprocessTransport pid=-1 returncode=6>z(<TestSubprocessTransport pid=-1 running>z%<TestSubprocessTransport not started>)
r#r0r.r1r2r3�reprZ_returncodeZ_pidr@rArrr�test_subprocess_reprRs(

���z-SubprocessTransportTests.test_subprocess_repr)N)rrrr"r.rBrD�
__classcell__rrr&rr )s
	r c@seZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Ze	�
ejd
kd�dd��Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Z d7d8�Z!d9d:�Z"d;d<�Z#d=d>�Z$d?S)@�SubprocessMixincsPt��fdd�}|d�}t�|d�}|j�|�\}}|�|d�|�|d�dS)Nc�shtj�tjtjd��IdH}|j�|�|j��IdH|j��|j�	�IdH}|�
�IdH}||fS�N)rr)r
�create_subprocess_execr�PIPEr�write�drainr@r�read�wait)�data�proc�exitcode�rrr�runos�
z.SubprocessMixin.test_stdin_stdout.<locals>.run�	some datagN@r)�PROGRAM_CATr
�wait_forr#r2r3�rrR�taskrPrrrQr�test_stdin_stdoutlsz!SubprocessMixin.test_stdin_stdoutcsRt��fdd�}|d�}t�|tj�}|j�|�\}}|�|d�|�|d�dS)Nc�s:tj�tjtjd��IdH}|�|�IdH\}}|j|fSrG)r
rHrrI�communicate�
returncode)rNrOrrrQrrrR�s�z-SubprocessMixin.test_communicate.<locals>.runrSr)rTr
rUrZLONG_TIMEOUTr#r2r3rVrrQr�test_communicate�s	z SubprocessMixin.test_communicatecCs2|j�t�d��}|j�|���}|�|d�dS)Nzexit 7��r#r2r
�create_subprocess_shellrMr3�rrOrPrrr�
test_shell�s
�zSubprocessMixin.test_shellcCs6|j�tjddd��}|j�|���}|�|d�dS)Nzexit 8T)Zstart_new_session�r]r_rrr�test_start_new_session�s��z&SubprocessMixin.test_start_new_sessioncCsZt}|j�tj|��}|��|j�|���}tjdkrF|�	|t
�n|�tj
|�dS�Nr)�PROGRAM_BLOCKEDr#r2r
rHr?rM�sys�platform�assertIsInstance�intr3r<�SIGKILL�rrrOrZrrr�	test_kill�s�
zSubprocessMixin.test_killcCsZt}|j�tj|��}|��|j�|���}tjdkrF|�	|t
�n|�tj
|�dSrc)rdr#r2r
rHr>rMrerfrgrhr3r<r=rjrrr�test_terminate�s�
zSubprocessMixin.test_terminaterzDon't have SIGHUPc
s�t�tjtj�}zhd}tjd|g}�j�tj|dt	j
i��}�fdd�}�j�||��}��tj|�Wt�tj|�nt�tj|�0dS)Nz<import time; print("sleeping", flush=True); time.sleep(3600)r	rc�s:|j��IdH}��|d�|�tj�|��IdH}|S)Ns	sleeping
)r�readliner3r;r<�SIGHUPrM)rO�linerZr%rrr;�s
z5SubprocessMixin.test_send_signal.<locals>.send_signal)r<rn�SIG_DFLre�
executabler#r2r
rHrrIr3)rZold_handler�coderrOr;rZrr%r�test_send_signal�s���	z SubprocessMixin.test_send_signalcCs0dtj}|j�tjtjddtj	d��}||fS)N�xr	�pass�r)
rZ
PIPE_MAX_SIZEr#r2r
rHrerqrrI)r�
large_datarOrrr�prepare_broken_pipe_test�s
��z(SubprocessMixin.prepare_broken_pipe_testcCsp|��\}}dd�}|||�}t���&|�ttf|jj|�Wd�n1sR0Y|j�|���dS)Nc�s0t�d�IdH|j�|�|j��IdHdS)Ng�?)r
�sleeprrJrK)rOrNrrr�write_stdin�sz;SubprocessMixin.test_stdin_broken_pipe.<locals>.write_stdin)	rx�
test_utils�disable_loggerr9�BrokenPipeError�ConnectionResetErrorr#r2rM)rrOrwrz�cororrr�test_stdin_broken_pipe�s


�"z&SubprocessMixin.test_stdin_broken_pipecCsB|��\}}|j�dd��|j�|�|��|j�|���dS)NcSsdSrr)r#�msgrrr�<lambda>�zESubprocessMixin.test_communicate_ignore_broken_pipe.<locals>.<lambda>)rxr#Zset_exception_handlerr2rYrM)rrOrwrrr�#test_communicate_ignore_broken_pipe�sz3SubprocessMixin.test_communicate_ignore_broken_pipecsbd��dd����fdd�}�j�|��\}}��|d����|jj���|jj�dS)N�
��c�s|d�dd�df�}�jj��fdd�}|�j_tjtjd|tjjtjj�d�IdH}|j	�
d	�}|��IdH\}}||fS)
N�
rzsys.stdout.write("x" * %s)�sys.stdout.flush()c�s4�|i|��IdH\}}t��|_t��|_||fSr)rr�
pause_reading�resume_reading)r�kwr-r,��connect_read_piperr�connect_read_pipe_mocks

z^SubprocessMixin.test_pause_reading.<locals>.test_pause_reading.<locals>.connect_read_pipe_mockr	)rr�limitr�)�joinr#r�r
rHrerqrrIZ
_transportZget_pipe_transportrY)rrr�rOZstdout_transportrr�r�r�sizer�r�test_pause_readings"��z>SubprocessMixin.test_pause_reading.<locals>.test_pause_readingrt)r#r2r3r5r�r6r�)rr�rr-rr�rr�s"z"SubprocessMixin.test_pause_readingcCs<dd�}|j�|d��\}}|�|��d�|�|d�dS)Nc	�sZd}tjtjd|tjjtjjtjjdd�IdH}|�|�IdH\}}|��IdH}||fS�N�5import sys; data = sys.stdin.read(); print(len(data))r	F�rrrZ	close_fds�r
rHrerqrrIrYrM)�messagerrrOrrrPrrr�len_message6s�z?SubprocessMixin.test_stdin_not_inheritable.<locals>.len_message�abc�3r�r#r2r3�rstrip)rr��outputrPrrr�test_stdin_not_inheritable3s
z*SubprocessMixin.test_stdin_not_inheritablecCs:dd�}|j�|��\}}|�|��d�|�|d�dS)Nc	�sZd}tjtjd|tjjtjjtjjdd�IdH}|�d�IdH\}}|��IdH}||fS)Nr�r	Fr�r�r��rrrOrrrPrrr�empty_inputIs�z5SubprocessMixin.test_empty_input.<locals>.empty_input�0rr��rr�r�rPrrr�test_empty_inputGs
z SubprocessMixin.test_empty_inputcCs:dd�}|j�|��\}}|�|��d�|�|d�dS)Nc	�sXd}tjtjd|tjjtjjtjjdd�IdH}|��IdH\}}|��IdH}||fSr�)	r
rHrerqr�DEVNULLrIrYrMr�rrrr�\s�z7SubprocessMixin.test_devnull_input.<locals>.empty_inputr�rr�r�rrr�test_devnull_inputZs
z"SubprocessMixin.test_devnull_inputcCs6dd�}|j�|��\}}|�|d�|�|d�dS)Nc	�sZd}tjtjd|tjjtjjtjjdd�IdH}|�d�IdH\}}|��IdH}||fS�Nr�r	Fr�r��	r
rHrerqrrIr�rYrMr�rrr�empty_outputos�z9SubprocessMixin.test_devnull_output.<locals>.empty_outputr�r#r2r3)rr�r�rPrrr�test_devnull_outputms
z#SubprocessMixin.test_devnull_outputcCs6dd�}|j�|��\}}|�|d�|�|d�dS)Nc	�sZd}tjtjd|tjjtjjtjjdd�IdH}|�d�IdH\}}|��IdH}||fSr�r�r�rrr�empty_error�s�z7SubprocessMixin.test_devnull_error.<locals>.empty_errorrr�)rr�r�rPrrr�test_devnull_error�s
z"SubprocessMixin.test_devnull_errorcs�fdd�}�j�|��dS)Nc�sttjt�IdH}�j�|���}�j�|j�z|IdHWntjyPYn0|��|�	�|��IdHdSr)
r
rHrdr#�create_taskrM�	call_soon�cancel�CancelledErrorr?)rOrWr%rr�cancel_wait�sz=SubprocessMixin.test_cancel_process_wait.<locals>.cancel_wait�r#r2)rr�rr%r�test_cancel_process_wait�sz(SubprocessMixin.test_cancel_process_waitcsF�fdd�}t����j�|��Wd�n1s80YdS)Nc�sLtjt�}�j�|�}�j�|j�z|IdHWntjyFYn0dSr)r
rHrdr#r�r�r�r��rrWr%rr�cancel_make_transport�s
zYSubprocessMixin.test_cancel_make_subprocess_transport_exec.<locals>.cancel_make_transport)r{r|r#r2�rr�rr%r�*test_cancel_make_subprocess_transport_exec�s
z:SubprocessMixin.test_cancel_make_subprocess_transport_execcsR�fdd�}t���*�j�|��t��j�Wd�n1sD0YdS)Nc�sX�jjtjgt�R�}�j�|�}�j�|j�z|IdHWntjyRYn0dSr)	r#�subprocess_execr
�SubprocessProtocolrdr�r�r�r�r�r%rrr��s�zDSubprocessMixin.test_cancel_post_init.<locals>.cancel_make_transport)r{r|r#r2�run_brieflyr�rr%r�test_cancel_post_init�s
z%SubprocessMixin.test_cancel_post_initc	s��fdd�}t���Fz�j�|��\}}WntjyJ��d�Yn0Wd�n1s`0Y��|���|�t�	�j�dS)Nc�sz�jjtjgt�R�}|IdH\}}d���fdd�}|�d�}|j�||_|��}|��t�	|�
�d�IdH|�fS)NFcsd���dS)NTrr�Zkill_calledZ	orig_killrrr?�szKSubprocessMixin.test_close_kill_running.<locals>.kill_running.<locals>.killr�)r#r�r
r�rd�get_extra_infor?r4r@rUZ_wait)�creater-r,r?rOrZr%r�r�kill_running�s�
z=SubprocessMixin.test_close_kill_running.<locals>.kill_runningz2Timeout failure on waiting for subprocess stopping)
r{r|r#r2r
�TimeoutErrorZskipTestr8r5r�)rr�rZ�killedrr%r�test_close_kill_running�s
��(

z'SubprocessMixin.test_close_kill_runningcs��fdd�}t���*�j�|��}t��j�Wd�n1sD0Y|\}}}��|���|���|�tj	dkr�t
�t�r�t�
�j��dS)Nc�sn�jjtjgt�R�}|IdH\}}|�d�}|��|��t�	�|_|�
�}|��}|��|||jj
fS)Nr)r#r�r
r�rdr�r?rMrrZpollr4r@r6)r�r-r,rO�proc_returncodeZtransport_returncoder%rrr��s�

zCSubprocessMixin.test_close_dont_kill_finished.<locals>.kill_runningr)r{r|r#r2r�ZassertIsNotNoner8r7rerf�
isinstance�SubprocessFastWatcherTestsr
�get_child_watcherZ
_callbacks�clear)rr��resultr�Ztransport_return_coder�rr%r�test_close_dont_kill_finished�s
*




�z-SubprocessMixin.test_close_dont_kill_finishedc
�s�tjdkrd}nd}t�|���}t}||_tjdd��`}|�|��*t	j
tjdd|d�IdHWd�n1sr0Y|�|g�Wd�n1s�0YWd�n1s�0YdS)	Nrzasyncio.windows_utils.Popenzsubprocess.PopenT)�recordr	rurv)
rerfrZpatch�ZeroDivisionErrorZside_effect�warnings�catch_warningsr9r
rHrqr3)rr�target�popen�excZwarnsrrr�_test_popen_errors
�*z!SubprocessMixin._test_popen_errorcCs|j�|jdd��dS�Nrv)r#r2r�r%rrr�test_popen_error/sz SubprocessMixin.test_popen_errorcCs|j�|jtjd��dSr�)r#r2r�rrIr%rrr� test_popen_error_with_stdin_pipe4s�z0SubprocessMixin.test_popen_error_with_stdin_pipecCsdd�}|j�|��dS)Nc�s\d�gd��}tjtjd|tjjd�IdH}|j�d�IdH}|rXt�	d�IdHq,qXq,dS)Nr�)rzfor _ in range(64):z     sys.stdout.write("x" * 4096)r�zsys.exit(1)r	)rig333333�?)
r�r
rHrerqrrIrrLry)rrZprocessrNrrr�execute<s�zDSubprocessMixin.test_read_stdout_after_process_exit.<locals>.executer��rr�rrr�#test_read_stdout_after_process_exit:sz3SubprocessMixin.test_read_stdout_after_process_exitcs�fdd�}�j�|��dS)Nc�s���t��&tjtjdd�IdHWd�n1s60Y��t��&tjtjdd�IdHWd�n1sv0Y��t��&tjtjdd�IdHWd�n1s�0YdS�NT)�textzutf-8)�encoding�strict)�errors)r9�
ValueErrorrrHrerqrr%rrr�Rs�*�*�zLSubprocessMixin.test_create_subprocess_exec_text_mode_fails.<locals>.executer�r�rr%r�+test_create_subprocess_exec_text_mode_failsQs
z;SubprocessMixin.test_create_subprocess_exec_text_mode_failscs�fdd�}�j�|��dS)Nc�s���t��&tjtjdd�IdHWd�n1s60Y��t��&tjtjdd�IdHWd�n1sv0Y��t��&tjtjdd�IdHWd�n1s�0YdSr�)r9r�rr^rerqrr%rrr�cs�*�*�zMSubprocessMixin.test_create_subprocess_shell_text_mode_fails.<locals>.executer�r�rr%r�,test_create_subprocess_shell_text_mode_failsas
z<SubprocessMixin.test_create_subprocess_shell_text_mode_failscCs dd�}|�|j�|���dS)Nc�sZt�t�tj�dd�IdH}|��IdHt�tjddt�d��IdH}|��IdHdS)Nr	ru�.)rrHr�FakePathrerqrM)�prrrr�ss�
�
zFSubprocessMixin.test_create_subprocess_exec_with_path.<locals>.execute�r8r#r2r�rrr�%test_create_subprocess_exec_with_pathrsz5SubprocessMixin.test_create_subprocess_exec_with_pathcs�fdd�}�j�|��dS)Nc�sX��t��,tjtjdd�jd�IdH}Wd�n1s<0Y|��IdHdS)Nr	ru�r#)�assertWarns�DeprecationWarningr
rHrerqr#rM�rOr%rr�go~s�*z5SubprocessMixin.test_exec_loop_deprecated.<locals>.gor��rr�rr%r�test_exec_loop_deprecated}sz)SubprocessMixin.test_exec_loop_deprecatedcs�fdd�}�j�|��dS)Nc�sR��t��&tjd�jd�IdH}Wd�n1s60Y|��IdHdS)Nzexit 0r�)r�r�r
r^r#rMr�r%rrr��s�*z6SubprocessMixin.test_shell_loop_deprecated.<locals>.gor�r�rr%r�test_shell_loop_deprecated�sz*SubprocessMixin.test_shell_loop_deprecatedN)%rrrrXr[r`rbrkrl�unittestZskipIfrerfrsrxr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrFjs>


,%)
rFcs,eZdZdZ�fdd�Z�fdd�Z�ZS)�SubprocessWatcherMixinNcsJt���t��}|��|_|�|j�|��}|�|j�|�	|�dSr)
r!r"r
�get_event_loop_policyZnew_event_loopr#r$�Watcher�attach_loop�set_child_watcher�rZpolicy�watcherr&rrr"�s

zSubprocessWatcherMixin.setUpcs:t���t��}|��}|�d�|�d�|��dSr)r!�tearDownr
r�r�r�r�r@r�r&rrr��s


zSubprocessWatcherMixin.tearDown)rrrr�r"r�rErrr&rr��s
r�c@seZdZejZdS)�SubprocessThreadedWatcherTestsN)rrrrZThreadedChildWatcherr�rrrrr��sr�zqbpo-38323: MultiLoopChildWatcher has a race condition                     and these tests can hang the test suitec@seZdZejZdS)�SubprocessMultiLoopWatcherTestsN)rrrrZMultiLoopChildWatcherr�rrrrr��sr�c@seZdZejZdS)�SubprocessSafeWatcherTestsN)rrrrZSafeChildWatcherr�rrrrr��sr�c@seZdZejZdS)r�N)rrrrZFastChildWatcherr�rrrrr��sr�cCs@ttd�sdSzt�t�t����Wnty:YdS0dS)N�
pidfd_openFT)�hasattr�osr@r��getpid�OSErrorrrrr�has_pidfd_support�s
rz(operating system does not support pidfdsc@seZdZejZdS)�SubprocessPidfdWatcherTestsN)rrrrZPidfdChildWatcherr�rrrrr�srcseZdZ�fdd�Z�ZS)�SubprocessProactorTestscs$t���t��|_|�|j�dSr)r!r"r
ZProactorEventLoopr#r$r%r&rrr"�s

zSubprocessProactorTests.setUp)rrrr"rErrr&rr�src@seZdZdd�ZdS)�GenericWatcherTestscs$�fdd�}���j�|���dS)Nc�srt�tj�}d|j_t�|���t��,t	�
t�t
j�dd�IdHWd�n1sZ0Y|j��dS)NFr	ru)rZcreate_authspecr
ZAbstractChildWatcherZ	is_activeZreturn_valuer�r9�RuntimeErrorrrHrr�rerqZadd_child_handlerZassert_not_called)r�r%rrr��s
�(zWGenericWatcherTests.test_create_subprocess_fails_with_inactive_watcher.<locals>.executer�r�rr%r�2test_create_subprocess_fails_with_inactive_watcher�szFGenericWatcherTests.test_create_subprocess_fails_with_inactive_watcherN)rrrrrrrrr�sr�__main__)'r�r<rer�r�rr
rrZtest.test_asynciorr{r(rrfrrqrdr�rTrZBaseSubprocessTransportrZTestCaser rFr�r��skipr�r�r�rZ
skipUnlessrrrr�mainrrrr�<module>sf
�	A,����	��