Your IP : 216.73.216.213


Current Path : /opt/alt/python38/lib64/python3.8/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python38/lib64/python3.8/test/test_asyncio/__pycache__/test_subprocess.cpython-38.pyc

U

i�fSe�@s�ddlZddlZddlZddlZddlmZddlZddlmZddlmZddlm	Z
ddlmZej
dkrzddlmZejd	d
gZejd	d�d�gZd
d�ZGdd�dej�ZGdd�de
j�ZGdd�d�Zej
dk�rJGdd�de�ZGdd�dee
j�Ze�d�Gdd�dee
j��ZGdd�dee
j�ZGdd�dee
j�ZnGd d!�d!ee
j�ZGd"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/python38/lib64/python3.8/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__rrrrrrsrcs6eZdZ�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_exited7s(

�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_reprQs(

���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�runns�
z.SubprocessMixin.test_stdin_stdout.<locals>.run�	some data�N@r��PROGRAM_CATr
Zwait_forr#r2r3�rrR�taskrPrrrQr�test_stdin_stdoutksz!SubprocessMixin.test_stdin_stdoutcsPt��fdd�}|d�}t�|d�}|j�|�\}}|�|d�|�|d�dS)Nc�s:tj�tjtjd��IdH}|�|�IdH\}}|j|fSrG)r
rHrrI�communicate�
returncode)rNrOrrrQrrrR�s�z-SubprocessMixin.test_communicate.<locals>.runrSrTrrUrWrrQr�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�rrrOr[rrr�	test_kill�s�
zSubprocessMixin.test_killcCsZt}|j�tj|��}|��|j�|���}tjdkrF|�	|t
�n|�tj
|�dSrd)rer#r2r
rHr>rMrfrgrhrir3r<r=rkrrr�test_terminate�s�
zSubprocessMixin.test_terminaterzDon't have SIGHUPc
s�t�tjtj�}zZd}tjd|g}�j�tj|dt	j
i��}�fdd�}�j�||��}��tj|�W5t�tj|�XdS)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�liner[r%rrr;�s
z5SubprocessMixin.test_send_signal.<locals>.send_signal)r<ro�SIG_DFLrf�
executabler#r2r
rHrrIr3)rZold_handler�coderrOr;r[rr%r�test_send_signal�s���	z SubprocessMixin.test_send_signalcCs0dtj}|j�tjtjddtj	d��}||fS)N�xr	�pass�r)
rZ
PIPE_MAX_SIZEr#r2r
rHrfrrrrI)r�
large_datarOrrr�prepare_broken_pipe_test�s
��z(SubprocessMixin.prepare_broken_pipe_testc	Cs\|��\}}dd�}|||�}t���|�ttf|jj|�W5QRX|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)	ry�
test_utils�disable_loggerr9�BrokenPipeError�ConnectionResetErrorr#r2rM)rrOrxr{�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>)ryr#Zset_exception_handlerr2rZrM)rrOrxrrr�#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�s0�||�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
rHrfrrrrIZ
_transportZget_pipe_transportrZ)rsr�rOZstdout_transportrr�r�r�sizer�r�test_pause_reading
s&��z>SubprocessMixin.test_pause_reading.<locals>.test_pause_readingru)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
rHrfrrrrIrZrM)�messagersrOrrrPrrr�len_message5s�z?SubprocessMixin.test_stdin_not_inheritable.<locals>.len_message�abc�3r�r#r2r3�rstrip)rr��outputrPrrr�test_stdin_not_inheritable2s
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��rsrOrrrPrrr�empty_inputHs�z5SubprocessMixin.test_empty_input.<locals>.empty_input�0rr��rr�r�rPrrr�test_empty_inputFs
z SubprocessMixin.test_empty_inputcCs:dd�}|j�|��\}}|�|��d�|�|d�dS)Nc	�sXd}tjtjd|tjjtjjtjjdd�IdH}|��IdH\}}|��IdH}||fSr�)	r
rHrfrrr�DEVNULLrIrZrMr�rrrr�[s�z7SubprocessMixin.test_devnull_input.<locals>.empty_inputr�rr�r�rrr�test_devnull_inputYs
z"SubprocessMixin.test_devnull_inputcCs6dd�}|j�|��\}}|�|d�|�|d�dS)Nc	�sZd}tjtjd|tjjtjjtjjdd�IdH}|�d�IdH\}}|��IdH}||fS�Nr�r	Fr�r��	r
rHrfrrrrIr�rZrMr�rrr�empty_outputns�z9SubprocessMixin.test_devnull_output.<locals>.empty_outputr�r#r2r3)rr�r�rPrrr�test_devnull_outputls
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_errors
z"SubprocessMixin.test_devnull_errorcs�fdd�}�j�|��dS)Nc�svtjt�IdH}�j�|���}�j�|j�z|IdHWntjk
rRYnX|��|�	�|��IdHdSr)
r
rHrer#�create_taskrM�	call_soon�cancel�CancelledErrorr?)rOrXr%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_waitc	s2�fdd�}t����j�|��W5QRXdS)Nc�sNtjt�}�j�|�}�j�|j�z|IdHWntjk
rHYnXdSr)r
rHrer#r�r�r�r��r�rXr%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_execc	s>�fdd�}t��� �j�|��t��j�W5QRXdS)Nc�sX�jjtjft��}�j�|�}�j�|j�z|IdHWntjk
rRYnXdSr)	r#�subprocess_execr
�SubprocessProtocolrer�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	sV�fdd�}t����j�|��\}}W5QRX��|���|�t��j�dS)Nc�sp�jjtjft��}|IdH\}}d���fdd�}|�d�}|j�||_|��}|��|�	�IdH|�fS)NFcsd���dS)NTrr�Zkill_calledZ	orig_killrrr?�szKSubprocessMixin.test_close_kill_running.<locals>.kill_running.<locals>.killr)
r#r�r
r�re�get_extra_infor?r4r@Z_wait)�creater-r,r?rOr[r%r�r�kill_running�s�
z=SubprocessMixin.test_close_kill_running.<locals>.kill_running)r|r}r#r2r8r5r�)rr�r[�killedrr%r�test_close_kill_running�s


z'SubprocessMixin.test_close_kill_runningc	s��fdd�}t��� �j�|��}t��j�W5QRX|\}}}��|���|���|�tj	dkr�t
�t�r�t�
�j��dS)Nc�sl�jjtjft��}|IdH\}}|�d�}|��|��t�	�|_|�
�}|��}|��|||jj
fS)Nr)r#r�r
r�rer�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�ZassertIsNotNoner8r7rfrg�
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�|��d}t}||_tjdd��B}|�|�� t	j
tjdd|d�IdHW5QRX|�|g�W5QRXW5QRXdS)	Nrzasyncio.windows_utils.Popenzsubprocess.PopenT)�recordr	rvrw)
rfrgrZpatch�ZeroDivisionErrorZside_effect�warnings�catch_warningsr9r
rHrrr3)rr�target�popen�excZwarnsrrr�_test_popen_errors
�z!SubprocessMixin._test_popen_errorcCs|j�|jdd��dS�Nrw)r#r2r�r%rrr�test_popen_error'sz SubprocessMixin.test_popen_errorcCs|j�|jtjd��dSr�)r#r2r�rrIr%rrr� test_popen_error_with_stdin_pipe,s�z0SubprocessMixin.test_popen_error_with_stdin_pipecCsdd�}|j�|��dS)Nc�sbd�dddddg�}tjtjd|tjjd�IdH}|j�d	�IdH}|r^t�	d
�IdHq2q^q2dS)Nr�rzfor _ in range(64):z     sys.stdout.write("x" * 4096)r�zsys.exit(1)r	)rig333333�?)
r�r
rHrfrrrrIrrLrz)rsZprocessrNrrr�execute4s ��zDSubprocessMixin.test_read_stdout_after_process_exit.<locals>.executer��rr�rrr�#test_read_stdout_after_process_exit2sz3SubprocessMixin.test_read_stdout_after_process_exitcs�fdd�}�j�|��dS)Nc	�s���t��tjtjdd�IdHW5QRX��t��tjtjdd�IdHW5QRX��t��tjtjdd�IdHW5QRXdS�NT)�textzutf-8)�encoding�strict)�errors)r9�
ValueErrorrrHrfrrrr%rrr�Js���zLSubprocessMixin.test_create_subprocess_exec_text_mode_fails.<locals>.executer�r�rr%r�+test_create_subprocess_exec_text_mode_failsIs
z;SubprocessMixin.test_create_subprocess_exec_text_mode_failscs�fdd�}�j�|��dS)Nc	�s���t��tjtjdd�IdHW5QRX��t��tjtjdd�IdHW5QRX��t��tjtjdd�IdHW5QRXdSr�)r9r�rr_rfrrrr%rrr�[s���zMSubprocessMixin.test_create_subprocess_shell_text_mode_fails.<locals>.executer�r�rr%r�,test_create_subprocess_shell_text_mode_failsYs
z<SubprocessMixin.test_create_subprocess_shell_text_mode_failscCs dd�}|�|j�|���dS)Nc�sZt�t�tj�dd�IdH}|��IdHt�tjddt�d��IdH}|��IdHdS)Nr	rv�.)rrHr�FakePathrfrrrM)�prrrr�ks
�
�
zFSubprocessMixin.test_create_subprocess_exec_with_path.<locals>.execute�r8r#r2r�rrr�%test_create_subprocess_exec_with_pathjsz5SubprocessMixin.test_create_subprocess_exec_with_pathcs�fdd�}�j�|��dS)Nc	�sD��t��"tjtjdd�jd�IdH}W5QRX|��IdHdS)Nr	rv�r#)�assertWarns�DeprecationWarningr
rHrfrrr#rM�rOr%rr�govs�z5SubprocessMixin.test_exec_loop_deprecated.<locals>.gor��rr�rr%r�test_exec_loop_deprecatedusz)SubprocessMixin.test_exec_loop_deprecatedcs�fdd�}�j�|��dS)Nc	�s>��t��tjd�jd�IdH}W5QRX|��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_deprecatedsz*SubprocessMixin.test_shell_loop_deprecatedN)%rrrrYr\rarcrlrm�unittestZskipIfrfrgrtryr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrFis>


,)
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�cseZdZ�fdd�Z�ZS)�SubprocessProactorTestscs$t���t��|_|�|j�dSr)r!r"r
ZProactorEventLoopr#r$r%r&rrr"�s

zSubprocessProactorTests.setUp)rrrr"rErrr&rr��sr�c@seZdZdd�ZdS)�GenericWatcherTestscs$�fdd�}���j�|���dS)Nc	�s^t�tj�}d|j_t�|���t��"t	�
t�t
j�dd�IdHW5QRX|j��dS)NFr	rv)rZcreate_authspecr
ZAbstractChildWatcherZ	is_activeZreturn_valuer�r9�RuntimeErrorrrHrr�rfrrZadd_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)rrrr�rrrrr��sr��__main__)#r<rfr�r�rr
rrZtest.test_asynciorr|r(rrgrrrrer�rVrZBaseSubprocessTransportrZTestCaser rFr�r��skipr�r�r�r�r�r�mainrrrr�<module>sV
�	A%����