
    i                        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                                 edk    r ej                     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                       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dS )	Test)kqueueepoll	linux_aiolinux_iouring)r    )r   c                    t          |d          }	 |                     |j        j        |           t	          j        d           |j                                        }| 	 |j        |                                 d S d S t          j	        |           || j
        v rt	          j        d           nG|                     t          d          5  t	          j        d           d d d            n# 1 swxY w Y   |                                 |                     dt          |                     |j        |                                 d S d S # |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       N/usr/local/lib/python3.11/dist-packages/gevent/tests/test__close_backend_fd.py_check_backendzTest._check_backend=   s   '5)))	SX-w777LX__&&F~ x# $# HV$CCCU####++KCC ( (L'''( ( ( ( ( ( ( ( ( ( ( ( ( ( ( KKMMMMM+tCyy111x# $#sx# $s7   AE AE C0$E 0C44E 7C48: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                 :    |                      dd           d S )Nz
Expecting z to fail)skipTestr!   r   s    r#   testzTest._make_test.<locals>.testY   s$    BCCCCC    c                     |                      t          d          5  t          d           d d d            d S # 1 swxY w Y   d S )Nev_loop_newFr   )r   r   r   r(   s    r#   r)   zTest._make_test.<locals>.test\   s    ++KGG 0 0////0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s   <A A c                 2    |                                 d S )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   s    c***D D D D D DHHH0 0 0 0 0 0- - - - -')C/#e**<}d""r*   c                     d x}}t          d          D ]F}t          j                    D ]0}|                     ||          \  }}t	          | ||           d x}}1Gd S )N   )ranger   supported_backendsr6   setattr)r4   r5   r   namefuncs        r#   _make_testszTest._make_testse   s}    1XX 	# 	#E244 # # ^^E7;;
dT4(((""tt#	# 	#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33	4 4 4
:	 1  1 .W-//5 5 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   % % % % % % 				               " " " " " "GD-''2 Y# Y# Y# Y# Y#8 Y# Y# Y#v      zHMOOOOO r*   