Your IP : 216.73.216.213


Current Path : /opt/alt/python310/lib64/python3.10/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/test/test_asyncio/__pycache__/test_subprocess.cpython-310.pyc

o

0�ii�@s�ddlZddlZddlZddlZddlZddlmZddlZddlmZddlmZddl	m
Zddlm
Z
ddlmZejdkrGdd	lmZejd
dgZejd
d�d
�gZdd�ZGdd�dej�ZGdd�dej�ZGdd�d�Zejdkr�Gdd�de�ZGdd�deej�Ze�d�Gdd�deej��ZGdd�deej�Z Gdd �d eej�Z!d!d"�Z"e�#e"�d#�Gd$d%�d%eej��Z$n
Gd&d'�d'eej�Z%Gd(d)�d)�Z&e'd*kr�e�(�dSdS)+�N)�mock)�base_subprocess)�
subprocess)�utils)�support)�	os_helper�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�H/opt/alt/python310/lib64/python3.10/test/test_asyncio/test_subprocess.py�tearDownModulesrc@�eZdZdd�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!srcs6eZdZ�fdd�Zd
dd�Zdd�Zdd	�Z�ZS)�SubprocessTransportTestscs$t���|��|_|�|j�dSr
)�super�setUpZ
new_test_loop�loop�set_event_loop�r��	__class__rrr$+�

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_transport0s
�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_futurer1�_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,r0r/rrr�test_proc_exited9s&

�z)SubprocessTransportTests.test_proc_exitedcCs||j��}|�|�\}}|�d�|j�|�|�t|�d�d|_|�t|�d�d|_d|_|�t|�d�|�	�dS)Nr2z-<TestSubprocessTransport pid=-1 returncode=6>z(<TestSubprocessTransport pid=-1 running>z%<TestSubprocessTransport not started>)
r%r3r1r4r5r6�reprZ_returncodeZ_pidrCrDrrr�test_subprocess_reprSs(

���z-SubprocessTransportTests.test_subprocess_reprr
)rr r!r$r1rErG�
__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"�Ze	�
ejd#kd$�d%d&��Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Z d9d:�Z!d;d<�Z"d=d>�Z#d?S)@�SubprocessMixincsPt��fdd�}|d�}t�|d�}|j�|�\}}|�|d�|�|d�dS)Nc�sj�tj�tjtjd��IdH}|j�|�|j��IdH|j��|j�	�IdH}|�
�IdH}||fS�N)rr)r�create_subprocess_execr�PIPEr�write�drainrCr�read�wait)�data�proc�exitcode�rrr�runps��
z.SubprocessMixin.test_stdin_stdout.<locals>.run�	some datagN@r)�PROGRAM_CATr�wait_forr%r5r6�rrU�taskrSrrrTr�test_stdin_stdoutmsz!SubprocessMixin.test_stdin_stdoutcsRt��fdd�}|d�}t�|tj�}|j�|�\}}|�|d�|�|d�dS)Nc�s<�tj�tjtjd��IdH}|�|�IdH\}}|j|fSrJ)rrKrrL�communicate�
returncode)rQrRrrrTrrrU�s��
z-SubprocessMixin.test_communicate.<locals>.runrVr)rWrrXrZLONG_TIMEOUTr%r5r6rYrrTr�test_communicate�s	z SubprocessMixin.test_communicatecCs2|j�t�d��}|j�|���}|�|d�dS)Nzexit 7��r%r5r�create_subprocess_shellrPr6�rrRrSrrr�
test_shell�s
�zSubprocessMixin.test_shellcCs6|j�tjddd��}|j�|���}|�|d�dS)Nzexit 8T)Zstart_new_session�r`rbrrr�test_start_new_session�s��z&SubprocessMixin.test_start_new_sessioncC�\t}|j�tj|��}|��|j�|���}tjdkr$|�	|t
�dS|�tj
|�dS�Nr)�PROGRAM_BLOCKEDr%r5rrKrBrP�sys�platform�assertIsInstance�intr6r?�SIGKILL�rrrRr]rrr�	test_kill���
zSubprocessMixin.test_killcCrfrg)rhr%r5rrKrArPrirjrkrlr6r?r@rnrrr�test_terminate�rpzSubprocessMixin.test_terminaterzDon't have SIGHUPc
s�t�tjtj�}z5d}tjd|g}�j�tj|dt	j
i��}�fdd�}�j�||��}��tj|�Wt�tj|�dSt�tj|�w)Nz<import time; print("sleeping", flush=True); time.sleep(3600)r
rc�s<�|j��IdH}��|d�|�tj�|��IdH}|S)Ns	sleeping
)r�readliner6r>r?�SIGHUPrP)rR�liner]r'rrr>�s�z5SubprocessMixin.test_send_signal.<locals>.send_signal)r?rs�SIG_DFLri�
executabler%r5rrKrrLr6)rZold_handler�coderrRr>r]rr'r�test_send_signal�s���	"z SubprocessMixin.test_send_signalcCs0dtj}|j�tjtjddtj	d��}||fS)N�xr
�pass�r)
rZ
PIPE_MAX_SIZEr%r5rrKrirvrrL)r�
large_datarRrrr�prepare_broken_pipe_test�s
��z(SubprocessMixin.prepare_broken_pipe_testcCsp|��\}}dd�}|||�}t���|�ttf|jj|�Wd�n1s)wY|j�|���dS)Nc�s2�t�d�IdH|j�|�|j��IdHdS)Ng�?)r�sleeprrMrN)rRrQrrr�write_stdin�s�z;SubprocessMixin.test_stdin_broken_pipe.<locals>.write_stdin)	r}�
test_utils�disable_loggerr<�BrokenPipeError�ConnectionResetErrorr%r5rP)rrRr|r�cororrr�test_stdin_broken_pipe�s


��z&SubprocessMixin.test_stdin_broken_pipecCsB|��\}}|j�dd��|j�|�|��|j�|���dS)NcSsdSr
r)r%�msgrrr�<lambda>szESubprocessMixin.test_communicate_ignore_broken_pipe.<locals>.<lambda>)r}r%Zset_exception_handlerr5r\rP)rrRr|rrr�#test_communicate_ignore_broken_pipes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�
rzsys.stdout.write("x" * %s)�sys.stdout.flush()c�s6��|i|��IdH\}}t��|_t��|_||fSr
)rr�
pause_reading�resume_reading)r�kwr0r/��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�rrKrirvrrLZ
_transportZget_pipe_transportr\)rwr�rRZstdout_transportrr�r�r�sizer�r�test_pause_readings$���z>SubprocessMixin.test_pause_reading.<locals>.test_pause_readingry)r%r5r6r8r�r9r�)rr�rr0rr�rr�s"z"SubprocessMixin.test_pause_readingcC�<dd�}|j�|d��\}}|�|��d�|�|d�dS)Nc	��\�d}tjtjd|tjjtjjtjjdd�IdH}|�|�IdH\}}|��IdH}||fS�N�5import sys; data = sys.stdin.read(); print(len(data))r
F�rrrZ	close_fds�rrKrirvrrLr\rP��messagerwrRrrrSrrr�len_message7���z?SubprocessMixin.test_stdin_not_inheritable.<locals>.len_message�abc�3r�r%r5r6�rstrip)rr��outputrSrrr�test_stdin_not_inheritable4�
z*SubprocessMixin.test_stdin_not_inheritablecC�:dd�}|j�|��\}}|�|��d�|�|d�dS)Nc	�s\�d}tjtjd|tjjtjjtjjdd�IdH}|�d�IdH\}}|��IdH}||fS)Nr�r
Fr��r��rwrRrrrSrrr�empty_inputJr�z5SubprocessMixin.test_empty_input.<locals>.empty_input�0rr��rr�r�rSrrr�test_empty_inputH�
z SubprocessMixin.test_empty_inputcCr�)Nc	�sZ�d}tjtjd|tjjtjjtjjdd�IdH}|��IdH\}}|��IdH}||fSr�)	rrKrirvr�DEVNULLrLr\rPr�rrrr�]s��z7SubprocessMixin.test_devnull_input.<locals>.empty_inputr�rr�r�rrr�test_devnull_input[r�z"SubprocessMixin.test_devnull_inputcC�6dd�}|j�|��\}}|�|d�|�|d�dS)Nc	�s\�d}tjtjd|tjjtjjtjjdd�IdH}|�d�IdH\}}|��IdH}||fS�Nr�r
Fr�r��	rrKrirvrrLr�r\rPr�rrr�empty_outputpr�z9SubprocessMixin.test_devnull_output.<locals>.empty_outputr�r%r5r6)rr�r�rSrrr�test_devnull_outputn�
z#SubprocessMixin.test_devnull_outputcCr�)Nc	�s\�d}tjtjd|tjjtjjtjjdd�IdH}|�d�IdH\}}|��IdH}||fSr�r�r�rrr�empty_error�r�z7SubprocessMixin.test_devnull_error.<locals>.empty_errorrr�)rr�r�rSrrr�test_devnull_error�r�z"SubprocessMixin.test_devnull_errorZlinuxzDon't have /dev/stdincCr�)Nc	�r�)Nz?file = open("/dev/stdin"); data = file.read(); print(len(data))r
Fr�r�r�rrr�devstdin_input�r�z;SubprocessMixin.test_devstdin_input.<locals>.devstdin_inputr�r�rr�)rr�r�rSrrr�test_devstdin_input�r�z#SubprocessMixin.test_devstdin_inputc��fdd�}�j�|��dS)Nc�sv�tjt�IdH}�j�|���}�j�|j�z|IdHWn
tjy)Ynw|��|�	�|��IdHdSr
)
rrKrhr%�create_taskrP�	call_soon�cancel�CancelledErrorrB)rRrZr'rr�cancel_wait�s��z=SubprocessMixin.test_cancel_process_wait.<locals>.cancel_wait�r%r5)rr�rr'r�test_cancel_process_wait�sz(SubprocessMixin.test_cancel_process_waitcsH�fdd�}t����j�|��Wd�dS1swYdS)Nc�sN�tjt�}�j�|�}�j�|j�z|IdHWdStjy&YdSwr
)rrKrhr%r�r�r�r��r�rZr'rr�cancel_make_transport�s�
�zYSubprocessMixin.test_cancel_make_subprocess_transport_exec.<locals>.cancel_make_transport)r�r�r%r5�rr�rr'r�*test_cancel_make_subprocess_transport_exec�s
"�z:SubprocessMixin.test_cancel_make_subprocess_transport_execcsT�fdd�}t����j�|��t��j�Wd�dS1s#wYdS)Nc�sZ��jjtjgt�R�}�j�|�}�j�|j�z|IdHWdStjy,YdSwr
)	r%�subprocess_execr�SubprocessProtocolrhr�r�r�r�r�r'rrr��s���zDSubprocessMixin.test_cancel_post_init.<locals>.cancel_make_transport)r�r�r%r5�run_brieflyr�rr'r�test_cancel_post_init�s


"�z%SubprocessMixin.test_cancel_post_initc	s��fdd�}t���#z�j�|��\}}Wntjy%��d�YnwWd�n1s0wY��|���|�t�	�j�dS)Nc�s|��jjtjgt�R�}|IdH\}}d���fdd�}|�d�}|j�||_|��}|��t�	|�
�d�IdH|�fS)NFcsd���dS)NTrr�Zkill_calledZ	orig_killrrrB�s
zKSubprocessMixin.test_close_kill_running.<locals>.kill_running.<locals>.killr�)r%r�rr�rh�get_extra_inforBr7rCrXZ_wait)�creater0r/rBrRr]r'r�r�kill_running�s��
z=SubprocessMixin.test_close_kill_running.<locals>.kill_runningz2Timeout failure on waiting for subprocess stopping)
r�r�r%r5r�TimeoutErrorZskipTestr;r8r�)rr�r]�killedrr'r�test_close_kill_running�s 
�����
	
z'SubprocessMixin.test_close_kill_runningcs��fdd�}t����j�|��}t��j�Wd�n1s"wY|\}}}��|���|���|�tj	dkrNt
�t�rPt�
�j��dSdSdS)Nc�sp��jjtjgt�R�}|IdH\}}|�d�}|��|��t�	�|_|�
�}|��}|��|||jj
fS)Nr)r%r�rr�rhr�rBrPrrZpollr7rCr9)r�r0r/rR�proc_returncodeZtransport_returncoder'rrr�
s��

zCSubprocessMixin.test_close_dont_kill_finished.<locals>.kill_runningr)r�r�r%r5r�ZassertIsNotNoner;r:rirj�
isinstance�SubprocessFastWatcherTestsr�get_child_watcherZ
_callbacks�clear)rr��resultr�Ztransport_return_coder�rr'r�test_close_dont_kill_finisheds
�




��z-SubprocessMixin.test_close_dont_kill_finishedc
�s��tjdkr	d}nd}t�|��T}t}||_tjdd��0}|�|��t	j
tjdd|d�IdHWd�n1s:wY|�|g�Wd�n1sOwYWd�dSWd�dS1sgwYdS)	Nrzasyncio.windows_utils.Popenzsubprocess.PopenT)�recordr
rzr{)
rirjrZpatch�ZeroDivisionErrorZside_effect�warnings�catch_warningsr<rrKrvr6)rr�target�popen�excZwarnsrrr�_test_popen_error1s*�
����"�z!SubprocessMixin._test_popen_errorcCs|j�|jdd��dS�Nr{)r%r5r�r'rrr�test_popen_errorDsz SubprocessMixin.test_popen_errorcCs|j�|jtjd��dSr�)r%r5r�rrLr'rrr� test_popen_error_with_stdin_pipeIs�z0SubprocessMixin.test_popen_error_with_stdin_pipecCsdd�}|j�|��dS)Nc�s^�d�gd��}tjtjd|tjjd�IdH}	|j�d�IdH}|r,t�	d�IdHndSq)Nr�)rzfor _ in range(64):z     sys.stdout.write("x" * 4096)r�zsys.exit(1)r
)rTig333333�?)
r�rrKrirvrrLrrOr~)rwZprocessrQrrr�executeQs���zDSubprocessMixin.test_read_stdout_after_process_exit.<locals>.executer��rr�rrr�#test_read_stdout_after_process_exitOsz3SubprocessMixin.test_read_stdout_after_process_exitcr�)Nc������t��tjtjdd�IdHWd�n1swY��t��tjtjdd�IdHWd�n1s<wY��t��tjtjdd�IdHWd�dS1s]wYdS�NT)�textzutf-8)�encoding�strict)�errors)r<�
ValueErrorrrKrirvrr'rrr�g� ������"�zLSubprocessMixin.test_create_subprocess_exec_text_mode_fails.<locals>.executer�r�rr'r�+test_create_subprocess_exec_text_mode_failsfs
z;SubprocessMixin.test_create_subprocess_exec_text_mode_failscr�)Nc�r�r�)r<r�rrarirvrr'rrr�xr�zMSubprocessMixin.test_create_subprocess_shell_text_mode_fails.<locals>.executer�r�rr'r�,test_create_subprocess_shell_text_mode_failsvs
z<SubprocessMixin.test_create_subprocess_shell_text_mode_failscCs dd�}|�|j�|���dS)Nc�s\�t�t�tj�dd�IdH}|��IdHt�tjddt�d��IdH}|��IdHdS)Nr
rz�.)rrKr�FakePathrirvrP)�prrrr��s�
�
�zFSubprocessMixin.test_create_subprocess_exec_with_path.<locals>.execute�r;r%r5r�rrr�%test_create_subprocess_exec_with_path�sz5SubprocessMixin.test_create_subprocess_exec_with_pathN)$rr r!r[r^rcrerorq�unittestZskipIfrirjrxr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrIks@

,
%)rIcs,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#�tearDownrr�r�rr�rCrr(rrr�s


zSubprocessWatcherMixin.tearDown)rr r!r�r$rrHrrr(rr��s
r�c@�eZdZejZdS)�SubprocessThreadedWatcherTestsN)rr r!r	ZThreadedChildWatcherr�rrrrr��
rzqbpo-38323: MultiLoopChildWatcher has a race condition                     and these tests can hang the test suitec@r)�SubprocessMultiLoopWatcherTestsN)rr r!r	ZMultiLoopChildWatcherr�rrrrr�s
rc@r)�SubprocessSafeWatcherTestsN)rr r!r	ZSafeChildWatcherr�rrrrr�rrc@r)r�N)rr r!r	ZFastChildWatcherr�rrrrr��rr�cCs>ttd�sdSz
t�t�t����WdStyYdSw)N�
pidfd_openFT)�hasattr�osrCr	�getpid�OSErrorrrrr�has_pidfd_support�s
��rz(operating system does not support pidfdsc@r)�SubprocessPidfdWatcherTestsN)rr r!r	ZPidfdChildWatcherr�rrrrr�s
rcseZdZ�fdd�Z�ZS)�SubprocessProactorTestscs$t���t��|_|�|j�dSr
)r#r$rZProactorEventLoopr%r&r'r(rrr$�r*zSubprocessProactorTests.setUp)rr r!r$rHrrr(rr�src@r)�GenericWatcherTestscs$�fdd�}���j�|���dS)Nc�st�t�tj�}d|j_t�|���t��t	�
t�t
j�dd�IdHWd�n1s.wY|j��dS)NFr
rz)rZcreate_authspecrZAbstractChildWatcherZ	is_activeZreturn_valuerr<�RuntimeErrorrrKrr�rirvZadd_child_handlerZassert_not_called)rr'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)rr r!rrrrrr�sr�__main__))rr?rir�r�rrrrZtest.test_asynciorr�r+rZtest.supportrrjr	rvrhr�rWrZBaseSubprocessTransportrZTestCaser"rIr�r�skiprrr�rZ
skipUnlessrrrr�mainrrrr�<module>sl
�	A
,����	���