o
    c                     @   s   d dl mZ d dlZd dlZd dlZd dlmZ d dlmZ d dlm	Z	 e
eedddG d	d
 d
ejZe  edkrEe  dS dS )    )print_functionN)core)Hub)sysinfoLIBEV_EMBEDFzNeeds embedded libev. hub.loop.fileno is only defined when we embed libev for some reason. Choosing specific backends is also only supported by libev (not libuv), and besides, libuv has a nasty tendency to abort() the process if its FD gets closed. c                   @   sj   e Zd ZeejdeejdZdZe	 sdndZ
e
e s dnd7 Z
dd Zed	d
 Zedd ZdS )TestassertRaisesRegexassertRaisesRegexp)kqueueepoll	linux_aiolinux_iouring)r    )r   c                 C   s   t |dd}zi| |jj| td |j }|d u r+W |jd ur)|  d S d S t	| || j
v r;td n| td td W d    n1 sQw   Y  |  | dt| W |jd urn|  d S d S |jd urz|  w w )NFdefaultgMbP?z(libev)	destroyed)r   assertEqualloopbackendgeventsleepfilenodestroyosclose$BACKENDS_THAT_SUCCEED_WHEN_FD_CLOSEDr   SystemErrorassertInrepr)selfr   hubr   r   r   Y/var/www/chikooza/env/lib/python3.10/site-packages/gevent/tests/test__close_backend_fd.py_check_backend4   s.   






zTest._check_backendc                    sD    | j v r fdd}n fdd}d  d t| |_|j|fS )Nc                    s>   |  td t dd W d    d S 1 sw   Y  d S )Nev_loop_newFr   )r   r   r   r   r   r   r!   testP   s   "zTest._make_test.<locals>.testc                    s   |    d S )N)r"   r$   r%   r   r!   r&   T   s   test__),BACKENDS_THAT_WILL_FAIL_TO_CREATE_AT_RUNTIMEstr__name__)clscountr   r&   r   r%   r!   
_make_testM   s
   

zTest._make_testc                 C   sL   d  }}t dD ]}t D ]}| ||\}}t| || d  }}qqd S )N   )ranger   supported_backendsr.   setattr)r,   r-   r   namefuncr   r   r!   _make_testsY   s   
zTest._make_testsN)r+   
__module____qualname__getattrunittestTestCaser   r   r   libev_supports_linux_iouringr)   libev_supports_linux_aior"   classmethodr.   r5   r   r   r   r!   r      s&    


r   __main__)
__future__r   r   r9   r   r   
gevent.hubr   gevent.testingr   
skipUnlessr8   r:   r   r5   r+   mainr   r   r   r!   <module>   s     
	O