
    <|h>                         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	j                  d       G d d	ej                               Zed
k(  r e	j                          yy)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                       e Zd Zd Zy)!TestDestroyInChildWithActiveSpawnc                 X   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        j                         \  }	 |        ||	       g fd}
d} ||	|        |        ||
      }
 |       } |       }|dk(  r9|j                  d       | j!                         t        j"                  d       y  |d        ||d      }| j%                  ||df       |
j'                         }| j%                  dg       | j%                  ||       y )Nr   )sleep)get_hub)spawn)	wait_read)nb_read)nb_write)make_nonblocking)fork)waitpidc                  8    j                  d         d      S )N   i   )append)r   pipe_read_fdruns   [/var/www/html/test/engine/venv/lib/python3.12/site-packages/gevent/tests/test__issue1686.pyreaderz6TestDestroyInChildWithActiveSpawn.test.<locals>.reader3   s    JJqM<..    s   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   s                   @@@r   testz&TestDestroyInChildWithActiveSpawn.test   s    	'" +%&."%&(ggi#m&'	/
 %, vif!8KKTK*S!HHQK 	S	#CO*S!H5zz|qc"t$r   N)__name__
__module____qualname__r/    r   r   r   r      s    :%r   r   __main__)__doc__
__future__r   r   r   r    unittestr   r   	greentestskipOnWindowsTestCaser   r0   mainr3   r   r   <module>r<      sh   
 '  % 	  ' (<%(9(9 <% )<%~ zINN r   