Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_pty.cpython-311.opt-2.pyc
�

�KeC���ddlmZmZddlmZed��ed��ddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZdZdZ	ejZejZdZn
#e$rd	ZYnwxYwerd
�Znd�Zd�Zd
�Zd�Zd�Zd�ZGd�dej ��Z!Gd�dej ��Z"d�Z#e$dkrej%��dSdS)�)�verbose�
reap_children)�
import_module�termios�fcntlN�I wish to buy a fish license.
�For my pet fish, Eric.
TFc�$�t|��dS�N)�print��msgs �7/usr/local/apps/python3/lib/python3.11/test/test_pty.py�debugr"s��
�c�
�
�
�
�
�c��dSr�r
s rrr%s���rc��|�d��r|�dd��S|�d��r|�dd��S|S)Ns

�
�
)�endswith�replace)�datas r�normalize_outputr3sY���}�}�Y���.��|�|�I�u�-�-�-��}�}�W���,��|�|�G�U�+�+�+��Krc�Z�	tj|dd���}|���S)N�rbF)�mode�closefd)�io�FileIO�readline)�fd�readers  r�	_readliner$Gs+��B�
�Y�r��e�
4�
4�
4�F��?�?���rc��	tjtj��t	j|��S#tj$rYnwxYw|Sr)�tty�	tcgetattr�pty�STDIN_FILENO�unittest�expectedFailure�error)�funs r�expectedFailureIfStdinIsTTYr.LsR��
��
�c�&�'�'�'��'��,�,�,���9�
�
�
���
�����Js�14�A�Ac�h�tjddddd��}tj|t|��S)N�HHHHr)�struct�packr�ioctl�_TIOCGWINSZ)r"�ss  r�_get_term_winszr6Us-����F�A�q�!�Q�'�'�A��;�r�;��*�*�*rc�<�tj|t|��dSr)rr3�_TIOCSWINSZ)r"�winszs  r�_set_term_winszr:Ys��	�K��K��'�'�'�'�'rc�X�eZdZd�Zd�Zed���Zed���Zd�Z	d�Z
d�ZdS)	�PtyTestc��tjtj|j��}|�tjtj|��tjtj|j��}|�tjtj|��|�tjd��tjd��d|_d|_tr�	tjtj
��}|j|_|j|_t!jd|j|jdd��}|�t$tj
|��dS#t&$rYdSwxYwdS)Nr�
r0)�signal�SIGALRM�
handle_sig�
addCleanup�SIGHUP�
handle_sighup�alarm�
stdin_rows�
stdin_cols�_HAVE_WINSZ�os�get_terminal_sizer(r)�lines�columnsr1r2r:�OSError)�self�	old_alarm�
old_sighup�	stdin_dim�old_stdin_winszs     r�setUpz
PtyTest.setUp`s9���M�&�.�$�/�B�B�	�����
�v�~�y�A�A�A��]�6�=�$�2D�E�E�
�����
�v�}�j�A�A�A�	
�����a�(�(�(���R�����������		�
��0��1A�B�B�	�"+�/���"+�"3���"(�+�f�d�o�.2�o�q�!�#E�#E�������1A�?�S�S�S�S�S���
�
�
����
����		�		s�)A>E)�)
E7�6E7c�0�|�d��dS)Nzisatty hung)�fail)rN�sig�frames   rrAzPtyTest.handle_sigzs���	�	�-� � � � � rc��dSrr)�signumrWs  rrDzPtyTest.handle_sighup}s���rc� �	tjtj��}n&#tj$rtd��d}YnwxYwd}|j��|j��	td��td|j�d|j�d���|jdz}|jdz}td|�d|�d���tj	d||d	d	��}ttj|��ttj��}|�||d
��n$#t$rtjd��YnwxYw	td��	tj||��\}}n&#t"$rtj��\}}YnwxYwtd
|�d|�d���n"#t$rt%jd���wxYw|�t*j|��|�t*j|��|�t+j|��d��|r)|�tj|��|d��|r$|�t|��|d��t+j|��}	t+j|d��	t+j|d��}	|�d|	��n-#t$r }
|
jt8jkr�Yd}
~
nd}
~
wwxYwt+j||��n#t+j||��wxYwtd��t+j|t>��tA|��}	|�dtC|	����td��t+j|tDdd���t+j|tDdd���tA|��}|�dtC|����dS)Nz&tty.tcgetattr(pty.STDIN_FILENO) failedz$Setting pty.STDIN_FILENO window sizezoriginal size: (rows=z, cols=�)�ztarget size: (rows=r0rz&pty.STDIN_FILENO window size unchangedz*Failed to set pty.STDIN_FILENO window size�Calling pty.openpty()�Got master_fd '�
', slave_fd '�'z,Pseudo-terminals (seemingly) not functional.zslave_fd is not a ttyz%openpty() failed to set slave termiosz)openpty() failed to set slave window sizeFirzWriting to slave_fdrzWriting chunked output�r	)#r&r'r(r)r,rrFrGr1r2r:r6�assertEqualrM�warnings�warn�openpty�	TypeErrorr*�SkipTestrBrI�close�
assertTrue�isatty�get_blocking�set_blocking�read�errno�EAGAIN�write�
TEST_STRING_1r$r�
TEST_STRING_2)rNr�new_stdin_winsz�target_stdin_rows�target_stdin_cols�target_stdin_winsz�	master_fd�slave_fd�blocking�s1�e�s2s            r�test_openptyzPtyTest.test_openpty�s���	��=��!1�2�2�D�D���y�	�	�	��:�;�;�;��D�D�D�	����
���?�&�4�?�+F�
��<�=�=�=��X�d�o�X�X�d�o�X�X�X�Y�Y�Y�$(�O�a�$7�!�$(�O�a�$7�!��Z�,=�Z�Z�FW�Z�Z�Z�[�[�[�%+�[��9J�1B�A�q�&J�&J�"��� 0�2D�E�E�E�#2�#�2B�"C�"C��� � ��2D�!I�K�K�K�K���
�
�
��
�J�K�K�K���
����		T��)�*�*�*�
4�&)�k�$��&H�&H�#�	�8�8���
4�
4�
4�&)�k�m�m�#�	�8�8�8�
4�����G�I�G�G�H�G�G�G�H�H�H�H���	T�	T�	T��#�$R�S�S�S�	T����	
�����)�,�,�,������(�+�+�+�����	�(�+�+�-D�E�E�E��	F����S�]�8�4�4�d�D�
F�
F�
F��	J����_�X�6�6��H�
J�
J�
J��?�9�-�-��
	1��O�I�u�-�-�-�
��W�Y��-�-��� � ��b�)�)�)�)���
�
�
��7�e�l�*�*��+�*�*�*�*�����
����

�O�I�x�0�0�0�0��B�O�I�x�0�0�0�0����
�#�$�$�$�
���=�)�)�)�
�y�
!�
!�����;�)�"�-�-�	/�	/�	/�	�&�'�'�'�
���=��!��,�-�-�-�
���=����,�-�-�-�
�y�
!�
!�����4�6F�r�6J�6J�K�K�K�K�Ks��!� A�A�B;D�D5�4D5�9F�	E"�!F�" F�F�F�F�F>�L�%+K�L�
K;�K6�1L�6K;�;L�L+c��td��tj��\}}|�tj|��|tjkr�t	jd��s#td��t	jd��td��	t	j	��td��t	jd��n^#t$rtd��YnCt$rtd	��Yn)td
��t	jd��YnxYwt	jd��dStd|z��		t	j|d��}n#t$rYnJwxYw|snCtj�t!|�dd��d������mt	j|d��\}}t	j|��}td|||fz��|dkr|�d��dS|dkr|�d��dS|dkr|�d��dS|dkr|�d��dSdS)Nzcalling pty.fork()r\zChild's fd 1 is not a tty?!�zIn child, calling os.setsid()zos.setsid() succeeded! (bad!)�zGood: OSError was raised.zNo setsid() available?zAn unexpected error was raised.�z!Waiting for child (%d) to finish.T�Prr�ascii)�encodingrz+Child (%d) exited with code %d (status %d).z3Child raised an unexpected exception in os.setsid()z1pty.fork() failed to make child a session leader.z8Child spawned by pty.fork() did not have a tty as stdoutz&pty.fork() failed for unknown reasons.)rr(�forkrBrIrh�CHILDrj�_exit�setsidrM�AttributeErrorrm�sys�stdoutrp�strr�waitpid�waitstatus_to_exitcoderU)rN�pidrwr�status�ress      r�	test_forkzPtyTest.test_fork�s���
�"�#�#�#�������Y������)�,�,�,��#�)����9�Q�<�<�
��3�4�4�4�������
�1�2�2�2�
��	����"�5�6�6�6���������#�
�
�
��1�2�2�2���!�
�
�
��.�/�/�/���
�
�7�8�8�8������������
�H�Q�K�K�K�K�K��5��;�<�<�<�
8���7�9�b�1�1�D�D�������E���������
� � ��T�\�\�'�5�%A�%A�.5�"7�"7�"7�8�8�8�
8� �J�s�A�.�.�M�S�&��+�F�3�3�C��?�3��V�BT�T�U�U�U��a�x�x��	�	�O�P�P�P�P�P������	�	�M�N�N�N�N�N������	�	�T�U�U�U�U�U������	�	�B�C�C�C�C�C��s*�C�D/�/D/�	$D/�E2�2
E?�>E?c��td��tj��\}}td|�d|�d���|�tj|��td��t	j|��td��	t	j|d��}n#t$rd}YnwxYw|�|d��dS)	Nr]r^r_r`zClosing slave_fdzReading from master_fdr\r)	rr(rerBrIrhrmrMrb)rNrwrxrs    r�test_master_readzPtyTest.test_master_read(s���
�%�&�&�&�!�k�m�m��	�8�
�C�	�C�C��C�C�C�D�D�D������)�,�,�,�
� �!�!�!�
������
�&�'�'�'�	��7�9�a�(�(�D�D���	�	�	��D�D�D�	����	
����s�#�#�#�#�#s�B%�%B4�3B4c�H�tjtjddg��dS)Nz-czprint("hi there"))r(�spawnr��
executable�rNs r�test_spawn_doesnt_hangzPtyTest.test_spawn_doesnt_hang;s"���	�3�>�4�)<�=�>�>�>�>�>rN)�__name__�
__module__�__qualname__rSrA�staticmethodrDr.r}r�r�r�rrrr<r<_s����������4!�!�!��
�
��\�
�!�RL�RL�!� �RL�hHD�HD�HD�d$�$�$�&?�?�?�?�?rr<c�N�eZdZ	d�Zd�Zd�Zd�Zd
d�Zd�Zd�Z	d	�Z
d
�Zd�ZdS)�
SmallPtyTestsc��tj|_tj|_tj|_tj|_tj	|_
tj|_tj
|_tj|_tj|_tj|_g|_g|_g|_g|_d|_dSr)r(r)�orig_stdin_fileno�
STDOUT_FILENO�orig_stdout_filenorh�orig_pty_close�_copy�orig_pty__copyr��
orig_pty_fork�select�orig_pty_select�setraw�orig_pty_setrawr'�orig_pty_tcgetattr�	tcsetattr�orig_pty_tcsetattrr��orig_pty_waitpid�fds�files�select_rfds_lengths�select_rfds_results�tcsetattr_mode_settingr�s rrSzSmallPtyTests.setUpAs���!$�!1���"%�"3���!�i���!�i��� �X���"�z���"�z���"%�-���"%�-��� #���������
�#%�� �#%�� �&*��#�#�#rc��|jt_|jt_|jt_|jt_|j	t_
|jt_|j
t_|jt_|jt_|jt_|jD]'}	|����#t,$rY�$wxYw|jD]'}	t1j|���#t,$rY�$wxYwdSr)r�r(r)r�r�r�rhr�r�r�r�r�r�r�r�r�r'r�r�r�r�r�rMr�rI)rN�filer"s   r�tearDownzSmallPtyTests.tearDownRs����1��� �3����'��	��'��	��%����)��
��)��
��/��
��/��
��+����J�	�	�D�
��
�
�������
�
�
���
�����(�	�	�B�
����������
�
�
���
����	�	s$�5C
�

C�C�$C9�9
D�Dc�`�tj��}|j�|��|Sr)rI�piper��extend)rN�pipe_fdss  r�_pipezSmallPtyTests._pipehs&���7�9�9�������!�!�!��rc�`�tj��}|j�|��|Sr)�socket�
socketpairr�r�)rNr�s  r�_socketpairzSmallPtyTests._socketpairms,���&�(�(�
��
���*�%�%�%��rrc��|�|j�d��t|����|j�d��ggfS)Nr)rbr��pop�lenr�)rN�rfds�wfds�xfds�timeouts     r�_mock_selectzSmallPtyTests._mock_selectrsO��	
����1�5�5�a�8�8�#�d�)�)�D�D�D��'�+�+�A�.�.��B�6�6rc����fd�}|S)Nc����dfS)N�r)r�s�r�	mock_forkz0SmallPtyTests._make_mock_fork.<locals>.mock_forkys
�����9�rr)rNr�r�s ` r�_make_mock_forkzSmallPtyTests._make_mock_forkxs"���	�	�	�	�	��rc��||_dSr)r�)rN�fileno�optrs    r�_mock_tcsetattrzSmallPtyTests._mock_tcsetattr}s��&*��#�#�#rc���	|���\}}|t_|���\}}|t_|���}d�|D��}tj|dd��tj|d��|jt_|j	�
d��|j�
||dg��|j	�
d��|�t��5tj|d��ddd��n#1swxYwYtj||dgggd��d}|�||dg|��|�tj|d��d��|�tj|dd��d��dS)Nc�6�g|]}|�����Sr�r���.0r5s  r�
<listcomp>z4SmallPtyTests.test__copy_to_each.<locals>.<listcomp>�� ��2�2�2�!�1�8�8�:�:�2�2�2rr\sfrom masters
from stdinr�r�)r�r(r�r)r�rIrpr�r�r��appendr��assertRaises�
IndexErrorr�rbrm)rN�read_from_stdout_fd�mock_stdout_fd�
mock_stdin_fd�write_to_stdin_fdr��mastersr�s        r�test__copy_to_eachz SmallPtyTests.test__copy_to_each�s���D�.2�j�j�l�l�+��^�*���+/�:�:�<�<�(�
�(�(����%�%�'�'�
�2�2�z�2�2�2��	�����^�,�,�,�
��"�M�2�2�2��&��
�� �'�'��*�*�*�� �'�'����
�(C�D�D�D�� �'�'��*�*�*�
�
�
�z�
*�
*�	"�	"��I�g�a�j�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"��}�1�7�1�:�>��B��J�J�1�M�����-�w�q�z�:�D�A�A�A������!4�b�9�9�>�J�J�J���������R�0�0�-�@�@�@�@�@s�E�E�Ec�Z�	|���\}}|t_|���\}}|t_|���}d�|D��}|d���t
j|��|jt_|j	�
d��|j�
||dg��|j	�
d��|�tj
|d��d��dS)Nc�6�g|]}|�����Srr�r�s  rr�z7SmallPtyTests.test__copy_eof_on_all.<locals>.<listcomp>�r�rr\r�r)r�r(r�r)r�rhrIr�r�r�r�r�rbr�)rNr�r�r�r�r�r�s       r�test__copy_eof_on_allz#SmallPtyTests.test__copy_eof_on_all�s��G�.2�j�j�l�l�+��^�*���+/�:�:�<�<�(�
�(�(����%�%�'�'�
�2�2�z�2�2�2���1�
������
��"�#�#�#��&��
�� �'�'��*�*�*�� �'�'����
�(C�D�D�D�	
� �'�'��*�*�*�	
�����7�1�:�.�.��5�5�5�5�5rc����	|�d��t_t����fd�t_d�t_d�t_t����fd�t_|jt_	d�t_
|�tjg���d��|�|j
�d��dS)	Nr\c���d�gSrr)�_1�_2�status_sentinels  �r�<lambda>zDSmallPtyTests.test__restore_tty_mode_normal_return.<locals>.<lambda>�s���d�O�%<�rc��dSrr��_s rr�zDSmallPtyTests.test__restore_tty_mode_normal_return.<locals>.<lambda>�s��d�rc��dSrr)r�r��_3s   rr�zDSmallPtyTests.test__restore_tty_mode_normal_return.<locals>.<lambda>�s��t�rc����Srr)r"�
mode_sentinels �rr�zDSmallPtyTests.test__restore_tty_mode_normal_return.<locals>.<lambda>�s���=�rc��dSrrr�s rr�zDSmallPtyTests.test__restore_tty_mode_normal_return.<locals>.<lambda>�s��t�rz4pty.waitpid process status not returned by pty.spawnz1pty.tcsetattr not called with original mode value)r�r(r��objectr�rhr�r'r�r�r�rbr�r�)rNr�r�s @@r�$test__restore_tty_mode_normal_returnz2SmallPtyTests.test__restore_tty_mode_normal_return�s�����Q��'�'��*�*��� �(�(��<�<�<�<���"�N��	�+�+��	����
�0�0�0�0��
��,��
�#�^��
������2����9o�p�p�p�����4�m�Ex�y�y�y�y�yrN)r)
r�r�r�rSr�r�r�r�r�r�r�r�r�rrrr�r�>s�������3�+�+�+�"���,���
���
7�7�7�7����
+�+�+�A�A�A�86�6�6�,z�z�z�z�zrr�c�"�t��dSr)rrrr�tearDownModuler��s���O�O�O�O�Or�__main__)&�test.supportrr�test.support.import_helperrrnrIr(r&r�r�r?r�rr*r1rrcrqrr�
TIOCGWINSZr4�
TIOCSWINSZr8rHr�rrr$r.r6r:�TestCaser<r�r�r��mainrrr�<module>r�s/��/�/�/�/�/�/�/�/�4�4�4�4�4�4��
�i����
�
�g��������	�	�	�	�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�
�	�	�	�	�����
�
�
�
���������2�
�+�
���.�K��.�K��K�K�������K�K�K������
�����
�
�
����(���
���+�+�+�(�(�(�]?�]?�]?�]?�]?�h��]?�]?�]?�~Gz�Gz�Gz�Gz�Gz�H�%�Gz�Gz�Gz�T����z����H�M�O�O�O�O�O��s�A/�/A9�8A9