o
    tPf                      @   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                   @   sT   e Z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)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   d/var/www/html/humari/django-venv/lib/python3.10/site-packages/gevent/tests/test__close_backend_fd.py_check_backend1   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    testM   s   "zTest._make_test.<locals>.testc                    s   |    d S )N)r!   r#   r$   r   r    r%   Q   s   test__),BACKENDS_THAT_WILL_FAIL_TO_CREATE_AT_RUNTIMEstr__name__)clscountr   r%   r   r$   r    
_make_testJ   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_testsV   s   
zTest._make_testsN)r*   
__module____qualname__r   r   libev_supports_linux_iouringr(   libev_supports_linux_aior!   classmethodr-   r4   r   r   r   r    r      s     

r   __main__)
__future__r   r   unittestr   r   
gevent.hubr   gevent.testingr   
skipUnlessgetattrTestCaser   r4   r*   mainr   r   r   r    <module>   s     
	L