o
    ,wi                     @   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                   @   sX   e Zd ZdZe sdndZdZee sdnd7 Zdd Z	e
dd Ze
d	d
 ZdS )Test)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_CLOSEDassertRaisesRegexSystemErrorassertInrepr)selfr   hubr   r   r   `/home/ubuntu/sommelier/.venv/lib/python3.10/site-packages/gevent/tests/test__close_backend_fd.py_check_backend=   s.   






zTest._check_backendc                    s\    | j v r fdd}n | jv r fdd}n fdd}d  d t| |_|j|fS )Nc                    s   |  d f  d S )NzExpecting %s to fail)skipTestr   r   r   r    testY   s   zTest._make_test.<locals>.testc                    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    r%   \   s   "c                    s   |    d S )N)r!   r#   r$   r   r    r%   `   s   test__)BACKENDS_TO_SKIP,BACKENDS_THAT_WILL_FAIL_TO_CREATE_AT_RUNTIMEstr__name__)clscountr   r%   r   r$   r    
_make_testV   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_testse   s   
zTest._make_testsN)r,   
__module____qualname__r   r   libev_supports_linux_iouringr*   r)   libev_supports_linux_aior!   classmethodr/   r6   r   r   r   r    r      s"    

r   __main__)
__future__r   r   unittestr   r   
gevent.hubr   gevent.testingr   
skipUnlessgetattrTestCaser   r6   r,   mainr   r   r   r    <module>   s     
	[