HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/test/test_asyncio/__pycache__/test_subprocess.cpython-310.pyc
o

�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�>/usr/local/lib/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_returncode�_pidrCrDrrr�test_subprocess_reprSs(

���z-SubprocessTransportTests.test_subprocess_reprr
)rr r!r$r1rErH�
__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�rrV�taskrTrrrUr�test_stdin_stdoutmsz!SubprocessMixin.test_stdin_stdoutcsRt��fdd�}|d�}t�|tj�}|j�|�\}}|�|d�|�|d�dS)Nc�s<�tj�tjtjd��IdH}|�|�IdH\}}|j|fSrK)rrLrrM�communicate�
returncode)rRrSrrrUrrrV�s��
z-SubprocessMixin.test_communicate.<locals>.runrWr)rXrrYrZLONG_TIMEOUTr%r5r6rZrrUr�test_communicate�s	z SubprocessMixin.test_communicatecCs2|j�t�d��}|j�|���}|�|d�dS)Nzexit 7��r%r5r�create_subprocess_shellrQr6�rrSrTrrr�
test_shell�s
�zSubprocessMixin.test_shellcCs6|j�tjddd��}|j�|���}|�|d�dS)Nzexit 8T)�start_new_session�rarcrrr�test_start_new_session�s��z&SubprocessMixin.test_start_new_sessioncC�\t}|j�tj|��}|��|j�|���}tjdkr$|�	|t
�dS|�tj
|�dS�Nr)�PROGRAM_BLOCKEDr%r5rrLrBrQ�sys�platform�assertIsInstance�intr6r?�SIGKILL�rrrSr^rrr�	test_kill���
zSubprocessMixin.test_killcCrhri)rjr%r5rrLrArQrkrlrmrnr6r?r@rprrr�test_terminate�rrzSubprocessMixin.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?�SIGHUPrQ)rS�liner^r'rrr>�s�z5SubprocessMixin.test_send_signal.<locals>.send_signal)r?ru�SIG_DFLrk�
executabler%r5rrLrrMr6)rZold_handler�coderrSr>r^rr'r�test_send_signal�s���	"z SubprocessMixin.test_send_signalcCs0dtj}|j�tjtjddtj	d��}||fS)N�xr
�pass�r)
rZ
PIPE_MAX_SIZEr%r5rrLrkrxrrM)r�
large_datarSrrr�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�sleeprrNrO)rSrRrrr�write_stdin�s�z;SubprocessMixin.test_stdin_broken_pipe.<locals>.write_stdin)	r�
test_utils�disable_loggerr<�BrokenPipeError�ConnectionResetErrorr%r5rQ)rrSr~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>)rr%Zset_exception_handlerr5r]rQ)rrSr~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�rrLrkrxrrMZ
_transportZget_pipe_transportr])ryr�rSZstdout_transportrr�r�r�sizer�r�test_pause_readings$���z>SubprocessMixin.test_pause_reading.<locals>.test_pause_readingr{)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�rrr�	close_fds�rrLrkrxrrMr]rQ��messageryrSrrrTrrr�len_message7���z?SubprocessMixin.test_stdin_not_inheritable.<locals>.len_message�abc�3r�r%r5r6�rstrip)rr��outputrTrrr�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��ryrSrrrTrrr�empty_inputJr�z5SubprocessMixin.test_empty_input.<locals>.empty_input�0rr��rr�r�rTrrr�test_empty_inputH�
z SubprocessMixin.test_empty_inputcCr�)Nc	�sZ�d}tjtjd|tjjtjjtjjdd�IdH}|��IdH\}}|��IdH}||fSr�)	rrLrkrxr�DEVNULLrMr]rQr�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��	rrLrkrxrrMr�r]rQr�rrr�empty_outputpr�z9SubprocessMixin.test_devnull_output.<locals>.empty_outputr�r%r5r6)rr�r�rTrrr�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�rTrrr�test_devnull_error�r�z"SubprocessMixin.test_devnull_error�linuxzDon'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�rTrrr�test_devstdin_input�r�z#SubprocessMixin.test_devstdin_inputc��fdd�}�j�|��dS)Nc�sv�tjt�IdH}�j�|���}�j�|j�z|IdHWn
tjy)Ynw|��|�	�|��IdHdSr
)
rrLrjr%�create_taskrQ�	call_soon�cancel�CancelledErrorrB)rSr[r'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
)rrLrjr%r�r�r�r��r�r[r'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�SubprocessProtocolrjr�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�rj�get_extra_inforBr7rCrY�_wait)�creater0r/rBrSr^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�rjr�rBrQrr�pollr7rCr9)r�r0r/rS�proc_returncodeZtransport_returncoder'rrr�
s��

zCSubprocessMixin.test_close_dont_kill_finished.<locals>.kill_runningr)r�r�r%r5r�ZassertIsNotNoner;r:rkrl�
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
r|r})
rkrlrZpatch�ZeroDivisionErrorZside_effect�warnings�catch_warningsr<rrLrxr6)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�rrMr'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�rrLrkrxrrMrrPr�)ry�processrRrrr�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<�
ValueErrorrrLrkrxrr'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�rrbrkrxrr'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
r|�.)rrLr�FakePathrkrxrQ)�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_rdrgrqrs�unittestZskipIfrkrlrzrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrJks@

,
%)rJcs,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#�tearDownrrr�rrrCrr(rrr
�s


zSubprocessWatcherMixin.tearDown)rr r!rr$r
rIrrr(rr�s
rc@�eZdZejZdS)�SubprocessThreadedWatcherTestsN)rr r!r	ZThreadedChildWatcherrrrrrr��
rzqbpo-38323: MultiLoopChildWatcher has a race condition                     and these tests can hang the test suitec@r)�SubprocessMultiLoopWatcherTestsN)rr r!r	ZMultiLoopChildWatcherrrrrrr�s
rc@r)�SubprocessSafeWatcherTestsN)rr r!r	ZSafeChildWatcherrrrrrr�r
rc@r)r�N)rr r!r	ZFastChildWatcherrrrrrr��r
r�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	ZPidfdChildWatcherrrrrrr�s
rcseZdZ�fdd�Z�ZS)�SubprocessProactorTestscs$t���t��|_|�|j�dSr
)r#r$rZProactorEventLoopr%r&r'r(rrr$�r*zSubprocessProactorTests.setUp)rr r!r$rIrrr(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
r|)rZcreate_authspecrZAbstractChildWatcherZ	is_activeZreturn_valuerr<�RuntimeErrorrrLrr�rkrxZadd_child_handlerZassert_not_called)r	r'rrr��s�
��zWGenericWatcherTests.test_create_subprocess_fails_with_inactive_watcher.<locals>.executerr�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?rkrr�rrrrZtest.test_asynciorr�r+rZtest.supportrrlr	rxrjr�rXrZBaseSubprocessTransportrZTestCaser"rJrr�skiprrr�rZ
skipUnlessrrrr�mainrrrr�<module>sl
�	A
,����	���