HEX
Server: LiteSpeed
System: Linux server.nevid-deploma.com 4.18.0-553.111.1.lve.el8.x86_64 #1 SMP Fri Mar 13 13:42:17 UTC 2026 x86_64
User: smilepac (1037)
PHP: 8.1.34
Disabled: NONE
Upload Files
File: //opt/cppython/lib/python3.8/test/test_asyncio/__pycache__/test_subprocess.cpython-38.pyc
U

/D�gSe�@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�@/opt/cppython/lib/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_returncode�_pidr@rArrr�test_subprocess_reprQs(

���z-SubprocessTransportTests.test_subprocess_repr)N)rrrr"r.rBrE�
__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
�wait_forr#r2r3�rrS�taskrQrrrRr�test_stdin_stdoutksz!SubprocessMixin.test_stdin_stdoutcsPt��fdd�}|d�}t�|d�}|j�|�\}}|�|d�|�|d�dS)Nc�s:tj�tjtjd��IdH}|�|�IdH\}}|j|fSrH)r
rIrrJ�communicate�
returncode)rOrPrrrRrrrS�s�z-SubprocessMixin.test_communicate.<locals>.runrTrUrrVrYrrRr�test_communicate�s	z SubprocessMixin.test_communicatecCs2|j�t�d��}|j�|���}|�|d�dS)Nzexit 7��r#r2r
�create_subprocess_shellrNr3�rrPrQrrr�
test_shell�s
�zSubprocessMixin.test_shellcCs6|j�tjddd��}|j�|���}|�|d�dS)Nzexit 8T)�start_new_session�r`rbrrr�test_start_new_session�s��z&SubprocessMixin.test_start_new_sessioncCsZt}|j�tj|��}|��|j�|���}tjdkrF|�	|t
�n|�tj
|�dS�Nr)�PROGRAM_BLOCKEDr#r2r
rIr?rN�sys�platform�assertIsInstance�intr3r<�SIGKILL�rrrPr]rrr�	test_kill�s�
zSubprocessMixin.test_killcCsZt}|j�tj|��}|��|j�|���}tjdkrF|�	|t
�n|�tj
|�dSrg)rhr#r2r
rIr>rNrirjrkrlr3r<r=rnrrr�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<�SIGHUPrN)rP�liner]r%rrr;�s
z5SubprocessMixin.test_send_signal.<locals>.send_signal)r<rr�SIG_DFLri�
executabler#r2r
rIrrJr3)rZold_handler�coderrPr;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
rIrirurrJ)r�
large_datarPrrr�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
�sleeprrKrL)rPrOrrr�write_stdin�sz;SubprocessMixin.test_stdin_broken_pipe.<locals>.write_stdin)	r|�
test_utils�disable_loggerr9�BrokenPipeError�ConnectionResetErrorr#r2rN)rrPr{r~�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>)r|r#Zset_exception_handlerr2r\rN)rrPr{rrr�#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
rIrirurrJZ
_transportZget_pipe_transportr\)rvr�rPZstdout_transportrr�r�r�sizer�r�test_pause_reading
s&��z>SubprocessMixin.test_pause_reading.<locals>.test_pause_readingrx)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�rrr�	close_fds�r
rIrirurrJr\rN)�messagervrPrrrQrrr�len_message5s�z?SubprocessMixin.test_stdin_not_inheritable.<locals>.len_message�abc�3r�r#r2r3�rstrip)rr��outputrQrrr�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��rvrPrrrQrrr�empty_inputHs�z5SubprocessMixin.test_empty_input.<locals>.empty_input�0rr��rr�r�rQrrr�test_empty_inputFs
z SubprocessMixin.test_empty_inputcCs:dd�}|j�|��\}}|�|��d�|�|d�dS)Nc	�sXd}tjtjd|tjjtjjtjjdd�IdH}|��IdH\}}|��IdH}||fSr�)	r
rIrirur�DEVNULLrJr\rNr�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
rIrirurrJr�r\rNr�rrr�empty_outputns�z9SubprocessMixin.test_devnull_output.<locals>.empty_outputr�r#r2r3)rr�r�rQrrr�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�rQrrr�test_devnull_errors
z"SubprocessMixin.test_devnull_errorcs�fdd�}�j�|��dS)Nc�svtjt�IdH}�j�|���}�j�|j�z|IdHWntjk
rRYnX|��|�	�|��IdHdSr)
r
rIrhr#�create_taskrN�	call_soon�cancel�CancelledErrorr?)rPrZr%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
rIrhr#r�r�r�r��r�rZr%rr�cancel_make_transport�s
zYSubprocessMixin.test_cancel_make_subprocess_transport_exec.<locals>.cancel_make_transport)rr�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
�SubprocessProtocolrhr�r�r�r�r�r%rrr��s�zDSubprocessMixin.test_cancel_post_init.<locals>.cancel_make_transport)rr�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�rh�get_extra_infor?r4r@�_wait)�creater-r,r?rPr]r%r�r�kill_running�s�
z=SubprocessMixin.test_close_kill_running.<locals>.kill_running)rr�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�rhr�r?rNrr�pollr4r@r6)r�r-r,rP�proc_returncodeZtransport_returncoder%rrr��s�

zCSubprocessMixin.test_close_dont_kill_finished.<locals>.kill_runningr)rr�r#r2r�ZassertIsNotNoner8r7rirj�
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	ryrz)
rirjrZpatch�ZeroDivisionErrorZside_effect�warnings�catch_warningsr9r
rIrur3)rr�target�popen�excZwarnsrrr�_test_popen_errors
�z!SubprocessMixin._test_popen_errorcCs|j�|jdd��dS�Nrz)r#r2r�r%rrr�test_popen_error'sz SubprocessMixin.test_popen_errorcCs|j�|jtjd��dSr�)r#r2r�rrJr%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
rIrirurrJrrMr})rv�processrOrrr�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�
ValueErrorrrIrirurr%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�rrarirurr%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	ry�.)rrIr�FakePathrirurN)�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	ry�r#)�assertWarns�DeprecationWarningr
rIrirur#rN�rPr%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
rar#rNr�r%rrr��s�z6SubprocessMixin.test_shell_loop_deprecated.<locals>.gor�r�rr%r�test_shell_loop_deprecatedsz*SubprocessMixin.test_shell_loop_deprecatedN)%rrrr[r^rcrfrorp�unittestZskipIfrirjrwr|r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrGis>


,)
rGcs,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�rFrrr&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�src@seZdZejZdS)�SubprocessSafeWatcherTestsN)rrrrZSafeChildWatcherr�rrrrr�src@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"rFrrr&rr�src@seZdZdd�ZdS)�GenericWatcherTestscs$�fdd�}���j�|���dS)Nc	�s^t�tj�}d|j_t�|���t��"t	�
t�t
j�dd�IdHW5QRX|j��dS)NFr	ry)rZcreate_authspecr
ZAbstractChildWatcherZ	is_activeZreturn_valuer�r9�RuntimeErrorrrIrr�riruZadd_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<rir�r�rr
rrZtest.test_asynciorrr(rrjrrurhr�rWrZBaseSubprocessTransportrZTestCaser rGr�r��skiprrr�rrr�mainrrrr�<module>sV
�	A%����