Your IP : 216.73.216.196


Current Path : /opt/alt/python310/lib64/python3.10/test/__pycache__/
Upload File :
Current File : //opt/alt/python310/lib64/python3.10/test/__pycache__/test_pty.cpython-310.opt-2.pyc

o

0�i^C�@sBddlmZmZddlmZed�ddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlZdZdZz
ejZejZdZWney_dZYnwergd	d
�Zndd
�Zdd
�Zdd�Zdd�Zdd�Zdd�ZGdd�dej �Z!Gdd�dej �Z"dd�Z#e$dkr�e�%�dSdS)�)�verbose�
reap_children)�
import_moduleZtermiosN�I wish to buy a fish license.
�For my pet fish, Eric.
TFcCst|�dS�N)�print��msg�r�4/opt/alt/python310/lib64/python3.10/test/test_pty.py�debug!sr
cC�dSrrr	rrrr
$scCs0|�d�r|�dd�S|�d�r|�dd�S|S)Ns

�
�
)�endswith�replace)�datarrr�normalize_output2s


rcCs	tj|ddd�}|��S)N�rbF)�mode�closefd)�io�FileIO�readline)�fd�readerrrr�	_readlineFsrcCs0zt�tj�t�|�WStjyY|Swr)�tty�	tcgetattr�pty�STDIN_FILENO�unittestZexpectedFailure�error)Zfunrrr�expectedFailureIfStdinIsTTYKs�r$cCs t�ddddd�}t�|t|�S)N�HHHHr)�struct�pack�fcntl�ioctl�_TIOCGWINSZ)r�srrr�_get_term_winszTsr,cCst�|t|�dSr)r(r)�_TIOCSWINSZ)rZwinszrrr�_set_term_winszXsr.c@sLeZdZdd�Zdd�Zedd��Zedd��Zd	d
�Z	dd�Z
d
d�ZdS)�PtyTestcCs�t�tj|j�}|�tjtj|�t�tj|j�}|�tjtj|�|�tjd�t�d�d|_d|_t	rez$t
�tj
�}|j|_|j|_t�d|j|jdd�}|�ttj
|�WdStydYdSwdS)Nr�
r%)�signal�SIGALRM�
handle_sig�
addCleanup�SIGHUP�
handle_sighup�alarm�
stdin_rows�
stdin_cols�_HAVE_WINSZ�os�get_terminal_sizer r!�lines�columnsr&r'r.�OSError)�selfZ	old_alarmZ
old_sighupZ	stdin_dimZold_stdin_winszrrr�setUp_s*

���z
PtyTest.setUpcCs|�d�dS)Nzisatty hung)�fail)r@Zsig�framerrrr3yszPtyTest.handle_sigcCrrr)ZsignumrCrrrr6|szPtyTest.handle_sighupc
Cs�zt�tj�}Wntjytd�d}Ynwd}|jdurw|jdurwzCtd�td|j�d|j�d��|jd}|jd}td|�d|�d��t�	d||d	d	�}t
tj|�ttj�}|�||d
�Wnt
yvt�d�Ynwz+td�z
t�||�\}}Wnty�t��\}}Ynwtd
|�d|�d��Wnt
y�t�d��w|�tj|�|�tj|�|�t�|�d�|r�|�t�|�|d�|r�|�t|�|d�t�|�}z8t�|d�zt�|d�}	|�d|	�Wnt
�y}
z|
jtjk�r�WYd}
~
nd}
~
wwWt�||�nt�||�wtd�t�|t�t |�}	|�dt!|	��td�t�|t"dd��t�|t"dd��t |�}|�dt!|��dS)Nz&tty.tcgetattr(pty.STDIN_FILENO) failedz$Setting pty.STDIN_FILENO window sizezoriginal size: (rows=z, cols=�)�ztarget size: (rows=r%rz&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 sizeFi�zWriting to slave_fdrzWriting chunked output�r)#rrr r!r#r
r8r9r&r'r.r,�assertEqualr?�warnings�warn�openpty�	TypeErrorr"ZSkipTestr4r;�closeZ
assertTrue�isatty�get_blocking�set_blocking�read�errnoZEAGAIN�write�
TEST_STRING_1rr�
TEST_STRING_2)r@rZnew_stdin_winszZtarget_stdin_rowsZtarget_stdin_colsZtarget_stdin_winsz�	master_fd�slave_fdZblocking�s1�e�s2rrr�test_openpty�s��

�
�
��
���
�����zPtyTest.test_openptycCs�td�t��\}}|�tj|�|tjkret�d�s$td�t�d�td�zt�	�Wn&t
y;td�Yn#tyGtd�Yntd�t�d�Yn	td	�t�d
�t�d�dStd|�	zt�|d�}Wn	t
y}Ynw|s�nt
j�t|�dd�dd��qlt�|d�\}}t�|�}td|||f�|dkr�|�d�dS|d
kr�|�d�dS|dkr�|�d�dS|dkr�|�d�dSdS)Nzcalling pty.fork()rEzChild's fd 1 is not a tty?!�zIn child, calling os.setsid()zGood: OSError was raised.zNo setsid() available?zAn unexpected error was raised.zos.setsid() succeeded! (bad!)��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.)r
r �forkr4r;rQZCHILDrR�_exit�setsidr?�AttributeErrorrU�sys�stdoutrW�strr�waitpid�waitstatus_to_exitcoderB)r@�pidrZrZstatus�resrrr�	test_fork�s^



���
�zPtyTest.test_forkcCs�td�t��\}}td|�d|�d��|�tj|�td�t�|�td�zt�|d�}Wnty<d}Ynw|�|d�dS)	NrFrGrHrIzClosing slave_fdzReading from master_fdrErJ)	r
r rOr4r;rQrUr?rL)r@rZr[rrrr�test_master_read's
�zPtyTest.test_master_readcCst�tjddg�dS)Nz-czprint("hi there"))r �spawnrj�
executable�r@rrr�test_spawn_doesnt_hang:szPtyTest.test_spawn_doesnt_hangN)�__name__�
__module__�__qualname__rAr3�staticmethodr6r$r_rqrrrvrrrrr/^s

TRr/c@s`eZdZ	dd�Zdd�Zdd�Zdd�Zdd
d�Zdd
�Zdd�Z	dd�Z
dd�Zdd�ZdS)�
SmallPtyTestscCsrtj|_tj|_tj|_tj|_tj	|_
tj|_tj
|_tj|_tj|_tj|_g|_g|_g|_g|_d|_dSr)r r!�orig_stdin_fileno�
STDOUT_FILENO�orig_stdout_filenorQ�orig_pty_close�_copy�orig_pty__copyrf�
orig_pty_fork�select�orig_pty_select�setraw�orig_pty_setrawr�orig_pty_tcgetattr�	tcsetattr�orig_pty_tcsetattrrm�orig_pty_waitpid�fds�files�select_rfds_lengths�select_rfds_results�tcsetattr_mode_settingrurrrrA@s
zSmallPtyTests.setUpc	Cs�|jt_|jt_|jt_|jt_|j	t_
|jt_|j
t_|jt_|jt_|jt_|jD]}z|��Wq+ty<Yq+w|jD]}zt�|�Wq@tyRYq@wdSr)r|r r!r~r}rrQr�r�r�rfr�r�r�r�r�rr�r�r�rmr�r?r�r;)r@�filerrrr�tearDownQs.
�
��zSmallPtyTests.tearDowncC�t��}|j�|�|Sr)r;�piper��extend)r@Zpipe_fdsrrr�_pipeg�zSmallPtyTests._pipecCr�r)�socket�
socketpairr�r�)r@r�rrr�_socketpairlr�zSmallPtyTests._socketpairrcCs*|�|j�d�t|��|j�d�ggfS)Nr)rLr��pop�lenr�)r@�rfdsZwfdsZxfdsZtimeoutrrr�_mock_selectqszSmallPtyTests._mock_selectcs�fdd�}|S)Ncs�dfS)N�rr�rorr�	mock_forkxsz0SmallPtyTests._make_mock_fork.<locals>.mock_forkr)r@ror�rr�r�_make_mock_forkwszSmallPtyTests._make_mock_forkcCs
||_dSr)r�)r@�fileno�optrrrr�_mock_tcsetattr|�
zSmallPtyTests._mock_tcsetattrcCs$	|��\}}|t_|��\}}|t_|��}dd�|D�}t�|dd�t�|d�|jt_|j	�
d�|j�
||dg�|j	�
d�|�t
��t�|d�Wd�n1s]wYt�||dgggd�d}|�||dg|�|�t�|d�d�|�t�|dd�d�dS)	NcS�g|]}|���qSr�r���.0r+rrr�
<listcomp>��z4SmallPtyTests.test__copy_to_each.<locals>.<listcomp>rEsfrom masters
from stdinrar�)r�r r}r!r�r;rWr�r�r��appendr�ZassertRaises�
IndexErrorr�rLrU)r@�read_from_stdout_fd�mock_stdout_fd�
mock_stdin_fd�write_to_stdin_fdr��mastersr�rrr�test__copy_to_eachs(�z SmallPtyTests.test__copy_to_eachcCs�	|��\}}|t_|��\}}|t_|��}dd�|D�}|d��t�|�|jt_|j	�
d�|j�
||dg�|j	�
d�|�t�
|d�d�dS)NcSr�rr�r�rrrr��r�z7SmallPtyTests.test__copy_eof_on_all.<locals>.<listcomp>rErar)r�r r}r!r�rQr;r�r�r�r�r�rLr�)r@r�r�r�r�r�r�rrr�test__copy_eof_on_all�s
z#SmallPtyTests.test__copy_eof_on_allcs�	|�d�t_t���fdd�t_dd�t_dd�t_t���fdd�t_|jt_	dd�t_
|�t�g��d�|�|j
�d	�dS)
NrEcsd�gSrr)�_1�_2)�status_sentinelrr�<lambda>�szDSmallPtyTests.test__restore_tty_mode_normal_return.<locals>.<lambda>cSrrr��_rrrr���cSrrr)r�r�Z_3rrrr��r�cs�Srr)r)�
mode_sentinelrrr��r�cSrrrr�rrrr��r�z4pty.waitpid process status not returned by pty.spawnz1pty.tcsetattr not called with original mode value)r�r rf�objectrmrQr�rr�r�r�rLrsr�rur)r�r�r�$test__restore_tty_mode_normal_return�s


z2SmallPtyTests.test__restore_tty_mode_normal_returnN)r)
rwrxryrAr�r�r�r�r�r�r�r�r�rrrrr{=s
r{cCs
t�dSr)rrrrr�tearDownModule�r�r��__main__)&Ztest.supportrrZtest.support.import_helperrrVr;r rrjr�r1r�rr"r&r(rMrXrYZ
TIOCGWINSZr*Z
TIOCSWINSZr-r:rir
rrr$r,r.ZTestCaser/r{r�rw�mainrrrr�<module>sR�
	`�