Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.12/test/test_asyncio/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.12/test/test_asyncio/__pycache__/test_subprocess.cpython-312.pyc

�

(Μg;����ddlZddlZddlZddlZddlZddlZddlmZddlZddlmZddlm	Z	ddl
mZddl
mZddlmZej"rddlZnddlmZej(d	�
�rej*d��ej,dd
gZej,ddj1d�gZd�ZGd�dej6�ZGd�dej:�ZGd�d�Zej@dk7r�Gd�de�Z!Gd�de!ej:�Z"Gd�de!ej:�Z#Gd�dej:�Z$Gd �d!e!ej:�Z%ejLejN�d"�Gd#�d$e!ej:��Z(Gd%�d&ej:�Z)nGd'�d(eej:�Z*e+d)k(rejX�yy)*�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�y�N)�asyncio�set_event_loop_policy���>/usr/local/lib/python3.12/test/test_asyncio/test_subprocess.py�tearDownModuler%s���!�!�$�'rc��eZdZd�Zy)�TestSubprocessTransportc��tj�|_d|j_d|j_d|j_d|j_y)N���)r�Mock�_proc�stdin�stdout�stderr�pid)�self�args�kwargss   r�_startzTestSubprocessTransport._start*s>���Y�Y�[��
���
�
�� ��
�
�� ��
�
����
�
�rN)�__name__�
__module__�__qualname__r#rrrrr)s��rrc�2��eZdZ�fd�Zdd�Zd�Zd�Z�xZS)�SubprocessTransportTestsc���t�|��|j�|_|j	|j�yr)�super�setUp�
new_test_loop�loop�set_event_loop�r �	__class__s �rr+zSubprocessTransportTests.setUp3s.���
��
���&�&�(��	����D�I�I�&rc�p�tj�}t|j|dgddddd|��	}||fS)N�testFr)�waiter)rrrr-)r r3�protocol�	transports    r�create_transportz)SubprocessTransportTests.create_transport8s>���9�9�;��+��	�	�8�f�X�u��d�D�!�F�<�	��8�$�$rc��|jj�}|j|�\}}|jd�|jj	|�|j|j
�d�|j|jj�|j|jj�|j|jj�|j|jjdd�|j|j��|j|j �|j|j"�|j|j$�|j't(|j*t,j.�|j't(|j0�|j't(|j2�|j5�y)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?ss�����(�(�*��"�3�3�F�;��	�8��!�!�!�$��	�	�$�$�V�,�����1�1�3�Q�7�����0�0�7�7�8�����/�/�6�6�7�����0�0�7�7�8�����1�1�;�;�A�>��H�����-�-�/�0����)�/�/�*����)�/�/�*����)�-�-�.�	
���,�#�/�/����	A����,�i�.A�.A�B����,�i�n�n�=����rc��|jj�}|j|�\}}|jd�|jj	|�|jt
|�d�d|_|jt
|�d�d|_d|_|jt
|�d�|j�y)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_reprYs������(�(�*��"�3�3�F�;��	�8��!�!�!�$��	�	�$�$�V�,������O�;�	
�!%�	�������O�6�	
��	�� $�	�������O�3�	
�	���rr)r$r%r&r+r6rRrW�
__classcell__�r0s@rr(r(2s���'�
%��4rr(c�v�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
eje
jd	k(d
�d��Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zeje
jdk7d�d��Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d �Z"d!�Z#d"�Z$d#�Z%d*d%�Z&d*d&�Z'd*d'�Z(d(�Z)d)�Z*y$)+�SubprocessMixinc����t��fd�}|d�}tj|d�}|jj	|�\}}|j|d�|j|d�y)Nc���K�tj�tjtjd���d{���}|jj|�|jj
��d{���|jj�|jj��d{���}|j��d{���}||fS7��7�^7�$7��w�N�rr)r�create_subprocess_execr�PIPEr�write�drainrPr�read�wait)�data�proc�exitcoder!s   �r�runz.SubprocessMixin.test_stdin_stdout.<locals>.runvs������ �7�7�� �o�o�!�����D�
�J�J���T�"��*�*�"�"�$�$�$��J�J�������)�)�+�+�D�!�Y�Y�[�(�H��d�#�#���
%��,��(�sE�6C�C�<C�6C�7;C�2C�3C�
C�	C�C�C�C�	some datagN@r)�PROGRAM_CATr�wait_forr-r;r<�r ri�taskrhrr!s     @r�test_stdin_stdoutz!SubprocessMixin.test_stdin_stdoutssd�����	$�"�<� ������d�+���9�9�7�7��=���&�����1�%������.rc���t��fd�}|d�}tj|tj�}|j
j
|�\}}|j|d�|j|d�y)Nc����K�tj�tjtjd���d{���}|j	|��d{���\}}|j
|fS7�.7��wr^�rr`rra�communicate�
returncode)rfrgrrr!s    �rriz-SubprocessMixin.test_communicate.<locals>.run�s`����� �7�7�� �o�o�!�����D�
$(�#3�#3�D�#9�9�N�F�F��?�?�F�*�*�
��
:�s!�6A,�A(�A,�A*�A,�*A,rjr�rkrrlr�LONG_TIMEOUTr-r;r<rms     @r�test_communicatez SubprocessMixin.test_communicate�sj�����	+��<� ������g�&:�&:�;���9�9�7�7��=���&�����1�%������.rc���t��fd�}|�}tj|tj�}|j
j
|�\}}|j|d�|j|d�y)Nc����K�tj�tjtjd���d{���}|j	��d{���\}}|j
|fS7�-7��wr^rr)rgrrr!s   �rriz8SubprocessMixin.test_communicate_none_input.<locals>.run�s^����� �7�7�� �o�o�!�����D�
$(�#3�#3�#5�5�N�F�F��?�?�F�*�*�
��
6�s!�6A+�A'�A+�A)�A+�)A+rrrurms     @r�test_communicate_none_inputz+SubprocessMixin.test_communicate_none_input�sg�����	+��u������g�&:�&:�;���9�9�7�7��=���&�����1�%������%rc���|jjtjd��}|jj|j	��}|j|d�y)Nzexit 7��r-r;r�create_subprocess_shellrer<�r rgrhs   r�
test_shellzSubprocessMixin.test_shell�sP���y�y�+�+��+�+�H�5�
���9�9�/�/��	�	��<������1�%rc���|jjtjdd���}|jj|j	��}|j|d�y)Nzexit 8T)�start_new_session�r}rs   r�test_start_new_sessionz&SubprocessMixin.test_start_new_session�sV���y�y�+�+��+�+��"&�
�
���9�9�/�/��	�	��<������1�%rc�n�t}|jjtj|��}|j�|jj|j
��}tjdk(r|j|t�y|jtj|�y�N�win32)�PROGRAM_BLOCKEDr-r;rr`rOre�sys�platform�assertIsInstance�intr<rL�SIGKILL�r r!rgrts    r�	test_killzSubprocessMixin.test_kill�s������y�y�+�+��*�*�D�1�
��	
�	�	���Y�Y�1�1�$�)�)�+�>�
��<�<�7�"��!�!�*�c�2�
���f�n�n�_�j�9rc���tjdk(rtj�d�}nd}d}tjdk(rddlm}|}|j
j
tj|tjj|���}|j
j
tjd��tjdk(r|jtj�|j�|j
j
|j��}tjdk(r|j!|t"�y|j%tj&|�y)Nr�z  -c "import time; time.sleep(2)"zsleep 1; sleep 1r)�CREATE_NEW_PROCESS_GROUP)r�
creationflags�)r�r��
executablerr�r-r;rr~ra�sleeprKrL�CTRL_BREAK_EVENTrOrer�r�r<r�)r �blocking_shell_commandr�r�rgrts      r�test_kill_issue43884z$SubprocessMixin.test_kill_issue43884�s���<�<�7�"�(+���'7�7W�%X�"�%7�"��
��<�<�7�"�;�5�M��y�y�+�+��+�+�,B�7�K]�K]�Kb�Kb�'�
)�
��	
�	�	�$�$�W�]�]�1�%5�6��<�<�7�"����V�4�4�5��	�	���Y�Y�1�1�$�)�)�+�>�
��<�<�7�"��!�!�*�c�2�
���f�n�n�_�j�9rc�n�t}|jjtj|��}|j�|jj|j
��}tjdk(r|j|t�y|jtj|�yr�)r�r-r;rr`rNrer�r�r�r�r<rLrMr�s    r�test_terminatezSubprocessMixin.test_terminate�s������y�y�+�+��*�*�D�1�
��	
�����Y�Y�1�1�$�)�)�+�>�
��<�<�7�"��!�!�*�c�2�
���f�n�n�_�j�9rr�zDon't have SIGHUPc�6��tjtjtj�}	d}tjd|g}�j
j
tj|dtji��}�fd�}�j
j
||��}�jtj|�tjtj|�y#tjtj|�wxYw)Nz<import time; print("sleeping", flush=True); time.sleep(3600)rrc����K�|jj��d{���}�j|d�|jtj
�|j
��d{���}|S7�O7��w)Ns	sleeping
)r�readliner<rKrL�SIGHUPre)rg�linertr s   �rrKz5SubprocessMixin.test_send_signal.<locals>.send_signals]�����!�[�[�1�1�3�3��� � ��}�5�� � ����/�#'�9�9�;�.�
�!�!�4��/�s"�A5�A1�AA5�*A3�+A5�3A5)rLr��SIG_DFLr�r�r-r;rr`rrar<)r �old_handler�coder!rgrKrts`      r�test_send_signalz SubprocessMixin.test_send_signal�s����
�m�m�F�M�M�6�>�>�B��	6�Q�D��N�N�D�$�/�D��9�9�/�/��.�.���%�?�?���D�
"����5�5�k�$�6G�H�J����f�m�m�^�Z�8��M�M�&�-�-��5��F�M�M�&�-�-��5�s�BC2�2&Dc���dtjz}tj�\}�|j	tj
|�|j	tj
��tjrhtj|�}tj|d�tjd|�d��}ddlm
}|�}d|gi|_t|��}nd	|�d
�}t|f��}|j j#t%j&t(j*d|fd
tj,i|���}�fd�}	|	||�}
t/j0�5|j3t4t6f|j j"|
�ddd�|j j#|j9��y#1swY�3xYw)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�|jj|�tj�d�|jj��d{���y7��w)Nsgo)rrb�osrc)rgrf�wfds  �r�write_stdinz;SubprocessMixin.test_stdin_broken_pipe.<locals>.write_stdin7s=������J�J���T�"��H�H�S�%� ��*�*�"�"�$�$�$�s�AA�A�A)r�
PIPE_MAX_SIZEr��pipe�
addCleanuprP�
MS_WINDOWS�msvcrt�
get_osfhandle�set_handle_inheritable�textwrap�dedentrr��lpAttributeList�dictr-r;rr`r�r�ra�
test_utils�disable_loggerrI�BrokenPipeError�ConnectionResetErrorre)r �
large_data�rfd�handler�r�r�r"rgr��coror�s           @r�test_stdin_broken_pipez&SubprocessMixin.test_stdin_broken_pipes�����G�1�1�1�
��7�7�9���S�������#�&�������#�&�����)�)�#�.�F��%�%�f�d�3��?�?�(� ��"
�$��D�
/�%�-�K�+8�6�(�*C�K�'��k�2�F�%�c�U�*:�;�D��C�6�*�F��y�y�+�+��*�*�����d�
� �o�o�
��
�
��	%��4��,��
�
&�
&�
(�����0D�E�"�i�i�:�:�D�
B�)�	
�	�	�$�$�T�Y�Y�[�1�)�
(�s�(2G�Gc��dtjz}|jjt	j
tjddtj���}|jjd��|jj|j|��|jj|j��y)Nr�r�pass�rc��yrr)r-�msgs  r�<lambda>zESubprocessMixin.test_communicate_ignore_broken_pipe.<locals>.<lambda>Qs��$r)
rr�r-r;rr`r�r�rra�set_exception_handlerrsre)r r�rgs   r�#test_communicate_ignore_broken_pipez3SubprocessMixin.test_communicate_ignore_broken_pipeDs����G�1�1�1�
��y�y�+�+��*�*�����f� �o�o�
�
��	
�	�	�'�'�(>�?��	�	�$�$�T�%5�%5�j�%A�B��	�	�$�$�T�Y�Y�[�1rc�0����d��dzdz����fd�}�jj|��\}}�j|d�z��j|jj
��j|jj
�y)N�
�r�c�����K�djdd�	zdf�}�jj��fd�}|�j_tjt
jd|tjjtjj����d{���}|jjd�}|j��d{���\}}||fS7�>7�
�w)	N�
r
zsys.stdout.write("x" * %s)�sys.stdout.flush()c���K��|i|���d{���\}}tj�|_tj�|_||fS7�=�wr)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_mockbsK�����,=�t�,J�r�,J�&J�#�	�8�*.�)�)�+�	�'�+/�9�9�;�	�(�!�8�,�,�'K�s�A�A
�>Ar)rr�limitr�)�joinr-r�rr`r�r�rra�
_transport�get_pipe_transportrs)
r�r�rg�stdout_transportrrr�r�r �sizes
      @���r�test_pause_readingz>SubprocessMixin.test_pause_reading.<locals>.test_pause_readingYs�������9�9��,�t�3�$���D�!%�	�	� ;� ;��
-�+A�D�I�I�'� �7�7�����d��(�(�-�-��)�)�.�.��	��D� $���A�A�!�D��#'�#3�#3�#5�5�N�F�F�
�,�-�-���6�s$�B C'�$C#�%2C'�C%�C'�%C'r�)r-r;r<r>r�r@r�)r r�rr5r�r�s`   @@rr�z"SubprocessMixin.test_pause_readingUs~�������	�A�
��	.�D!�I�I�8�8�9K�9M�N���	��������-����	�/�/�6�6�7����	�0�0�7�7�8rc��d�}|jj|d��\}}|j|j�d�|j|d�y)Nc	��~K�d}tjtjd|tjj
tjj
tjj
d���d{���}|j
|��d{���\}}|j��d{���}||fS7�<7�%7��w�N�5import sys; data = sys.stdin.read(); print(len(data))rF�rrr�	close_fds�rr`r�r�rrarsre��messager�rgrrrhs      r�len_messagez?SubprocessMixin.test_stdin_not_inheritable.<locals>.len_message�s�����J�D� �7�7�����d��(�(�-�-��)�)�.�.��)�)�.�.����D�$(�#3�#3�G�#<�<�N�F�F�!�Y�Y�[�(�H��H�%�%���=��(��6�A8B=�:B7�;B=�B9�B=�.B;�/	B=�9B=�;B=�abc�3r�r-r;r<�rstrip)r r��outputrhs    r�test_stdin_not_inheritablez*SubprocessMixin.test_stdin_not_inheritable�sM��	&� �9�9�7�7��F�8K�L�����������$�/�����1�%rc��d�}|jj|��\}}|j|j�d�|j|d�y)Nc	��~K�d}tjtjd|tjj
tjj
tjj
d���d{���}|j
d��d{���\}}|j��d{���}||fS7�<7�%7��w)Nr�rFr�rr��r�rgrrrhs     r�empty_inputz5SubprocessMixin.test_empty_input.<locals>.empty_input�s�����J�D� �7�7�����d��(�(�-�-��)�)�.�.��)�)�.�.����D�$(�#3�#3�C�#8�8�N�F�F�!�Y�Y�[�(�H��H�%�%���9��(�r��0rr��r r�r�rhs    r�test_empty_inputz SubprocessMixin.test_empty_input��J��	&� �9�9�7�7��
�F�����������$�/�����1�%rc��d�}|jj|��\}}|j|j�d�|j|d�y)Nc	��|K�d}tjtjd|tjj
tjjtjjd���d{���}|j��d{���\}}|j��d{���}||fS7�;7�%7��wr�)	rr`r�r�r�DEVNULLrarsrer�s     rr�z7SubprocessMixin.test_devnull_input.<locals>.empty_input�s�����J�D� �7�7�����d��(�(�0�0��)�)�.�.��)�)�.�.����D�$(�#3�#3�#5�5�N�F�F�!�Y�Y�[�(�H��H�%�%���6��(�s6�A8B<�:B6�;B<�B8�B<�-B:�.	B<�8B<�:B<r�rr�r�s    r�test_devnull_inputz"SubprocessMixin.test_devnull_input�r�rc��d�}|jj|��\}}|j|d�|j|d�y)Nc	��~K�d}tjtjd|tjj
tjjtjj
d���d{���}|jd��d{���\}}|j��d{���}||fS7�<7�%7��w�Nr�rFr�r��	rr`r�r�rrar�rsrer�s     r�empty_outputz9SubprocessMixin.test_devnull_output.<locals>.empty_output�s�����J�D� �7�7�����d��(�(�-�-��)�)�1�1��)�)�.�.����D�$(�#3�#3�F�#;�;�N�F�F�!�Y�Y�[�(�H��H�%�%���<��(�r�r�r-r;r<)r r�r�rhs    r�test_devnull_outputz#SubprocessMixin.test_devnull_output�sD��	&� �9�9�7�7���G���������&�����1�%rc��d�}|jj|��\}}|j|d�|j|d�y)Nc	��~K�d}tjtjd|tjj
tjj
tjjd���d{���}|jd��d{���\}}|j��d{���}||fS7�<7�%7��wr�r�r�s     r�empty_errorz7SubprocessMixin.test_devnull_error.<locals>.empty_error�s�����J�D� �7�7�����d��(�(�-�-��)�)�.�.��)�)�1�1����D�$(�#3�#3�F�#;�;�N�F�F�!�Y�Y�[�(�H��H�%�%���<��(�r�rr�)r rr�rhs    r�test_devnull_errorz"SubprocessMixin.test_devnull_error�sD��	&� �9�9�7�7��
�F���������&�����1�%r�linuxzDon't have /dev/stdinc��d�}|jj|d��\}}|j|j�d�|j|d�y)Nc	��~K�d}tjtjd|tjj
tjj
tjj
d���d{���}|j
|��d{���\}}|j��d{���}||fS7�<7�%7��w)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�7�����d��(�(�-�-��)�)�.�.��)�)�.�.����D�$(�#3�#3�G�#<�<�N�F�F�!�Y�Y�[�(�H��H�%�%���=��(�r�r�r�rr�)r rr�rhs    r�test_devstdin_inputz#SubprocessMixin.test_devstdin_input�sM��	&� �9�9�7�7��v�8N�O�����������$�/�����1�%rc�P���fd�}�jj|��y)Nc���K�tjt��d{���}�jj	|j��}�jj
|j�	|�d{���|j�|j�|j��d{���y7��7�?#tj$rY�RwxYw7�"�wr)
rr`r�r-�create_taskre�	call_soon�cancel�CancelledErrorrO)rgrnr s  �r�cancel_waitz=SubprocessMixin.test_cancel_process_wait.<locals>.cancel_wait�s������ �7�7��I�I�D��9�9�(�(�����5�D��I�I������,�
��
�
�

�K�K�M�
�I�I�K��)�)�+���J�����)�)�
��
��
�sR�C�B4�AC�1B8�6B6�7B8�;3C�.C�/C�6B8�8C�C�
C�C�r-r;)r rs` r�test_cancel_process_waitz(SubprocessMixin.test_cancel_process_wait�s���	�$	
�	�	�$�$�[�]�3rc����fd�}tj�5�jj|��ddd�y#1swYyxYw)Nc���K�tjt�}�jj	|�}�jj|j�	|�d{���y7�#tj$rYywxYw�wr)rr`r�r-rr
rr�r�rnr s  �r�cancel_make_transportzYSubprocessMixin.test_cancel_make_subprocess_transport_exec.<locals>.cancel_make_transportsd������1�1�?�C�D��9�9�(�(��.�D��I�I������,�
��
�
���)�)�
��
�s<�AB�A(� A&�!A(�%B�&A(�(A>�;B�=A>�>B)r�r�r-r;�r rs` r�*test_cancel_make_subprocess_transport_execz:SubprocessMixin.test_cancel_make_subprocess_transport_execs8���	��
&�
&�
(��I�I�(�(�)>�)@�A�)�
(�
(�s�!A�Ac�����fd�}tj�5�jj|��tj�j�ddd�y#1swYyxYw)Nc��8�K��jjtjgt���}�jj|�}�jj
|j�	|�d{���y7�#tj$rYywxYw�wr)	r-�subprocess_execr�SubprocessProtocolr�rr
rrrs  �rrzDSubprocessMixin.test_cancel_post_init.<locals>.cancel_make_transportsz�����,�4�9�9�,�,�W�-G�-G�?�.=�?�D��9�9�(�(��.�D��I�I������,�
��
�
���)�)�
��
�s<�A0B�4B�9A?�:B�>B�?B�B�B�B�B)r�r�r-r;�run_brieflyrs` r�test_cancel_post_initz%SubprocessMixin.test_cancel_post_initsJ���		��
&�
&�
(��I�I�(�(�)>�)@�A��"�"�4�9�9�-�)�
(�
(�s�AA$�$A-c����fd�}tj�5	�jj|��\}}ddd��j��j�tj�j�y#tj
$r�j
d�Y�pwxYw#1swY�uxYw)Nc�����K��jjtjgt���}|�d{���\}}d���fd�}|jd�}|j�||_|j�}|j�tj|j�d��d{���|�fS7��7�
�w)NFc���d���y�NTr)�kill_called�	orig_kills��rrOzKSubprocessMixin.test_close_kill_running.<locals>.kill_running.<locals>.kill8s
���"���rr�)r-rrrr��get_extra_inforOr=rPrl�_wait)	�creater5r4rOrgrtr#r$r s	      @@�r�kill_runningz=SubprocessMixin.test_close_kill_running.<locals>.kill_running2s������.�T�Y�Y�.�.�w�/I�/I�A�0?�A�F�(.�,��I�x��K�
�
�+�+�L�9�D��	�	�I��D�I�"�1�1�3�J��O�O���"�"�9�?�?�#4�a�8�8�8���,�,�#/��
9�s"�5C�B>�A:C�5C�6	C�Cz2Timeout failure on waiting for subprocess stopping)
r�r�r-r;r�TimeoutError�skipTestrFr>r)r r)rt�killeds`   r�test_close_kill_runningz'SubprocessMixin.test_close_kill_running0s����	-�(�
&�
&�
(�
�%)�Y�Y�%A�%A� �N�&�"�
�F�)�	
���*�%�	
��������t�y�y�)���'�'�
��
�
�H��
��)�
(�s(�B4�#B
�
$B1�.B4�0B1�1B4�4B=c�z���fd�}tj�5�jj|��}tj�j�ddd�\}}}�j|��j
|��j|�tjdk7rut�t�rdtj�5tjdt�t!j"�j$j'�ddd�yyy#1swY��xYw#1swYyxYw)Nc���K��jjtjgt���}|�d{���\}}|jd�}|j
�|j�tj�|_|j�}|j�}|j�|||jjfS7���w)Nr)r-rrrr�r&rOrerr�pollr=rPr@)r(r5r4rg�proc_returncode�transport_returncoder s      �rr)zCSubprocessMixin.test_close_dont_kill_finished.<locals>.kill_runningWs������.�T�Y�Y�.�.�w�/I�/I�A�0?�A�F�(.�,��I�x��+�+�L�9�D�
�I�I�K��I�I�K��	�	��D�I�"�i�i�k�O�#,�#;�#;�#=� ��O�O��#�%9�4�9�9�;K�;K�L�L�#/�s�5C�C�BCr��ignore)r�r�r-r;r�assertIsNotNonerFrDr�r��
isinstance�SubprocessFastWatcherTests�warnings�catch_warnings�simplefilter�DeprecationWarningr�get_child_watcher�
_callbacks�clear)r r)�resultr1�transport_return_coder,s`     r�test_close_dont_kill_finishedz-SubprocessMixin.test_close_dont_kill_finishedUs����	M�&�
&�
&�
(��Y�Y�1�1�,�.�A�F��"�"�4�9�9�-�)�:@�6��.�����_�-����/�0�	
���� �

�L�L�G�#��4�!;�<��(�(�*��%�%�h�0B�C��)�)�+�6�6�<�<�>�+�*�=�
$�!)�
(��$+�*�s�AD%�AD1�%D.�1D:c	���K�tjdk(rd}nd}tj|�5}t}||_t
jd��5}|j|�5tjtjdd|���d{���ddd�|j|g�ddd�ddd�y7�/#1swY�.xYw#1swY� xYw#1swYyxYw�w)	Nr�zasyncio.windows_utils.Popenzsubprocess.PopenT)�recordrr�r�)
r�r�r�patch�ZeroDivisionError�side_effectr7r8rIrr`r�r<)r r�target�popen�exc�warnss      r�_test_popen_errorz!SubprocessMixin._test_popen_error�s������<�<�7�"�2�F�'�F�
�Z�Z��
�5�#�C� #�E���(�(��5���&�&�s�+�!�8�8������#�	���,�� � ���+�6�	 �
���,�+��6�5��	 �
�s^�.C'�$C�C�&+C�C
�C�C�0C�8	C'�C�C�C�C	�C�C$� C'c�Z�|jj|jd���y�Nr�)r-r;rJ�r s r�test_popen_errorz SubprocessMixin.test_popen_error�s$��	
�	�	�$�$�T�%;�%;�$�%;�%G�Hrc�v�|jj|jtj���yrL)r-r;rJrrarMs r� test_popen_error_with_stdin_pipez0SubprocessMixin.test_popen_error_with_stdin_pipe�s+��	
�	�	�$�$��"�"����"�9�	;rc�J�d�}|jj|��y)Nc��VK�djgd��}tjtjd|tj
j���d{���}	|jjd��d{���}|rtjd��d{���ny�E7�J7�(7��w)Nr�)r
zfor _ in range(64):z     sys.stdout.write("x" * 4096)r�zsys.exit(1)r)rig333333�?)
r�rr`r�r�rrarrdr�)r��processrfs   r�executezDSubprocessMixin.test_read_stdout_after_process_exit.<locals>.execute�s������9�9�-�.�D�$�:�:�����d��)�)�.�.���G�
�$�^�^�0�0��7�7���!�-�-��,�,�,�����8��,�s6�AB)�B#�#B)�<B%�=B)�B'�B)�%B)�'B)r�r rTs  r�#test_read_stdout_after_process_exitz3SubprocessMixin.test_read_stdout_after_process_exit�s��	�&	
�	�	�$�$�W�Y�/rc�P���fd�}�jj|��y)Nc��$�K��jt�5tjtj
d���d{���ddd��jt�5tjtj
d���d{���ddd��jt�5tjtj
d���d{���ddd�y7��#1swY��xYw7�f#1swY�exYw7�)#1swYyxYw�w�NT)�textzutf-8)�encoding�strict)�errors)rI�
ValueErrorrr`r�r�rMs�rrTzLSubprocessMixin.test_create_subprocess_exec_text_mode_fails.<locals>.execute�s�������"�"�:�.� �7�7����=A�C�C�C�/��"�"�:�.� �7�7����AH�J�J�J�/��"�"�:�.� �7�7����?G�I�I�I�/�.�C��/�.��
J��/�.��
I��/�.���D�)C(�C&�C(�D�$)C6�
C4�C6�D�/)D�D�D�	D�&C(�(C1�-D�4C6�6C?�;D�D�D
�	DrrUs` r�+test_create_subprocess_exec_text_mode_failsz;SubprocessMixin.test_create_subprocess_exec_text_mode_fails�s���	I�	
�	�	�$�$�W�Y�/rc�P���fd�}�jj|��y)Nc��$�K��jt�5tjtj
d���d{���ddd��jt�5tjtj
d���d{���ddd��jt�5tjtj
d���d{���ddd�y7��#1swY��xYw7�f#1swY�exYw7�)#1swYyxYw�wrY)rIr^rr~r�r�rMs�rrTzMSubprocessMixin.test_create_subprocess_shell_text_mode_fails.<locals>.execute�s�������"�"�:�.� �8�8����>B�D�D�D�/��"�"�:�.� �8�8����BI�K�K�K�/��"�"�:�.� �8�8����@H�J�J�J�/�.�D��/�.��
K��/�.��
J��/�.�r_rrUs` r�,test_create_subprocess_shell_text_mode_failsz<SubprocessMixin.test_create_subprocess_shell_text_mode_fails�s���	J�	
�	�	�$�$�W�Y�/rc�h�d�}|j|jj|���y)Nc��~K�tjtjtj
�dd��d{���}|j
��d{���tjtj
ddtjd���d{���}|j
��d{���y7�v7�`7�!7��w)Nrr��.)rr`r�FakePathr�r�re)�ps rrTzFSubprocessMixin.test_create_subprocess_exec_with_path.<locals>.execute�s����� �7�7��"�"�3�>�>�2�D�&�B�B�A��&�&�(�N�N� �7�7�����f�i�.@�.@��.E�G�G�A��&�&�(�N�N�B����G���sF�<B=�B5�B=�B7�AB=�B9�B=�/B;�0B=�7B=�9B=�;B=)rFr-r;rUs  r�%test_create_subprocess_exec_with_pathz5SubprocessMixin.test_create_subprocess_exec_with_path�s(��	�	
���$�)�)�6�6�w�y�A�Brc��K�|�d{���}|j��d{���\}}|j||�|j|jd�tj|j��}tjd��d{���|j|j�|j�y7��7��7�3�w)Nr)rsr<rtrrrer�r>)r r�r�rgr�_rns       r�check_stdout_outputz#SubprocessMixin.check_stdout_output�s������z���*�*�,�,�	��������(�������!�,��"�"�4�9�9�;�/���m�m�A��������������8�
��,��	�s2�C�C�C�C�A0C�C�0C�C�CNc�l�dd�}|jj|j|�d��y)Nc���K�tj�d�}tjj	�}d|d<tj||tj���d{���}|S7��w)Nz8 -c "import os, sys; sys.stdout.write(os.getenv('FOO'))"�bar�FOO��envr)	r�r�r��environ�copyrr~rra��cmdrrrgs   r�mainz>SubprocessMixin.test_create_subprocess_env_shell.<locals>.main�s]�����~�~�&�&^�a�C��*�*�/�/�#�C��C��J� �8�8���Z�_�_���D��K��s�A A+�"A)�#A+sbar��returnN�r-r;rl�r rws  r� test_create_subprocess_env_shellz0SubprocessMixin.test_create_subprocess_env_shell�s*��	�	
�	�	�$�$�T�%=�%=�d�f�f�%M�Nrc�l�dd�}|jj|j|�d��y)Nc���K�tjddg}tjj	�}d|d<tj||tjd���d{���}|S7��w)Nrz2import os, sys; sys.stdout.write(os.getenv('FOO'))�bazrprq)	r�r�r�rsrtrr`rrarus   rrwz=SubprocessMixin.test_create_subprocess_env_exec.<locals>.main�s_�����>�>�4�G�I�C��*�*�/�/�#�C��C��J� �7�7��#�j�o�o���D��K��s�AA)� A'�!A)sbazrxrzr{s  r�test_create_subprocess_env_execz/SubprocessMixin.test_create_subprocess_env_exec�s*��	�	
�	�	�$�$�T�%=�%=�d�f�f�%M�Nrc�R��d�fd�}�jj|��y)Nc	����K�tjttjtjd���d{���}|jd��d{���\}}�j
|d��j
|jd��j
tjtd�D�cgc]}|j���c}��d{���|jgdz�y7��7��cc}w7�!�w)Nr_rjrr�)rr`rkrrarsr<rt�gather�rangere)rgrrkr s   �rrwz=SubprocessMixin.test_subprocess_concurrent_wait.<locals>.mains������ �7�7�� �o�o�!�����D�
#�.�.�|�<�<�I�F�A����V�\�2����T�_�_�a�0����7�>�>��r��3S��A�D�I�I�K��3S�#T�T�"�o�o�.��3�
5���
=��4T�T�s@�:C5�C*�C5�C,�AC5�3C.�
C5�C3�C5�,C5�.C5rxrr{s` r�test_subprocess_concurrent_waitz/SubprocessMixin.test_subprocess_concurrent_waits���
	5�	
�	�	�$�$�T�V�,rc���	�
�g�	ddg}gd��
ddg}G�	�
fd�dtj��d
��	fd�}|jj|���	|j	t�	�t�
��|D�cic]}|g��}}�	D]$}|d	k(r�	|dd\}}||j
|��&|D]}|j||||�	f��ycc}w)Nr�r�))�pipe_data_receivedr�sstdout)r�r�sstderr)�pipe_connection_lostr�)r�r�rAr�r�c�b��eZdZdejddfd�Zd	�fd�Zd	�fd�Zd	�fd�Z��fd�Z	y)
�CSubprocessMixin.test_subprocess_protocol_events.<locals>.MyProtocol�exit_futureryNc��||_yr)r�)r r�s  r�__init__zLSubprocessMixin.test_subprocess_protocol_events.<locals>.MyProtocol.__init__&s
��#.�� rc�N���jd||f�|j�y)Nr���append�
exit_maybe)r �fdrf�eventss   �rr�zVSubprocessMixin.test_subprocess_protocol_events.<locals>.MyProtocol.pipe_data_received)s!����
�
�3�R��>�?����!rc�L���jd|f�|j�y)Nr�r�)r r�rHr�s   �rr�zXSubprocessMixin.test_subprocess_protocol_events.<locals>.MyProtocol.pipe_connection_lost-s����
�
�5�r�:�;����!rc�H���jd�|j�y)NrAr�)r r�s �rrAzRSubprocessMixin.test_subprocess_protocol_events.<locals>.MyProtocol.process_exited1s����
�
�.�/����!rc�l��t��t��k\r|jjd�yyr")�lenr��
set_result)r r��expecteds ��rr�zNSubprocessMixin.test_subprocess_protocol_events.<locals>.MyProtocol.exit_maybe5s,����v�;�#�h�-�/��$�$�/�/��5�0rrx)
r$r%r&r�Futurer�r�r�rAr�)r�r�s��r�
MyProtocolr�%s.���
/�G�N�N�
/�t�
/�
"�
"�
"�
6rr�c����K�tj�}tj��d}|j��fd�tj
d|d���d{���\}}��d{���|j
��S7�#7��w)NzBimport sys; sys.stdout.write("stdout"); sys.stderr.write("stderr")c������Srr)r�r�s��rr�zOSubprocessMixin.test_subprocess_protocol_events.<locals>.main.<locals>.<lambda>>s
���j��>Urrr�)r�get_running_loopr�rr�r�rP)r-r�r5rkr�r�r�s    @��rrwz=SubprocessMixin.test_subprocess_protocol_events.<locals>.main:sy������+�+�-�D�!�.�.�*�K�W�D�!%�!5�!5�6U�69�n�n�d�D�X\�"6�"^�^�L�I�q�����O�O���M�^���s$�AB�A>�B�'B�(B�BrArx)rrr-r;�assertSetEqual�setr�r<)r �fds�per_fd_expectedrwr��
per_fd_events�event�namer�r�r�s        @@@r�test_subprocess_protocol_eventsz/SubprocessMixin.test_subprocess_protocol_eventss�������!�f��
��
!�"�
��
	6��3�3�	6�*		����-�-�d�f�5��	
���C��K��X��7�+.�.�#�B��R��#�
�.��E��(�(���R�a�y�H�D�"��"��$�$�T�*�	��B����]�2�.��"�f��N���/s�=
Cc�Z���d����fd�}�jj|��y)Nc��K�tj|g|��dtjji��d{���}|j	��d{���\}}|j�j
�S7�=7�'�w)Nr)rr`rrars�decode�strip)rvr!rgrrks     r�get_command_stdoutzNSubprocessMixin.test_subprocess_communicate_stdout.<locals>.get_command_stdoutWsq���� �7�7�����#*�#5�#5�#:�#:���D�#�.�.�0�0�I�F�A��=�=�?�(�(�*�*�	��1�s!�5A9�A5�A9�A7�&A9�7A9c���K�td�D�cgc]}d|����	}}tj|D�cgc]}�tjdd|�d���� c}��d{���}�j||�ycc}wcc}w7�!�w)Nr��foorzprint(�))r�rr�r�r�r<)�i�outputs�out�resr�r s    ��rrwz@SubprocessMixin.test_subprocess_communicate_stdout.<locals>.main^s������*/��)�4�)�Q��Q�C�y�)�G�4����FM�)O�FM�s�*<�C�N�N�D�*0���q�(9�*;�FM�)O�P�P�C����S�'�*��5��)O�P�s&�B�A4�B�#A9�B�A>�"Br)r rwr�s` @r�"test_subprocess_communicate_stdoutz2SubprocessMixin.test_subprocess_communicate_stdoutUs#���	+�	+�	
�	�	�$�$�T�V�,rrx)+r$r%r&rorwrzr�r�r�r�r��unittest�skipIfr�r�r�r�r�r�r�r�r�rrr	rrrr-r@rJrNrPrVr`rcrirlr|r�r�r�r�rrrr[r[qs��/�4/�$&�$&�	&�:�:�6:��X�_�_�S�\�\�W�,�.A�B�6�C�6�:,2�\2�"*9�X&�(&�&&�&&�&&�&�X�_�_�S�\�\�W�,�.E�F�&�G�&�&4�.B�".�&#*�J)?�V,�&I�
;�0�.0� 0�"	C�9�
O�O�
-�@O�D-rr[r�c�,��eZdZdZ�fd�Z�fd�Z�xZS)�SubprocessWatcherMixinNc���t�|��tj�}|j	�|_|j
|j
�|j�}|j|j
�tj�5tjdt�|j|�ddd�y#1swYyxYw�Nr3)r*r+r�get_event_loop_policy�new_event_loopr-r.�_get_watcher�attach_loopr7r8r9r:�set_child_watcher�r �policy�watcherr0s   �rr+zSubprocessWatcherMixin.setUpms�����G�M�O��2�2�4�F��-�-�/�D�I�����	�	�*��'�'�)�G�����	�	�*��(�(�*��%�%�h�0B�C��(�(��1�+�*�*�s�,C�Cc�T��t�|��tj�}t	j
�5t	jdt�|j�}|jd�ddd�jd�|j�y#1swY�+xYwr�)r*�tearDownrr�r7r8r9r:r;r�r�rPr�s   �rr�zSubprocessWatcherMixin.tearDownys|����G����2�2�4�F��(�(�*��%�%�h�0B�C� �2�2�4���(�(��.�+�
����%��M�M�O�+�*�s�<B�B')r$r%r&�Watcherr+r�rXrYs@rr�r�is�����
	2�	�	rr�c��eZdZd�Zy)�SubprocessThreadedWatcherTestsc�*�tj�Sr)r	�ThreadedChildWatcherrMs rr�z+SubprocessThreadedWatcherTests._get_watcher�s���3�3�5�5rN�r$r%r&r�rrrr�r��s��	6rr�c��eZdZd�Zy)�SubprocessSafeWatcherTestsc��|jt�5tj�cddd�S#1swYyxYwr)�assertWarnsr:r	�SafeChildWatcherrMs rr�z'SubprocessSafeWatcherTests._get_watcher��)���!�!�"4�5�"�3�3�5�6�5�5���4�=Nr�rrrr�r�����	6rr�c��eZdZd�Zy)�MultiLoopChildWatcherTestsc��|jt�5tj�ddd�y#1swYyxYwr)r�r:r	�MultiLoopChildWatcherrMs r�
test_warnsz%MultiLoopChildWatcherTests.test_warns�s)���!�!�"4�5��1�1�3�6�5�5�s�4�=N)r$r%r&r�rrrr�r��s��	4rr�c��eZdZd�Zy)r6c��|jt�5tj�cddd�S#1swYyxYwr)r�r:r	�FastChildWatcherrMs rr�z'SubprocessFastWatcherTests._get_watcher�r�r�Nr�rrrr6r6�r�rr6�(operating system does not support pidfdsc��eZdZd�Zy)�SubprocessPidfdWatcherTestsc�*�tj�Sr)r	�PidfdChildWatcherrMs rr�z(SubprocessPidfdWatcherTests._get_watcher�s���0�0�2�2rNr�rrrr�r��s��	3rr�c�b�eZdZd�Zej
ej�d�d��Zy)�GenericWatcherTestsc
����tjtj��d�j_��fd�}tjtj��5}tj�5tjdt��j|j|���ddd�ddd��j�jtj j#�tj j	�tj j%t&tj(tj(�g�j�y#1swY��xYw#1swY��xYw)NFc��D�K�tj���jt�5t	j
t
jtj�dd��d{���ddd��jj�y7�'#1swY�&xYw�w)Nrr�)rr�rI�RuntimeErrorrr`rrgr�r��add_child_handler�assert_not_called)r r�s��rrTzWGenericWatcherTests.test_create_subprocess_fails_with_inactive_watcher.<locals>.execute�s|������)�)�'�2��&�&�|�4�$�;�;�!�*�*�3�>�>�:�D�&�J�J�J�5��)�)�;�;�=�J��5�4�s.�+B �<B�*B�+B�/#B �B�B�B ��loop_factoryr3)r�create_autospecr�AbstractChildWatcher�	is_active�return_value�Runnerr�r7r8r9r:rFri�assertListEqual�
mock_calls�call�	__enter__�__exit__r��ANY)r rT�runnerr�s`  @r�2test_create_subprocess_fails_with_inactive_watcherzFGenericWatcherTests.test_create_subprocess_fails_with_inactive_watcher�s�����*�*�7�+G�+G�H�G�-2�G���*�
>����W�-C�-C�D���,�,�.��)�)�(�4F�G��%�%�f�j�j���&;�<�/�E�
� � ��!3�!3��	�	�#�#�%��	�	�#�#�%��	�	�"�"�<����4�8�8�D�6��!�!�	
#�/�.��E�D�s%�!E4�6AE(�6E4�(E1	�-E4�4E=r�c����d����fd�}�jt�5tjtj��ddd�	tj
tj��5}|j|��\}}ddd��jd��jd��jt�5tjd�ddd�y#1swY��xYw#1swY�mxYw#1swYyxYw#�jt�5tjd�ddd�w#1swYwxYwxYw)Nc���K�tjttjtjd���d{���}|jd��d{���\}}|j|fS7�.7��w)Nr_rj)rr`rkrrarsrt)rgrrs   r�	in_threadzHGenericWatcherTests.test_create_subprocess_with_pidfd.<locals>.in_thread�s`����$�;�;� �$�/�/�%�?�?����
(,�'7�'7��'E�!E��������.�.�
��
"F�s!�:A/�A+�A/�A-�A/�-A/c���K�tj�5tjdt��j	t
tf�5t
j�j�ddd�ddd�t
jtj����d{���S#1swY�BxYw#1swY�FxYw7��w)N�error)r7r8r9r:rIr�rr��get_event_loop�	to_threadri)r�r s��rrwzCGenericWatcherTests.test_create_subprocess_with_pidfd.<locals>.main�s�������,�,�.��)�)�'�3E�F��*�*�L�:L�+M�N��5�5�7�F�F�H�O�/�%�.�.�w�{�{�I�K�H�H�H�O�N��/�.��I�s@�C�6B>�#B2�1B>�94C�-C
�.C�2B;	�7B>�>C�Cr�rrj)	r�r:rr�r�r�r�rir<)r rwr�rtrr�s`    @r�!test_create_subprocess_with_pidfdz5GenericWatcherTests.test_create_subprocess_with_pidfd�s����

/�	
I��!�!�"4�5��)�)�'�*C�*C�*E�F�6�
4��^�^��1G�1G�H�F�)/���D�F�);�&�J��I�� � ��Q�/�� � ���6��%�%�&8�9��-�-�d�3�:�9�6�5��I�H��
:�9��T�%�%�&8�9��-�-�d�3�:�9�9�sS�(C0�$D�6C<�,D�D�0C9�<D�D�D�E�*E	�	E�	E�EN)	r$r%r&r�r��
skipUnlessr	�
can_use_pidfdr�rrrr�r��s9��	#�0
��	�	�%�K�%�%�'�6�

�	4�	

�	4rr�c���eZdZ�fd�Z�xZS)�SubprocessProactorTestsc���t�|��tj�|_|j|j�yr)r*r+r�ProactorEventLoopr-r.r/s �rr+zSubprocessProactorTests.setUp�s.����G�M�O��1�1�3�D�I�����	�	�*r)r$r%r&r+rXrYs@rrr�s
���	+�	+rr�__main__)-r�rLr�r�r�r7rrrr�test.test_asynciorr�r2r�test.supportrr�r�r	�check_sanitizer�SkipTestr�r�r�rkr�BaseSubprocessTransportr�TestCaser(r[r�r�r�r�r�r6r�r�r�r�rr$rwrrr�<module>r
s���	�
�
������#��1��"�����#��7���4�(�
�(�
�
�A�
B�B��>�>�4�)H�I���N�N�D��H�H�/�0�1��(��o�E�E��<�z�2�2�<�~s-�s-�l�<�<�7�����46�)?�)3�)<�)<�6�6�%;�%/�%8�%8�6�4�Z�%8�%8�4�6�%;�%/�%8�%8�6��X���!��!�!�#�2��3�&<�&0�&9�&9�3�	�3�;4�j�1�1�;4�|+�/�:�3F�3F�+��z���H�M�M�O�r

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists