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.7/test/test_asyncio/__pycache__/test_subprocess.cpython-37.pyc
B

��g9R�@s:ddlZddlZddlZddlZddlmZddlZddlmZddlmZddlm	Z
ddlmZej
dkrzddlmZejd	d
gZejd	d�d�gZGd
d�dej�ZGdd�de
j�ZGdd�d�Zej
dk�rGdd�de�ZGdd�dee
j�ZGdd�dee
j�ZnGdd�dee
j�Zedk�r6e��dS)�N)�mock)�base_subprocess)�
subprocess)�utils)�support�win32)�unix_eventsz-czimport time; time.sleep(3600)�;)z
import syszdata = sys.stdin.buffer.read()zsys.stdout.buffer.write(data)c@seZdZdd�ZdS)�TestSubprocessTransportcOs.t��|_d|j_d|j_d|j_d|j_dS)N���)r�Mock�_proc�stdin�stdout�stderr�pid)�self�args�kwargs�r�=/usr/local/lib/python3.7/test/test_asyncio/test_subprocess.py�_starts

zTestSubprocessTransport._startN)�__name__�
__module__�__qualname__rrrrrr
sr
cs6eZdZ�fdd�Zd
dd�Zdd�Zdd	�Z�ZS)�SubprocessTransportTestscs$t���|��|_|�|j�dS)N)�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_exitedr
r)rr"�protocol�	transportrrr�create_transport*sz)SubprocessTransportTests.create_transportcCs�tj|jd�}|�|�\}}|�d�|j�|�|�|��d�|�|j	j
�|�|jj
�|�|jj
�|�|jj
dd�|�|���|�|j�|�|j�|�|j�|�t|jtj�|�t|j�|�t|j�|��dS)N)r�r)N)�asyncio�Futurerr'�_process_exited�run_until_complete�assertEqual�get_returncode�
assertTruer#�calledr$Zconnection_lost�	call_args�assertFalseZ
is_closing�assertIsNoneZ_loopr
Z	_protocol�assertRaises�ProcessLookupError�send_signal�signal�SIGTERM�	terminate�kill�close)rr"r&r%rrr�test_proc_exited3s$
z)SubprocessTransportTests.test_proc_exitedcCs�tj|jd�}|�|�\}}|�d�|j�|�|�t|�d�d|_|�t|�d�d|_	d|_|�t|�d�|�
�dS)N)rr(z-<TestSubprocessTransport pid=-1 returncode=6>z(<TestSubprocessTransport pid=-1 running>z%<TestSubprocessTransport not started>)r)r*rr'r+r,r-�reprZ_returncodeZ_pidr;)rr"r&r%rrr�test_subprocess_reprMs"
z-SubprocessTransportTests.test_subprocess_repr)N)rrrrr'r<r>�
__classcell__rr)r rr#s
	rc@s�eZdZdd�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/S)0�SubprocessMixincsXt���fdd�}|d�}tj|d�jd�}�j�|�\}}��|d���|d�dS)Nc�sltj�tjtj�jd��IdH}|j�|�|j��IdH|j��|j	�
�IdH}|��IdH}||fS)N)rrr)r)�create_subprocess_execr�PIPErr�write�drainr;r�read�wait)�data�proc�exitcode)rrrr�runjs
z.SubprocessMixin.test_stdin_stdout.<locals>.runs	some datagN@)rr)�PROGRAM_CATr)�wait_forrr,r-)rrJ�taskrIrr)rrr�test_stdin_stdoutgsz!SubprocessMixin.test_stdin_stdoutcsXt���fdd�}|d�}tj|d�jd�}�j�|�\}}��|d���|d�dS)Nc�s>tj�tjtj�jd��IdH}|�|�IdH\}}|j|fS)N)rrr)r)rArrBr�communicate�
returncode)rGrHrr)rrrrrJ�sz-SubprocessMixin.test_communicate.<locals>.runs	some datagN@)rr)rKr)rLrr,r-)rrJrMrIrr)rrr�test_communicate�s	z SubprocessMixin.test_communicatecCs<tjd|jd�}|j�|�}|j�|���}|�|d�dS)Nzexit 7)r�)r)�create_subprocess_shellrr,rFr-)r�createrHrIrrr�
test_shell�s

zSubprocessMixin.test_shellcCs>tjdd|jd�}|j�|�}|j�|���}|�|d�dS)Nzexit 8T)Zstart_new_sessionr�)r)rSrr,rFr-)rrTrHrIrrr�test_start_new_session�s
z&SubprocessMixin.test_start_new_sessioncCsft}tj|d|ji�}|j�|�}|��|j�|���}tjdkrR|�	|t
�n|�tj
|�dS)Nrr)�PROGRAM_BLOCKEDr)rArr,r:rF�sys�platform�assertIsInstance�intr-r7�SIGKILL)rrrTrHrPrrr�	test_kill�s
zSubprocessMixin.test_killcCsft}tj|d|ji�}|j�|�}|��|j�|���}tjdkrR|�	|t
�n|�tj
|�dS)Nrr)rXr)rArr,r9rFrYrZr[r\r-r7r8)rrrTrHrPrrr�test_terminate�s
zSubprocessMixin.test_terminaterzDon't have SIGHUPc
s�t�tjtj�}zbd}tjd|g}tj|tj�j	d��}�j	�
|�}�fdd�}�j	�
||��}��tj|�Wdt�tj|�XdS)Nz<import time; print("sleeping", flush=True); time.sleep(3600)z-c)rrc�s:|j��IdH}��|d�|�tj�|��IdH}|S)Ns	sleeping
)r�readliner-r6r7�SIGHUPrF)rH�linerP)rrrr6�s
z5SubprocessMixin.test_send_signal.<locals>.send_signal)r7ra�SIG_DFLrY�
executabler)rArrBrr,r-)rZold_handler�coderrTrHr6rPr)rr�test_send_signal�s	z SubprocessMixin.test_send_signalcCs8dtj}tjtjddtj|jd�}|j�	|�}||fS)N�xz-c�pass)rr)
rZ
PIPE_MAX_SIZEr)rArYrdrrBrr,)r�
large_datarTrHrrr�prepare_broken_pipe_test�s

z(SubprocessMixin.prepare_broken_pipe_testc	s`���\}}�fdd�}|||�}t�����ttf�jj|�WdQRX�j�|���dS)Nc�s6tjd�jd�IdH|j�|�|j��IdHdS)Ng�?)r)r)�sleeprrrCrD)rHrG)rrr�write_stdin�sz;SubprocessMixin.test_stdin_broken_pipe.<locals>.write_stdin)	rj�
test_utils�disable_loggerr4�BrokenPipeError�ConnectionResetErrorrr,rF)rrHrirl�coror)rr�test_stdin_broken_pipe�s


z&SubprocessMixin.test_stdin_broken_pipec	CsF|��\}}t���|j�|�|��WdQRX|j�|���dS)N)rjrmrnrr,rOrF)rrHrirrr�#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��jd�IdH}|j	�
d	�}|��IdH\}}||fS)
N�
z
import syszsys.stdout.write("x" * %s)zsys.stdout.flush()c�s0�||�IdH\}}t��|_t��|_||fS)N)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_mockz-c)rr�limitrrv)�joinrr{r)rArYrdrrBZ
_transportZget_pipe_transportrO)rer|rHZstdout_transportrr)r}r�size)r{r�test_pause_reading�s z>SubprocessMixin.test_pause_reading.<locals>.test_pause_readingrg)rr,r-r/rxr0ry)rr�rr&r)r}rrrr��s"z"SubprocessMixin.test_pause_readingcs@�fdd�}�j�|d��\}}��|��d���|d�dS)Nc
�s^d}tjtjd|tjjtjjtjjd�jd�IdH}|�|�IdH\}}|��IdH}||fS)Nz5import sys; data = sys.stdin.read(); print(len(data))z-cF)rrr�	close_fdsr)	r)rArYrdrrBrrOrF)�messagererHrrrI)rrr�len_message)sz?SubprocessMixin.test_stdin_not_inheritable.<locals>.len_messagesabc�3r)rr,r-�rstrip)rr��outputrIr)rr�test_stdin_not_inheritable&s
z*SubprocessMixin.test_stdin_not_inheritablecs>�fdd�}�j�|��\}}��|��d���|d�dS)Nc
�s^d}tjtjd|tjjtjjtjjd�jd�IdH}|�d�IdH\}}|��IdH}||fS)Nz5import sys; data = sys.stdin.read(); print(len(data))z-cF)rrrr�r�)	r)rArYrdrrBrrOrF)rerHrrrI)rrr�empty_input<sz5SubprocessMixin.test_empty_input.<locals>.empty_input�0r)rr,r-r�)rr�r�rIr)rr�test_empty_input:s
z SubprocessMixin.test_empty_inputcs�fdd�}�j�|��dS)Nc�s~tjtd�ji�IdH}�j�|���}�j�|j�y|IdHWntjk
rZYnX|��|�	�|��IdHdS)Nr)
r)rArXr�create_taskrF�	call_soon�cancel�CancelledErrorr:)rHrM)rrr�cancel_waitPsz=SubprocessMixin.test_cancel_process_wait.<locals>.cancel_wait)rr,)rr�r)rr�test_cancel_process_waitMsz(SubprocessMixin.test_cancel_process_waitc	s2�fdd�}t����j�|��WdQRXdS)Nc�sVtjtd�ji�}�j�|�}�j�|j�y|IdHWntjk
rPYnXdS)Nr)r)rArXrr�r�r�r�)rqrM)rrr�cancel_make_transporths
zYSubprocessMixin.test_cancel_make_subprocess_transport_exec.<locals>.cancel_make_transport)rmrnrr,)rr�r)rr�*test_cancel_make_subprocess_transport_execfs
z:SubprocessMixin.test_cancel_make_subprocess_transport_execc	s>�fdd�}t��� �j�|��t��j�WdQRXdS)Nc�sX�jjtjft��}�j�|�}�j�|j�y|IdHWntjk
rRYnXdS)N)	r�subprocess_execr)�SubprocessProtocolrXr�r�r�r�)rqrM)rrrr�zszDSubprocessMixin.test_cancel_post_init.<locals>.cancel_make_transport)rmrnrr,�run_briefly)rr�r)rr�test_cancel_post_initxs
z%SubprocessMixin.test_cancel_post_initc	sV�fdd�}t����j�|��\}}WdQRX��|���|�t��j�dS)Nc�sp�jjtjft��}|IdH\}}d���fdd�}|�d�}|j�||_|��}|��|�	�IdH|�fS)NFcsd���dS)NTrr)�kill_called�	orig_killrrr:�szKSubprocessMixin.test_close_kill_running.<locals>.kill_running.<locals>.killr)
rr�r)r�rX�get_extra_infor:r.r;Z_wait)rTr&r%r:rHrP)r)r�r�r�kill_running�s
z=SubprocessMixin.test_close_kill_running.<locals>.kill_running)rmrnrr,r3r/r�)rr�rP�killedr)rr�test_close_kill_running�s


z'SubprocessMixin.test_close_kill_runningc	s��fdd�}t��� �j�|��}t��j�WdQRX|\}}}��|���|���|�tj	dkr�t
�t�r�t�
�j��dS)Nc�sl�jjtjft��}|IdH\}}|�d�}|��|��t�	�|_|�
�}|��}|��|||jj
fS)Nr)rr�r)r�rXr�r:rFrrZpollr.r;r0)rTr&r%rH�proc_returncodeZtransport_returncode)rrrr��s

zCSubprocessMixin.test_close_dont_kill_finished.<locals>.kill_runningr)rmrnrr,r�ZassertIsNotNoner3r2rYrZ�
isinstance�SubprocessFastWatcherTestsr)Zget_child_watcherZ
_callbacks�clear)rr��resultr�Ztransport_return_coder�r)rr�test_close_dont_kill_finished�s






z-SubprocessMixin.test_close_dont_kill_finishedcCs�tjdkrd}nd}t�|��n}t}||_tjtjdd||j	d�}t
jdd��4}|�|��|j	�
|�WdQRX|�|g�WdQRXWdQRXdS)	Nrzasyncio.windows_utils.Popenzsubprocess.Popenz-crh)rrT)�record)rYrZrZpatch�ZeroDivisionErrorZside_effectr)rArdr�warnings�catch_warningsr4r,r-)rr�target�popen�excrTZwarnsrrr�_test_popen_error�s


z!SubprocessMixin._test_popen_errorcCs|jdd�dS)N)r)r�)rrrr�test_popen_error�sz SubprocessMixin.test_popen_errorcCs|jtjd�dS)N)r)r�rrB)rrrr� test_popen_error_with_stdin_pipe�sz0SubprocessMixin.test_popen_error_with_stdin_pipecs�fdd�}�j�|��dS)Nc�std�dddddg�}tjtjd|tjj�jd�}|IdH}x4|j�	d	�IdH}|rjtj
d
�jd�IdHq<Pq<WdS)Nrwz
import syszfor _ in range(64):z     sys.stdout.write("x" * 4096)zsys.stdout.flush()zsys.exit(1)z-c)rrig333333�?)r)r~r)rArYrdrrBrrrErk)reZfutZprocessrG)rrr�execute�s

zDSubprocessMixin.test_read_stdout_after_process_exit.<locals>.execute)rr,)rr�r)rr�#test_read_stdout_after_process_exit�sz3SubprocessMixin.test_read_stdout_after_process_exitN)rrrrNrQrUrWr^r_�unittestZskipIfrYrZrfrjrrrsr�r�r�r�r�r�r�r�r�r�r�r�rrrrr@es,	,)r@cs eZdZdZ�fdd�Z�ZS)�SubprocessWatcherMixinNcsXt���t��}|��|_|�|j�|��}|�|j�|�	|�|�
|j	d�dS)N)rrr)Zget_event_loop_policyZnew_event_looprr�WatcherZattach_loopZset_child_watcherZ
addCleanup)rZpolicyZwatcher)r rrrs


zSubprocessWatcherMixin.setUp)rrrr�rr?rr)r rr�sr�c@seZdZejZdS)�SubprocessSafeWatcherTestsN)rrrrZSafeChildWatcherr�rrrrr�sr�c@seZdZejZdS)r�N)rrrrZFastChildWatcherr�rrrrr�sr�cseZdZ�fdd�Z�ZS)�SubprocessProactorTestscs$t���t��|_|�|j�dS)N)rrr)ZProactorEventLooprr)r)r rrr%s

zSubprocessProactorTests.setUp)rrrrr?rr)r rr�#sr��__main__)r7rYr�r�rr)rrZtest.test_asynciorrmr!rrZrrdrXr~rKZBaseSubprocessTransportr
ZTestCaserr@r�r�r�r�r�mainrrrr�<module>s:
	B$