o
    tPf>                     @   sx   d Z ddlmZ ddlmZ ddlmZ ddlZddlZddlmZ	 e	
dG dd	 d	ejZed
kr:e	  dS dS )z
Tests for https://github.com/gevent/gevent/issues/1686
which is about destroying a hub when there are active
callbacks or IO in operation.
    )absolute_import)division)print_functionN)testingzUses os.forkc                   @   s   e Zd Zdd ZdS )!TestDestroyInChildWithActiveSpawnc                    s:  ddl m} ddlm} ddlm} ddlm} ddlm  ddlm	} ddlm
} dd	lm} dd
lm} t \}	| ||	 g  fdd}
d}||	| | ||
}
| }| }|dkry|jdd |  td d S |d ||d}| ||df |
 }| dg | || d S )Nr   )sleep)get_hub)spawn)	wait_read)nb_read)nb_write)make_nonblocking)fork)waitpidc                      s    d  dS )N   i   )append r   pipe_read_fdrunr   ]/var/www/html/humari/django-venv/lib/python3.10/site-packages/gevent/tests/test__issue1686.pyreader3   s   

z6TestDestroyInChildWithActiveSpawn.test.<locals>.readers   testT)destroy_loopg      ?r   )timer   geventr   r	   gevent.socketr
   	gevent.osr   r   r   r   r   ospipedestroyassertFalse_exitassertEqualget)selfhangr   r	   r
   r   r   r   r   pipe_write_fdr   DATAhubpidwait_child_resultdatar   r   r   test   s>   



z&TestDestroyInChildWithActiveSpawn.testN)__name__
__module____qualname__r,   r   r   r   r   r      s    r   __main__)__doc__
__future__r   r   r   r   unittestr   r   	greentestskipOnWindowsTestCaser   r-   mainr   r   r   r   <module>   s   ?