Your IP : 216.73.216.213


Current Path : /opt/alt/python311/lib64/python3.11/test/test_asyncio/__pycache__/
Upload File :
Current File : //opt/alt/python311/lib64/python3.11/test/test_asyncio/__pycache__/test_subprocess.cpython-311.pyc

�

�0�i�v���ddlZddlZddlZddlZddlZddlZddlZddlmZddlZddlm	Z	ddlm
Z
ddlmZ
ddlmZddlmZejrddlZnddlmZejd	�
��rejd���ejdd
gZejdd�d��gZd�ZGd�de	j��ZGd�de
j��ZGd�d��Z ej!dkr�Gd�de ��Z"Gd�de"e
j��Z#ej$d��Gd�de"e
j����Z%Gd�d e"e
j��Z&Gd!�d"e"e
j��Z'd#�Z(ej)e(��d$��Gd%�d&e"e
j����Z*Gd'�d(e
j��Z+nGd)�d*e e
j��Z,e-d+krej.��dSdS),�N)�mock)�base_subprocess)�
subprocess)�utils)�support)�	os_helper)�unix_eventsT)�addressz#Exposes ASAN flakiness in GitHub CI�-czimport time; time.sleep(3600)�;)�
import syszdata = sys.stdin.buffer.read()zsys.stdout.buffer.write(data)c�.�tjd��dS�N)�asyncio�set_event_loop_policy���H/opt/alt/python311/lib64/python3.11/test/test_asyncio/test_subprocess.py�tearDownModuler&s���!�$�'�'�'�'�'rc��eZdZd�ZdS)�TestSubprocessTransportc��tj��|_d|j_d|j_d|j_d|j_dS)N���)r�Mock�_proc�stdin�stdout�stderr�pid)�self�args�kwargss   r�_startzTestSubprocessTransport._start+s:���Y�[�[��
���
�� ��
�� ��
����
���rN)�__name__�
__module__�__qualname__r#rrrrr*s#����������rrc�2��eZdZ�fd�Zdd�Zd�Zd�Z�xZS)�SubprocessTransportTestsc���t�����|���|_|�|j��dSr)�super�setUp�
new_test_loop�loop�set_event_loop�r �	__class__s �rr+zSubprocessTransportTests.setUp4sC���
���
�
�����&�&�(�(��	����D�I�&�&�&�&�&rNc�l�tj��}t|j|dgddddd|��	�	}||fS)N�testFr)�waiter)rrrr-)r r3�protocol�	transports    r�create_transportz)SubprocessTransportTests.create_transport9sF���9�;�;��+��	�8�f�X�u��d�D�!�F�<�<�<�	��8�$�$rc��|j���}|�|��\}}|�d��|j�|��|�|���d��|�|jj	��|�|j
j	��|�|jj	��|�|jjdd��|�
|�����|�|j��|�|j��|�|j��|�t(|jt,j��|�t(|j��|�t(|j��|���dS)N�rr)r-�
create_futurer6�_process_exited�run_until_complete�assertEqual�get_returncode�
assertTrue�connection_made�called�process_exited�connection_lost�	call_args�assertFalse�
is_closing�assertIsNone�_loopr�	_protocol�assertRaises�ProcessLookupError�send_signal�signal�SIGTERM�	terminate�kill�close�r r3r5r4s    r�test_proc_exitedz)SubprocessTransportTests.test_proc_exited@s�����(�(�*�*��"�3�3�F�;�;��	�8��!�!�!�$�$�$��	�$�$�V�,�,�,�����1�1�3�3�Q�7�7�7�����0�7�8�8�8�����/�6�7�7�7�����0�7�8�8�8�����1�;�A�>��H�H�H�����-�-�/�/�0�0�0����)�/�*�*�*����)�/�*�*�*����)�-�.�.�.�	
���,�#�/���	A�	A�	A����,�i�.A�B�B�B����,�i�n�=�=�=��������rc���|j���}|�|��\}}|�d��|j�|��|�t
|��d��d|_|�t
|��d��d|_d|_|�t
|��d��|�	��dS)Nr8z-<TestSubprocessTransport pid=-1 returncode=6>z(<TestSubprocessTransport pid=-1 running>z%<TestSubprocessTransport not started>)
r-r9r6r:r;r<�repr�_returncode�_pidrPrQs    r�test_subprocess_reprz-SubprocessTransportTests.test_subprocess_reprZs�����(�(�*�*��"�3�3�F�;�;��	�8��!�!�!�$�$�$��	�$�$�V�,�,�,������O�O�;�	
�	
�	
�!%�	�������O�O�6�	
�	
�	
��	�� $�	�������O�O�3�	
�	
�	
�	�������rr)r$r%r&r+r6rRrW�
__classcell__�r0s@rr(r(3sj�������'�'�'�'�'�
%�%�%�%����4������rr(c�B�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	e
jej
dkd	��d
���Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Ze
jej
dkd��d���Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d �Z"d!�Z#d"�Z$d#S)$�SubprocessMixinc����t��fd�}|d��}tj|d��}|j�|��\}}|�|d��|�|d��dS)Nc��~�K�tj�tjtjd���d{V��}|j�|��|j����d{V��|j���|j�	���d{V��}|�
���d{V��}||fS�N)rr)r�create_subprocess_execr�PIPEr�write�drainrPr�read�wait)�data�proc�exitcoder!s   �r�runz.SubprocessMixin.test_stdin_stdout.<locals>.runws������ �7�� �o�!�����������D�
�J���T�"�"�"��*�"�"�$�$�$�$�$�$�$�$�$��J��������)�)�+�+�+�+�+�+�+�+�D�!�Y�Y�[�[�(�(�(�(�(�(�H��d�#�#r�	some datagN@r)�PROGRAM_CATr�wait_forr-r;r<�r rh�taskrgrr!s     @r�test_stdin_stdoutz!SubprocessMixin.test_stdin_stdoutts������	$�	$�	$�	$�	$�"�s�<� � �����d�+�+���9�7�7��=�=���&�����1�%�%�%������.�.�.�.�.rc���t��fd�}|d��}tj|tj��}|j�|��\}}|�|d��|�|d��dS)Nc���K�tj�tjtjd���d{V��}|�|���d{V��\}}|j|fSr^)rr_rr`�communicate�
returncode)rerfrrr!s    �rrhz-SubprocessMixin.test_communicate.<locals>.run�s������ �7�� �o�!�����������D�
$(�#3�#3�D�#9�#9�9�9�9�9�9�9�N�F�F��?�F�*�*rrir)rjrrkr�LONG_TIMEOUTr-r;r<rls     @r�test_communicatez SubprocessMixin.test_communicate�s������	+�	+�	+�	+�	+��s�<� � �����g�&:�;�;���9�7�7��=�=���&�����1�%�%�%������.�.�.�.�.rc���|j�tjd����}|j�|�����}|�|d��dS)Nzexit 7��r-r;r�create_subprocess_shellrdr<�r rfrgs   r�
test_shellzSubprocessMixin.test_shell�sb���y�+�+��+�H�5�5�
�
���9�/�/��	�	���<�<������1�%�%�%�%�%rc���|j�tjdd�����}|j�|�����}|�|d��dS)Nzexit 8T)�start_new_session�rwrys   r�test_start_new_sessionz&SubprocessMixin.test_start_new_session�so���y�+�+��+��"&�
�
�
�
�
���9�/�/��	�	���<�<������1�%�%�%�%�%rc�|�t}|j�tj|���}|���|j�|�����}tjdkr|�	|t��dS|�tj
|��dS�N�win32)�PROGRAM_BLOCKEDr-r;rr_rOrd�sys�platform�assertIsInstance�intr<rL�SIGKILL�r r!rfrrs    r�	test_killzSubprocessMixin.test_kill�s������y�+�+��*�D�1�
�
��	
�	�	�����Y�1�1�$�)�)�+�+�>�>�
��<�7�"�"��!�!�*�c�2�2�2�2�2�
���f�n�_�j�9�9�9�9�9rc���tjdkrtj�d�}nd}d}tjdkrddlm}|}|j�tj|tjj	|�����}|j�tj
d����tjdkr|�tj
��|���|j�|�����}tjdkr|�|t"��dS|�tj|��dS)Nr�z  -c "import time; time.sleep(2)"zsleep 1; sleep 1r)�CREATE_NEW_PROCESS_GROUP)r�
creationflags�)r�r��
executablerr�r-r;rrxr`�sleeprKrL�CTRL_BREAK_EVENTrOrdr�r�r<r�)r �blocking_shell_commandr�r�rfrrs      r�test_kill_issue43884z$SubprocessMixin.test_kill_issue43884�sI���<�7�"�"�(+��%X�%X�%X�"�"�%7�"��
��<�7�"�"�;�;�;�;�;�;�5�M��y�+�+��+�,B�7�K]�Kb�'�
)�
)�
)�
�
��	
�	�$�$�W�]�1�%5�%5�6�6�6��<�7�"�"����V�4�5�5�5��	�	�����Y�1�1�$�)�)�+�+�>�>�
��<�7�"�"��!�!�*�c�2�2�2�2�2�
���f�n�_�j�9�9�9�9�9rc�|�t}|j�tj|���}|���|j�|�����}tjdkr|�	|t��dS|�tj
|��dSr�)r�r-r;rr_rNrdr�r�r�r�r<rLrMr�s    r�test_terminatezSubprocessMixin.test_terminate�s������y�+�+��*�D�1�
�
��	
�������Y�1�1�$�)�)�+�+�>�>�
��<�7�"�"��!�!�*�c�2�2�2�2�2�
���f�n�_�j�9�9�9�9�9rr�zDon't have SIGHUPc���tjtjtj��}	d}tjd|g}�j�tj|dtj
i���}�fd�}�j�||����}��tj|��tjtj|��dS#tjtj|��wxYw)Nz<import time; print("sleeping", flush=True); time.sleep(3600)rrc����K�|j����d{V��}��|d��|�tj��|����d{V��}|S)Ns	sleeping
)r�readliner<rKrL�SIGHUPrd)rf�linerrr s   �rrKz5SubprocessMixin.test_send_signal.<locals>.send_signal�s}�����!�[�1�1�3�3�3�3�3�3�3�3��� � ��}�5�5�5�� � ���/�/�/�#'�9�9�;�;�.�.�.�.�.�.�
�!�!r)rLr��SIG_DFLr�r�r-r;rr_rr`r<)r �old_handler�coder!rfrKrrs`      r�test_send_signalz SubprocessMixin.test_send_signal�s����
�m�F�M�6�>�B�B��	6�Q�D��N�D�$�/�D��9�/�/��.���%�?�����D�
"�
"�
"�
"�
"���5�5�k�k�$�6G�6G�H�H�J����f�m�^�Z�8�8�8��M�&�-��5�5�5�5�5��F�M�&�-��5�5�5�5���s�B
C�!C;c���dtjz}tj��\}�|�tj|��|�tj���tjrltj|��}tj	|d��tjd|�d���}ddlm
}|��}d|gi|_t|���}nd	|�d
�}t|f���}|j�t%jt(jd|fd
tji|����}�fd�}	|	||��}
t/j��5|�t4t6f|jj|
��ddd��n#1swxYwY|j�|�����dS)N�xTz<
                import os, msvcrt
                handle = zl
                fd = msvcrt.open_osfhandle(handle, os.O_RDONLY)
                os.read(fd, 1)
            r)�STARTUPINFO�handle_list)�startupinfozimport os; fd = z; os.read(fd, 1))�pass_fdsrrc���K�|j�|��tj�d��|j����d{V��dS)Nsgo)rra�osrb)rfre�wfds  �r�write_stdinz;SubprocessMixin.test_stdin_broken_pipe.<locals>.write_stdin&s[������J���T�"�"�"��H�S�%� � � ��*�"�"�$�$�$�$�$�$�$�$�$�$�$r)r�
PIPE_MAX_SIZEr��pipe�
addCleanuprP�
MS_WINDOWS�msvcrt�
get_osfhandle�set_handle_inheritable�textwrap�dedentrr��lpAttributeList�dictr-r;rr_r�r�r`�
test_utils�disable_loggerrI�BrokenPipeError�ConnectionResetErrorrd)r �
large_data�rfd�handler�r�r�r"rfr��coror�s           @r�test_stdin_broken_pipez&SubprocessMixin.test_stdin_broken_pipesB����G�1�1�
��7�9�9���S������#�&�&�&������#�&�&�&���	+��)�#�.�.�F��%�f�d�3�3�3��?�$� �$�$�$���D�
/�.�.�.�.�.�%�+�-�-�K�+8�6�(�*C�K�'��k�2�2�2�F�F�;�c�;�;�;�D��C�6�*�*�*�F��y�+�+��*����d�
�
� �o�
��
�
�
�
��	%�	%�	%�	%�	%��{�4��,�,��
�
&�
(�
(�	B�	B�����0D�E�"�i�:�D�
B�
B�
B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	
�	�$�$�T�Y�Y�[�[�1�1�1�1�1s�.F�F�Fc��dtjz}|j�t	jtjddtj	�����}|j�
d���|j�|�|����|j�|�����dS)Nr�r�pass�rc��dSrr)r-�msgs  r�<lambda>zESubprocessMixin.test_communicate_ignore_broken_pipe.<locals>.<lambda>@s��$�r)
rr�r-r;rr_r�r�rr`�set_exception_handlerrqrd)r r�rfs   r�#test_communicate_ignore_broken_pipez3SubprocessMixin.test_communicate_ignore_broken_pipe3s����G�1�1�
��y�+�+��*����f� �o�
�
�
�
�
��	
�	�'�'�(>�(>�?�?�?��	�$�$�T�%5�%5�j�%A�%A�B�B�B��	�$�$�T�Y�Y�[�[�1�1�1�1�1rc�&����d��dzdz����fd�}�j�|����\}}��|d�z����|jj����|jj��dS)N�
�r�c����K�d�dd�	zdf��}�jj��fd�}|�j_tjt
jd|tjjtjj�����d{V��}|j	�
d��}|����d{V��\}}||fS)	N�
r
zsys.stdout.write("x" * %s)�sys.stdout.flush()c���K��|i|���d{V��\}}tj��|_tj��|_||fSr)rr�
pause_reading�resume_reading)r!�kwr5r4�connect_read_pipes    �r�connect_read_pipe_mockz^SubprocessMixin.test_pause_reading.<locals>.test_pause_reading.<locals>.connect_read_pipe_mockQsZ�����,=�,=�t�,J�r�,J�,J�&J�&J�&J�&J�&J�&J�#�	�8�*.�)�+�+�	�'�+/�9�;�;�	�(�!�8�,�,rr)rr�limitr�)�joinr-r�rr_r�r�rr`�
_transport�get_pipe_transportrq)
r�r�rf�stdout_transportrrr�r�r �sizes
      @���r�test_pause_readingz>SubprocessMixin.test_pause_reading.<locals>.test_pause_readingHs�������9�9��,�t�3�$����D�!%�	� ;��
-�
-�
-�
-�
-�+A�D�I�'� �7����d��(�-��)�.��	���������D� $��A�A�!�D�D��#'�#3�#3�#5�#5�5�5�5�5�5�5�N�F�F�
�,�-�-rr�)r-r;r<r>r�r@r�)r r�rr5r�r�s`   @@rr�z"SubprocessMixin.test_pause_readingDs����������	�A�
��	.�	.�	.�	.�	.�	.�	.�D!�I�8�8�9K�9K�9M�9M�N�N���	��������-�-�-����	�/�6�7�7�7����	�0�7�8�8�8�8�8rc���d�}|j�|d����\}}|�|���d��|�|d��dS)Nc	��2K�d}tjtjd|tjjtjjtjjd����d{V��}|�|���d{V��\}}|����d{V��}||fS�N�5import sys; data = sys.stdin.read(); print(len(data))rF�rrr�	close_fds�rr_r�r�rr`rqrd��messager�rfrrrgs      r�len_messagez?SubprocessMixin.test_stdin_not_inheritable.<locals>.len_messagess�����J�D� �7����d��(�-��)�.��)�.�����������D�$(�#3�#3�G�#<�#<�<�<�<�<�<�<�N�F�F�!�Y�Y�[�[�(�(�(�(�(�(�H��H�%�%r�abc�3r�r-r;r<�rstrip)r r��outputrgs    r�test_stdin_not_inheritablez*SubprocessMixin.test_stdin_not_inheritablepsq��	&�	&�	&� �9�7�7���F�8K�8K�L�L������������$�/�/�/�����1�%�%�%�%�%rc���d�}|j�|����\}}|�|���d��|�|d��dS)Nc	��2K�d}tjtjd|tjjtjjtjjd����d{V��}|�d���d{V��\}}|����d{V��}||fS)Nr�rFr�rr��r�rfrrrgs     r�empty_inputz5SubprocessMixin.test_empty_input.<locals>.empty_input�s�����J�D� �7����d��(�-��)�.��)�.�����������D�$(�#3�#3�C�#8�#8�8�8�8�8�8�8�N�F�F�!�Y�Y�[�[�(�(�(�(�(�(�H��H�%�%r�0rr��r r�r�rgs    r�test_empty_inputz SubprocessMixin.test_empty_input��m��	&�	&�	&� �9�7�7���
�
�F�F������������$�/�/�/�����1�%�%�%�%�%rc���d�}|j�|����\}}|�|���d��|�|d��dS)Nc	��0K�d}tjtjd|tjjtjjtjjd����d{V��}|����d{V��\}}|����d{V��}||fSr�)	rr_r�r�r�DEVNULLr`rqrdr�s     rr�z7SubprocessMixin.test_devnull_input.<locals>.empty_input�s�����J�D� �7����d��(�0��)�.��)�.�����������D�$(�#3�#3�#5�#5�5�5�5�5�5�5�N�F�F�!�Y�Y�[�[�(�(�(�(�(�(�H��H�%�%rr�rr�r�s    r�test_devnull_inputz"SubprocessMixin.test_devnull_input�r�rc��d�}|j�|����\}}|�|d��|�|d��dS)Nc	��2K�d}tjtjd|tjjtjjtjjd����d{V��}|�d���d{V��\}}|����d{V��}||fS�Nr�rFr�r��	rr_r�r�rr`r�rqrdr�s     r�empty_outputz9SubprocessMixin.test_devnull_output.<locals>.empty_output�s�����J�D� �7����d��(�-��)�1��)�.�����������D�$(�#3�#3�F�#;�#;�;�;�;�;�;�;�N�F�F�!�Y�Y�[�[�(�(�(�(�(�(�H��H�%�%rr�r-r;r<)r r�r�rgs    r�test_devnull_outputz#SubprocessMixin.test_devnull_output�se��	&�	&�	&� �9�7�7�����G�G���������&�&�&�����1�%�%�%�%�%rc��d�}|j�|����\}}|�|d��|�|d��dS)Nc	��2K�d}tjtjd|tjjtjjtjjd����d{V��}|�d���d{V��\}}|����d{V��}||fSr�r�r�s     r�empty_errorz7SubprocessMixin.test_devnull_error.<locals>.empty_error�s�����J�D� �7����d��(�-��)�.��)�1�����������D�$(�#3�#3�F�#;�#;�;�;�;�;�;�;�N�F�F�!�Y�Y�[�[�(�(�(�(�(�(�H��H�%�%rrr�)r r�r�rgs    r�test_devnull_errorz"SubprocessMixin.test_devnull_error�se��	&�	&�	&� �9�7�7���
�
�F�F���������&�&�&�����1�%�%�%�%�%r�linuxzDon't have /dev/stdinc���d�}|j�|d����\}}|�|���d��|�|d��dS)Nc	��2K�d}tjtjd|tjjtjjtjjd����d{V��}|�|���d{V��\}}|����d{V��}||fS)Nz?file = open("/dev/stdin"); data = file.read(); print(len(data))rFr�r�r�s      r�devstdin_inputz;SubprocessMixin.test_devstdin_input.<locals>.devstdin_input�s�����T�D� �7����d��(�-��)�.��)�.�����������D�$(�#3�#3�G�#<�#<�<�<�<�<�<�<�N�F�F�!�Y�Y�[�[�(�(�(�(�(�(�H��H�%�%rr�r�rr�)r rr�rgs    r�test_devstdin_inputz#SubprocessMixin.test_devstdin_input�sq��	&�	&�	&� �9�7�7���v�8N�8N�O�O������������$�/�/�/�����1�%�%�%�%�%rc�V���fd�}�j�|����dS)Nc���K�tjt��d{V��}�j�|�����}�j�|j��	|�d{V��n#tj$rYnwxYw|���|�	��|����d{V��dSr)
rr_r�r-�create_taskrd�	call_soon�cancel�CancelledErrorrO)rfrmr s  �r�cancel_waitz=SubprocessMixin.test_cancel_process_wait.<locals>.cancel_wait�s������ �7��I�I�I�I�I�I�I�D��9�(�(������5�5�D��I�����,�,�,�
��
�
�
�
�
�
�
�
���)�
�
�
���
����
�K�K�M�M�M�
�I�I�K�K�K��)�)�+�+���������s�)A2�2B�B�r-r;)r r	s` r�test_cancel_process_waitz(SubprocessMixin.test_cancel_process_wait�s@���	�	�	�	�	�$	
�	�$�$�[�[�]�]�3�3�3�3�3rc����fd�}tj��5�j�|����ddd��dS#1swxYwYdS)Nc����K�tjt�}�j�|��}�j�|j��	|�d{V��dS#tj$rYdSwxYwr)rr_r�r-rrrr�r�rmr s  �r�cancel_make_transportzYSubprocessMixin.test_cancel_make_subprocess_transport_exec.<locals>.cancel_make_transport�s�������1�?�C�D��9�(�(��.�.�D��I�����,�,�,�
��
�
�
�
�
�
�
�
�
���)�
�
�
����
���s�A�A.�-A.)r�r�r-r;�r rs` r�*test_cancel_make_subprocess_transport_execz:SubprocessMixin.test_cancel_make_subprocess_transport_exec�s����	�	�	�	�	��
&�
(�
(�	B�	B��I�(�(�)>�)>�)@�)@�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs�#A
�
A�Ac�����fd�}tj��5�j�|����tj�j��ddd��dS#1swxYwYdS)Nc���K��jjtjgt�R�}�j�|��}�j�|j��	|�d{V��dS#tj$rYdSwxYwr)	r-�subprocess_execr�SubprocessProtocolr�rrrrrs  �rrzDSubprocessMixin.test_cancel_post_init.<locals>.cancel_make_transports������,�4�9�,�W�-G�?�.=�?�?�?�D��9�(�(��.�.�D��I�����,�,�,�
��
�
�
�
�
�
�
�
�
���)�
�
�
����
���s� A*�*A=�<A=)r�r�r-r;�run_brieflyrs` r�test_cancel_post_initz%SubprocessMixin.test_cancel_post_inits����		�		�		�		�		��
&�
(�
(�	.�	.��I�(�(�)>�)>�)@�)@�A�A�A��"�4�9�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�	.�	.s�<A#�#A'�*A'c����fd�}tj��5	�j�|����\}}n*#tj$r��d��YnwxYwddd��n#1swxYwY��|����|��tj	�j��dS)Nc��n���K��jjtjgt�R�}|�d{V��\}}d���fd�}|�d��}|j�||_|���}|���tj	|�
��d���d{V��|�fS)NFc� ��d����dS)NTr)�kill_called�	orig_kills��rrOzKSubprocessMixin.test_close_kill_running.<locals>.kill_running.<locals>.kill's���"���	�����rr�)r-rrrr��get_extra_inforOr=rPrk�_wait)	�creater5r4rOrfrrrrr s	      @@�r�kill_runningz=SubprocessMixin.test_close_kill_running.<locals>.kill_running!s��������.�T�Y�.�w�/I�A�0?�A�A�A�F�(.�,�,�,�,�,�,��I�x��K�
�
�
�
�
�
�
�+�+�L�9�9�D��	�I��D�I�"�1�1�3�3�J��O�O�����"�9�?�?�#4�#4�a�8�8�8�8�8�8�8�8�8���,�,rz2Timeout failure on waiting for subprocess stopping)
r�r�r-r;r�TimeoutError�skipTestrFr>r)r r!rr�killeds`   r�test_close_kill_runningz'SubprocessMixin.test_close_kill_runnings4���	-�	-�	-�	-�	-�(�
&�
(�
(�	�	�
�%)�Y�%A�%A� �L�N�N�&�&�"�
�F�F���'�
�
�
��
�
�H������
����	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	
���*�%�%�%�	
���������t�y�)�)�)�)�)s4�A8�%A�A8�$A)�&A8�(A)�)A8�8A<�?A<c����fd�}tj��5�j�|����}tj�j��ddd��n#1swxYwY|\}}}��|����|����|��tj	dkrAt�t��r.tj
��j���dSdSdS)Nc���K��jjtjgt�R�}|�d{V��\}}|�d��}|���|���tj	��|_|�
��}|���}|���|||jj
fS)Nr)r-rrrr�rrOrdrr�pollr=rPr@)r r5r4rf�proc_returncode�transport_returncoder s      �rr!zCSubprocessMixin.test_close_dont_kill_finished.<locals>.kill_runningFs������.�T�Y�.�w�/I�A�0?�A�A�A�F�(.�,�,�,�,�,�,��I�x��+�+�L�9�9�D�
�I�I�K�K�K��I�I�K�K�K��	���D�I�"�i�i�k�k�O�#,�#;�#;�#=�#=� ��O�O����#�%9�4�9�;K�L�Lrr�)r�r�r-r;r�assertIsNotNonerFrDr�r��
isinstance�SubprocessFastWatcherTestsr�get_child_watcher�
_callbacks�clear)r r!�resultr)�transport_return_coder$s`     r�test_close_dont_kill_finishedz-SubprocessMixin.test_close_dont_kill_finishedDsX���	M�	M�	M�	M�	M�&�
&�
(�
(�	.�	.��Y�1�1�,�,�.�.�A�A�F��"�4�9�-�-�-�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.�:@�6��.�����_�-�-�-����/�0�0�0�	
���� � � �

�L�G�#�#��4�!;�<�<�
$��%�'�'�2�8�8�:�:�:�:�:�
$�#�#�#s�<A"�"A&�)A&c	���K�tjdkrd}nd}tj|��5}t}||_t
jd���5}|�|��5tj
tjdd|����d{V��ddd��n#1swxYwY|�|g��ddd��n#1swxYwYddd��dS#1swxYwYdS)	Nr�zasyncio.windows_utils.Popenzsubprocess.PopenT)�recordrr�r�)
r�r�r�patch�ZeroDivisionError�side_effect�warnings�catch_warningsrIrr_r�r<)r r�target�popen�exc�warnss      r�_test_popen_errorz!SubprocessMixin._test_popen_errorms������<�7�"�"�2�F�F�'�F�
�Z��
�
�	,�5�#�C� #�E���(��5�5�5�
,���&�&�s�+�+���!�8�����#�	����������������������������� � ���+�+�+�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,�
,����
,�
,�
,�
,�		,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,sY�$C �C�&)B�C�B�C�"B�#C�<C �C	�C �C	�C � C$�'C$c�b�|j�|�d�����dS�Nr�)r-r;r?�r s r�test_popen_errorz SubprocessMixin.test_popen_error�s1��	
�	�$�$�T�%;�%;�$�%;�%G�%G�H�H�H�H�Hrc�v�|j�|�tj�����dSrA)r-r;r?rr`rBs r� test_popen_error_with_stdin_pipez0SubprocessMixin.test_popen_error_with_stdin_pipe�s>��	
�	�$�$��"�"���"�9�9�	;�	;�	;�	;�	;rc�P�d�}|j�|����dS)Nc��$K�d�gd���}tjtjd|tjj����d{V��}	|j�d���d{V��}|rtj	d���d{V��ndS�@)Nr�)r
zfor _ in range(64):z     sys.stdout.write("x" * 4096)r�zsys.exit(1)r)rTig333333�?)
r�rr_r�r�rr`rrcr�)r��processres   r�executezDSubprocessMixin.test_read_stdout_after_process_exit.<locals>.execute�s������9�9�-�-�-�.�.�D�$�:����d��)�.����������G�

�$�^�0�0��7�7�7�7�7�7�7�7����!�-��,�,�,�,�,�,�,�,�,�,��E�
rr
�r rIs  r�#test_read_stdout_after_process_exitz3SubprocessMixin.test_read_stdout_after_process_exit�s5��	�	�	�&	
�	�$�$�W�W�Y�Y�/�/�/�/�/rc�V���fd�}�j�|����dS)Nc���K���t��5tjtjd����d{V��ddd��n#1swxYwY��t��5tjtjd����d{V��ddd��n#1swxYwY��t��5tjtjd����d{V��ddd��dS#1swxYwYdS�NT)�textzutf-8)�encoding�strict)�errors)rI�
ValueErrorrr_r�r�rBs�rrIzLSubprocessMixin.test_create_subprocess_exec_text_mode_fails.<locals>.execute�sf������"�"�:�.�.�
C�
C� �7���=A�C�C�C�C�C�C�C�C�C�C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C�
C����
C�
C�
C�
C��"�"�:�.�.�
J�
J� �7���AH�J�J�J�J�J�J�J�J�J�J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J����
J�
J�
J�
J��"�"�:�.�.�
I�
I� �7���?G�I�I�I�I�I�I�I�I�I�I�
I�
I�
I�
I�
I�
I�
I�
I�
I�
I�
I�
I����
I�
I�
I�
I�
I�
I�5�'A�A�A�6'B)�)B-�0B-�'D�D�	Dr
rJs` r�+test_create_subprocess_exec_text_mode_failsz;SubprocessMixin.test_create_subprocess_exec_text_mode_fails�sE���	I�	I�	I�	I�	I�	
�	�$�$�W�W�Y�Y�/�/�/�/�/rc�V���fd�}�j�|����dS)Nc���K���t��5tjtjd����d{V��ddd��n#1swxYwY��t��5tjtjd����d{V��ddd��n#1swxYwY��t��5tjtjd����d{V��ddd��dS#1swxYwYdSrN)rIrSrrxr�r�rBs�rrIzMSubprocessMixin.test_create_subprocess_shell_text_mode_fails.<locals>.execute�sf������"�"�:�.�.�
D�
D� �8���>B�D�D�D�D�D�D�D�D�D�D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D����
D�
D�
D�
D��"�"�:�.�.�
K�
K� �8���BI�K�K�K�K�K�K�K�K�K�K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K����
K�
K�
K�
K��"�"�:�.�.�
J�
J� �8���@H�J�J�J�J�J�J�J�J�J�J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J�
J����
J�
J�
J�
J�
J�
JrTr
rJs` r�,test_create_subprocess_shell_text_mode_failsz<SubprocessMixin.test_create_subprocess_shell_text_mode_fails�sE���	J�	J�	J�	J�	J�	
�	�$�$�W�W�Y�Y�/�/�/�/�/rc�v�d�}|�|j�|������dS)Nc��TK�tjtjtj��dd���d{V��}|����d{V��tjtjddtjd�����d{V��}|����d{V��dS)Nrr��.)rr_r�FakePathr�r�rd)�ps rrIzFSubprocessMixin.test_create_subprocess_exec_with_path.<locals>.execute�s����� �7��"�3�>�2�2�D�&�B�B�B�B�B�B�B�B�A��&�&�(�(�N�N�N�N�N�N�N� �7����f�i�.@��.E�.E�G�G�G�G�G�G�G�G�A��&�&�(�(�N�N�N�N�N�N�N�N�Nr)rFr-r;rJs  r�%test_create_subprocess_exec_with_pathz5SubprocessMixin.test_create_subprocess_exec_with_path�sC��	�	�	�	
���$�)�6�6�w�w�y�y�A�A�B�B�B�B�Brc�`���d����fd�}�j�|����dS)Nc���K�tj|g|�Rdtjji��d{V��}|����d{V��\}}|������S)Nr)rr_rr`rq�decode�strip)�cmdr!rfr�_s     r�get_command_stdoutzNSubprocessMixin.test_subprocess_communicate_stdout.<locals>.get_command_stdout�s����� �7�������#*�#5�#:���������D�#�.�.�0�0�0�0�0�0�0�0�I�F�A��=�=�?�?�(�(�*�*�*rc���K�d�td��D��}tj�fd�|D����d{V��}��||��dS)Nc��g|]}d|����S)�foor)�.0�is  r�
<listcomp>zTSubprocessMixin.test_subprocess_communicate_stdout.<locals>.main.<locals>.<listcomp>�s��4�4�4�Q�y�Q�y�y�4�4�4rr�c	�F��g|]}�tjdd|�d�����S)rzprint(�))r�r�)ri�outres  �rrkzTSubprocessMixin.test_subprocess_communicate_stdout.<locals>.main.<locals>.<listcomp>�sP���)O�)O�)O�?B�*<�);�C�N�D�(9��(9�(9�(9�*;�*;�)O�)O�)Or)�ranger�gatherr<)�outputs�resrer s  ��r�mainz@SubprocessMixin.test_subprocess_communicate_stdout.<locals>.main�s������4�4�%��)�)�4�4�4�G���)O�)O�)O�)O�FM�)O�)O�)O�P�P�P�P�P�P�P�C����S�'�*�*�*�*�*rr
)r rsres` @r�"test_subprocess_communicate_stdoutz2SubprocessMixin.test_subprocess_communicate_stdout�sU����	+�	+�	+�	+�	+�	+�	+�	+�	+�	
�	�$�$�T�T�V�V�,�,�,�,�,rN)%r$r%r&rnrtrzr~r�r�r��unittest�skipIfr�r�r�r�r�r�r�r�r�r�r�rrrrr%r3r?rCrErKrUrXr^rtrrrr[r[rs+������/�/�/�4/�/�/�$&�&�&�	&�	&�	&�:�:�:�:�:�:�6:�:�:��X�_�S�\�W�,�.A�B�B�6�6�C�B�6�:,2�,2�,2�\2�2�2�"*9�*9�*9�X&�&�&�(&�&�&�&&�&�&�&&�&�&�&&�&�&�&�X�_�S�\�W�,�.E�F�F�&�&�G�F�&�&4�4�4�.B�B�B�".�.�.�&#*�#*�#*�J';�';�';�R,�,�,�&I�I�I�
;�;�;�0�0�0�.0�0�0� 0�0�0�"	C�	C�	C�-�-�-�-�-rr[r�c�,��eZdZdZ�fd�Z�fd�Z�xZS)�SubprocessWatcherMixinNc�Z��t�����tj��}|���|_|�|j��|���}|�|j��|�	|��dSr)
r*r+r�get_event_loop_policy�new_event_loopr-r.�Watcher�attach_loop�set_child_watcher�r �policy�watcherr0s   �rr+zSubprocessWatcherMixin.setUp�s�����G�G�M�M�O�O�O��2�4�4�F��-�-�/�/�D�I�����	�*�*�*��l�l�n�n�G�����	�*�*�*��$�$�W�-�-�-�-�-rc���t�����tj��}|���}|�d��|�d��|���dSr)r*�tearDownrrzr.r~r}rPrs   �rr�zSubprocessWatcherMixin.tearDown�sq����G�G�������2�4�4�F��.�.�0�0�G��$�$�T�*�*�*�����%�%�%��M�M�O�O�O�O�Or)r$r%r&r|r+r�rXrYs@rrxrx�sV���������	.�	.�	.�	.�	.�	�	�	�	�	�	�	�	�	rrxc��eZdZejZdS)�SubprocessThreadedWatcherTestsN)r$r%r&r	�ThreadedChildWatcherr|rrrr�r��s�������2���rr�zqbpo-38323: MultiLoopChildWatcher has a race condition                     and these tests can hang the test suitec��eZdZejZdS)�SubprocessMultiLoopWatcherTestsN)r$r%r&r	�MultiLoopChildWatcherr|rrrr�r��s������
�3���rr�c��eZdZejZdS)�SubprocessSafeWatcherTestsN)r$r%r&r	�SafeChildWatcherr|rrrr�r���������.���rr�c��eZdZejZdS)r-N)r$r%r&r	�FastChildWatcherr|rrrr-r-	r�rr-c���ttd��sdS	tjtjtj������n#t
$rYdSwxYwdS)N�
pidfd_openFT)�hasattrr�rPr��getpid�OSErrorrrr�has_pidfd_supportr�sh���r�<�(�(�	��5�	��H�R�]�2�9�;�;�/�/�0�0�0�0���	�	�	��5�5�	�����ts�7A�
A�Az(operating system does not support pidfdsc��eZdZejZdS)�SubprocessPidfdWatcherTestsN)r$r%r&r	�PidfdChildWatcherr|rrrr�r�s�������/���rr�c��eZdZd�ZdS)�GenericWatcherTestsc
�`���tjtjfiddi�����fd�}tjtj���5}��|�|������ddd��n#1swxYwY���j	tj
���tj
������tj
�
ttjtj��g��dS)Nz-__enter__.return_value.is_active.return_valueFc��:�K�tj�����t��5t	jt
jtj	��dd���d{V��ddd��n#1swxYwY�j
���dS)Nrr�)rr~rI�RuntimeErrorrr_rr\r�r��add_child_handler�assert_not_called)r r�s��rrIzWGenericWatcherTests.test_create_subprocess_fails_with_inactive_watcher.<locals>.execute(s�������)�'�2�2�2��&�&�|�4�4�J�J�$�;�!�*�3�>�:�:�D�&�J�J�J�J�J�J�J�J�J�J�J�J�J�J�J�J�J�J�J�J����J�J�J�J��)�;�;�=�=�=�=�=s�9A7�7A;�>A;)�loop_factory)r�create_autospecr�AbstractChildWatcher�Runnerr{rFrh�assertListEqual�
mock_calls�call�	__enter__�	is_active�__exit__r��ANY)r rI�runnerr�s`  @r�2test_create_subprocess_fails_with_inactive_watcherzFGenericWatcherTests.test_create_subprocess_fails_with_inactive_watcher"sQ�����*��,���B�E�J���G�

>�
>�
>�
>�
>�
>���W�-C�D�D�D�
9���!�!�&�*�*�W�W�Y�Y�"7�"7�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9�� � ��!3��	�#�#�%�%��	�#�#�%�%�/�/�1�1��	�"�"�<���4�8�D�D�6�
�
�
�
�
s�1B�B�
BN)r$r%r&r�rrrr�r� s#������	�	�	�	�	rr�c���eZdZ�fd�Z�xZS)�SubprocessProactorTestsc���t�����tj��|_|�|j��dSr)r*r+r�ProactorEventLoopr-r.r/s �rr+zSubprocessProactorTests.setUp=s@����G�G�M�M�O�O�O��1�3�3�D�I�����	�*�*�*�*�*r)r$r%r&r+rXrYs@rr�r�;s8�������	+�	+�	+�	+�	+�	+�	+�	+�	+rr��__main__)/r��shutilrLr�r�rur9rrrr�test.test_asynciorr�r2r�test.supportrr�r�r	�check_sanitizer�SkipTestr�r�r�rjr�BaseSubprocessTransportr�TestCaser(r[r�rxr��skipr�r�r-r��
skipUnlessr�r�r�r$rsrrr�<module>r�s���	�	�	�	�
�
�
�
�
�
�
�
�
�
�
�
�����������������������#�#�#�#�#�#�������1�1�1�1�1�1�������"�"�"�"�"�"���$��M�M�M�M�#�#�#�#�#�#��7��4�(�(�(�C�
�(�
�A�
B�
B�B��>�4�)H�I���N�D��H�H�/�0�0�1��(�(�(������o�E����<�<�<�<�<�z�2�<�<�<�~k	-�k	-�k	-�k	-�k	-�k	-�k	-�k	-�\�<�7������������,3�3�3�3�3�)?�)3�)<�3�3�3�
�X�]�=�>�>�4�4�4�4�4�*@�*4�*=�4�4�>�>�4�
/�/�/�/�/�%;�%/�%8�/�/�/�
/�/�/�/�/�%;�%/�%8�/�/�/�
����X������2���0�0�0�0�0�&<�&0�&9�0�0�	��0�
�����j�1�����6+�+�+�+�+�/�:�3F�+�+�+��z����H�M�O�O�O�O�O��r