File: //usr/local/lib/python3.10/test/__pycache__/test_file_eintr.cpython-310.opt-2.pyc
o
�ir* � @ s d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZe� e j
dkd�G dd� d��ZG dd� deej�Z
G dd � d eej�ZG d
d� de�ZG dd
� d
eej�ZG dd� deej�ZG dd� de�ZG dd� deej�ZG dd� deej�Zedkr�e�� dS dS )� N�posixztests requires a posix system.c @ sV e Zd Zdd� Zdd� Zdd� Z dd d
�Zdd� Zd
Zdd� Z dd� Z
dd� ZdS )�TestFileIOSignalInterruptc C s
d | _ d S �N)�_process��self� r �1/usr/local/lib/python3.10/test/test_file_eintr.py�setUp s
zTestFileIOSignalInterrupt.setUpc C sB | j r| j �� d u rz| j �� W d S ty Y d S w d S d S r )r �poll�kill�OSErrorr r r r �tearDown s ��z"TestFileIOSignalInterrupt.tearDownc C � d| j S )Nz=import %s as io ;infile = io.FileIO(sys.stdin.fileno(), "rb")��modnamer r r r �_generate_infile_setup_code$ s �z5TestFileIOSignalInterrupt._generate_infile_setup_code� Tc C s~ | j �� d u rt�d� z| j �� W n ty Y nw |r/| j �� \}}||7 }||7 }| �d||�� |�� f � d S )Ng�������?z/Error from IO process %s:
STDOUT:
%sSTDERR:
%s
) r r �time�sleep� terminater
�communicate�fail�decode)r �why�stdout�stderrr Z
stdout_endZ
stderr_endr r r �fail_with_process_info- s
�
�z0TestFileIOSignalInterrupt.fail_with_process_infoc C s8 | � � }tjtjddd| d d | d d gtjtjtjd�| _| jj�t d��}|dkr7| j
d |d
� | jj�|� d}g }|smt
�
| jjgddd
�\}}}| j�tj� |d7 }|dkrk| j�� | �d� |rD| jj�� }|dkr~| j
d|d
� | jjdd�\} }
| jjr�| j
d| jj | |
dd� d S d S )Nz-uz-czXimport signal, sys ;signal.signal(signal.SIGINT, lambda s, f: sys.stderr.write("$\n")) ;z ;z"sys.stderr.write("Worm Sign!\n") ;zinfile.close())�stdinr r s Worm Sign!
zwhile awaiting a sign)r r r g�������?� �� z,reader process failed to handle our signals.s $
zwhile awaiting signal�
)�inputzexited rc=%dF)r )r �
subprocess�Popen�sys�
executable�PIPEr r �read�lenr r �write�select�send_signal�signal�SIGINTr r �readliner �
returncode)r �
data_to_write�read_and_verify_codeZinfile_setup_codeZ worm_signZsignals_sentZrlist�_Zsignal_liner r r r r �
_test_readingH sb ������� ��
� �
��z'TestFileIOSignalInterrupt._test_readingz�got = infile.{read_method_name}() ;expected = {expected!r} ;assert got == expected, ("{read_method_name} returned wrong data.\n""got data %r\nexpected %r" % (got, expected))c C � | j d| jjddd�d� d S )N�
hello, world!r/ s hello, world!
�Zread_method_nameZexpected�r1 r2 �r4 �_READING_CODE_TEMPLATE�formatr r r r �
test_readline� � �
�z'TestFileIOSignalInterrupt.test_readlinec C �$ | j d| jjdddgd�d� d S )N� hello
world!� readliness hello
s world!
r7 r8 r9 r r r r �test_readlines� � �
�z(TestFileIOSignalInterrupt.test_readlinesc C s: | j d| jjddd�d� | j d| jjddd�d� d S )Nr? �readall�
hello
world!
r7 r8 r( r9 r r r r �test_readall� s ���
�z&TestFileIOSignalInterrupt.test_readallN)r r T)�__name__�
__module__�__qualname__r
r r r r4 r: r<