B
    u9a–
  ã               @   s|   d dl Z d dlZd dlZd dlZd dlZd dlmZ e ejdd… dkd¡G dd„ dej	ƒƒZ
dd	„ Zed
krxe ¡  dS )é    N)Úsupporté   Úwinz can't easily test on this systemc               @   sd   e Zd ZG dd„ dƒZG dd„ dƒZdd„ Ze ej	 
d¡d¡d	d
„ ƒZdd„ Zdd„ Zdd„ ZdS )ÚSelectTestCasec               @   s   e Zd ZdS )zSelectTestCase.NopeN)Ú__name__Ú
__module__Ú__qualname__© r	   r	   ú!/usr/lib/python3.7/test_select.pyÚNope   s   r   c               @   s   e Zd Zdd„ ZdS )zSelectTestCase.Almostc             C   s   dS )NÚfilenor	   )Úselfr	   r	   r
   r      s    zSelectTestCase.Almost.filenoN)r   r   r   r   r	   r	   r	   r
   ÚAlmost   s   r   c             C   sx   |   ttjddd¡ |   ttj|  ¡ gg g ¡ |   ttj|  ¡ gg g ¡ |   ttjg g g d¡ |   ttjg g g d¡ d S )Né   é   r   znot a numberéÿÿÿÿ)ZassertRaisesÚ	TypeErrorÚselectr   r   Ú
ValueError)r   r	   r	   r
   Útest_error_conditions   s
    z$SelectTestCase.test_error_conditionsZfreebsdz*skip because of a FreeBSD bug: kern/155606c             C   s~   t tdƒj}| ¡ }| ¡  yt |gg g d¡ W n2 tk
rd } z|  |jtj¡ W d d }~X Y nX |  	d¡ W d Q R X d S )NÚrbr   zexception not raised)
ÚopenÚ__file__r   Úcloser   ÚOSErrorÚassertEqualÚerrnoZEBADFÚfail)r   ÚfpÚfdÚerrr	   r	   r
   Ú
test_errno   s    "zSelectTestCase.test_errnoc             C   s>   t   g g g d¡\}}}|  ||¡ |  ||¡ |  ||¡ d S )Nr   )r   ZassertIsNot)r   ÚrÚwÚxr	   r	   r
   Útest_returned_list_identity(   s    z*SelectTestCase.test_returned_list_identityc             C   s¾   d}t  |d¡}x dD ]˜}tjr*td|ƒ t |gg g |¡\}}}|||fg g g fkrXq|||f|gg g fkrž| ¡ }tjrˆtt|ƒƒ |stjrštdƒ P q|  d|||¡ qW | 	¡  d S )Nz?for i in 0 1 2 3 4 5 6 7 8 9; do echo testing...; sleep 1; doner"   )r   r   r   é   é   é   NNNNNNNNNNz	timeout =ZEOFz'Unexpected return values from select():)
ÚosÚpopenr   ÚverboseÚprintr   ÚreadlineÚreprr   r   )r   ÚcmdÚpZtoutZrfdZwfdZxfdÚliner	   r	   r
   Útest_select/   s&    

zSelectTestCase.test_selectc                sR   g ‰ G ‡ fdd„dƒ}|ƒ gd ˆ d d …< |   t g ˆ g ¡g ˆ d d… g f¡ d S )Nc                   s   e Zd Z‡ fdd„ZdS )z-SelectTestCase.test_select_mutated.<locals>.Fc                s   ˆ d= t j ¡ S )Nr   )ÚsysÚ
__stdout__r   )r   )Úar	   r
   r   H   s    z4SelectTestCase.test_select_mutated.<locals>.F.filenoN)r   r   r   r   r	   )r5   r	   r
   ÚFG   s   r6   é
   é   )r   r   )r   r6   r	   )r5   r
   Útest_select_mutatedE   s    z"SelectTestCase.test_select_mutatedN)r   r   r   r   r   r   ÚunittestÚskipIfr3   ÚplatformÚ
startswithr!   r%   r2   r9   r	   r	   r	   r
   r      s   r   c               C   s   t  ¡  d S )N)r   Zreap_childrenr	   r	   r	   r
   ÚtearDownModuleN   s    r>   Ú__main__)r   r)   r   r3   r:   Ztestr   r;   r<   ZTestCaser   r>   r   Úmainr	   r	   r	   r
   Ú<module>   s   
D