
    h                         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j                   eedd      d       G d	 d
ej                               Zej                          edk(  r ej                           yy)    )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                       e Zd ZdZ ej
                         sdndZdZe ej                         sdndz  Zd Z	e
d        Ze
d        Zy)	Test)kqueueepoll	linux_aiolinux_iouring)r    )r   c                    t        |d      }	 | j                  |j                  j                  |       t	        j
                  d       |j                  j                         }|	 |j                  |j                          y y t        j                  |       || j                  v rt	        j
                  d       n4| j                  t        d      5  t	        j
                  d       d d d        |j                          | j                  dt        |             |j                  |j                          y y # 1 sw Y   RxY w# |j                  |j                          w w xY 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   s       ]/var/www/html/engine/venv/lib/python3.12/site-packages/gevent/tests/test__close_backend_fd.py_check_backendzTest._check_backend=   s   '5)	SXX--w7LLXX__&F~ xx# $ HHV$CCCU#++KC (LL'( KKMMM+tCy1xx# $( ( xx# $s+   AE AE D;*3E ;E E E&c                     | j                   v rfd}n| j                  v rfd}nfd}dz   dz   t        |      z   |_        |j                  |fS )Nc                 0    | j                  dd       y )Nz
Expecting z to fail)skipTestr!   r   s    r#   testzTest._make_test.<locals>.testY   s    BC    c                 v    | j                  t        d      5  t        d       d d d        y # 1 sw Y   y xY w)Nev_loop_newFr   )r   r   r   r(   s    r#   r)   zTest._make_test.<locals>.test\   s2    ++KG 0/0 0 0s   /8c                 (    | j                         y )N)r$   r(   s    r#   r)   zTest._make_test.<locals>.test`   s    ##G,r*   test__)BACKENDS_TO_SKIP,BACKENDS_THAT_WILL_FAIL_TO_CREATE_AT_RUNTIMEstr__name__)clscountr   r)   s     ` r#   
_make_testzTest._make_testV   sX    c***DHHH0-')C/#e*<}}d""r*   c                     d x}}t        d      D ]A  }t        j                         D ](  }| j                  ||      \  }}t	        | ||       d x}}* C y )N   )ranger   supported_backendsr6   setattr)r4   r5   r   namefuncs        r#   _make_testszTest._make_testse   sa    1X 	#E224 # ^^E7;
dT4(""t#	#r*   N)r3   
__module____qualname__r   r   libev_supports_linux_iouringr1   r0   libev_supports_linux_aior$   classmethodr6   r>   r   r*   r#   r	   r	      s    ,( 2W113	4
:	 1  1 .W--/5602 # # # #r*   r	   __main__)
__future__r   r   unittestr   r   
gevent.hubr   gevent.testingr   
skipUnlessgetattrTestCaser	   r>   r3   mainr   r*   r#   <module>rM      s    % 	     "D-'2Y#8 Y#Y#v    zHMMO r*   