
    i>                         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                     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                       e Zd Zd ZdS )!TestDestroyInChildWithActiveSpawnc                    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    rA|                    d           |                                t          j        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                  F                         d             d          S )N   i   )append)r   pipe_read_fdruns   G/usr/local/lib/python3.11/dist-packages/gevent/tests/test__issue1686.pyreaderz6TestDestroyInChildWithActiveSpawn.test.<locals>.reader3   s$    JJqMMM7<...    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    	'&&&&&""""""      ++++++%%%%%%&&&&&&......""""""%%%%%%&(gii#m&&&'''	/ 	/ 	/ 	/ 	/ 	/ 	/
 %%%	, vgiidff!88KKTK***S!!!HQKKKF 	S			#GCOO*S!H55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<      s    
 ' & & & & &       % % % % % % 				  ' ' ' ' ' ' ((<% <% <% <% <%(9 <% <% )(<%~ zIN r   