File: //proc/thread-self/root/usr/local/lib/python3.7/test/__pycache__/test_pty.cpython-37.pyc
B
��g�/ � @ s� d dl mZmZmZ ed� d dlZd dlZd dlZd dlZd dlZd dl Z d dl
Z
d dlZd dlZdZ
dZerzdd� Zndd� Zd d
� Zdd� ZG d
d� dej�ZG dd� dej�Zdd� Zedkr�e�� dS )� )�verbose�
import_module�
reap_childrenZtermiosNs I wish to buy a fish license.
s For my pet fish, Eric.
c C s t | � d S )N)�print)�msg� r �)/usr/local/lib/python3.7/test/test_pty.py�debug s r c C s d S )Nr )r r r r r s c C s0 | � d�r| �dd�S | � d�r,| �dd�S | S )Ns
�
s
)�endswith�replace)�datar r r �normalize_output% s
r c C s t j| ddd�}|�� S )z8Read one line. May block forever if no newline is read.�rbF)�mode�closefd)�io�FileIO�readline)�fd�readerr r r � _readline9 s r c @ s8 e Zd Zdd� Zdd� Zedd� �Zdd� Zd d
� ZdS )�PtyTestc C s` t � t j| j�}| �t j t j|� t � t j| j�}| �t j t j|� | �t jd� t �d� d S )Nr �
)�signal�SIGALRM�
handle_sigZ
addCleanup�SIGHUP�
handle_sighup�alarm)�selfZ old_alarmZ
old_sighupr r r �setUpD s z
PtyTest.setUpc C s | � d� d S )Nzisatty hung)�fail)r Zsig�framer r r r P s zPtyTest.handle_sigc C s d S )Nr )Zsignumr# r r r r S s zPtyTest.handle_sighupc
C s� yLt d� t�� \}}t d||f � t d|f � t�|�}t d| � W n tk
rj t�d��Y nX | �t� |�d� t�
|�}z^t�|d� yt�|d�}| �
d |� W n0 tk
r� } z|jtjkr҂ W d d }~X Y nX W d t�||� X t d
� t�|t� t|�}| �
dt|�� t d� t�|td d
� � t�|td
d � � t|�}| �
dt|�� t�|� t�|� d S )NzCalling master_open()z#Got master_fd '%d', slave_name '%s'zCalling slave_open(%r)zGot slave_fd '%d'z,Pseudo-terminals (seemingly) not functional.zslave_fd is not a ttyFi � zWriting to slave_fds I wish to buy a fish license.
zWriting chunked output� s For my pet fish, Eric.
)r �ptyZmaster_openZ
slave_open�OSError�unittestZSkipTestZ
assertTrue�os�isatty�get_blocking�set_blocking�read�assertEqual�errnoZEAGAIN�write�
TEST_STRING_1r r �
TEST_STRING_2�close)r � master_fdZ
slave_nameZslave_fdZblocking�s1�e�s2r r r �
test_basicZ sB
zPtyTest.test_basicc C s� t d� t�� \}}|tjkr�t�d�s:t d� t�d� t d� yt�� W nR tk
rj t d� Y nJ t k
r� t d� Y n0 t d� t�d� Y nX t d � t�d
� t�d� n�t d| � xNyt�
|d
�}W n tk
r� P Y nX |s�P tj�
t|�dd�dd�� q�W t�|d�\}}|d? }t d|||f � |dk�r\| �d� n@|d
k�rr| �d� n*|dk�r�| �d� n|dk�r�| �d� t�|� d S )Nzcalling pty.fork()� zChild'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.�P s
r
�ascii)�encodingr � z&Child (%d) exited with status %d (%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&