o
    ÑtPf“  ã                   @   sš   d dl Z d dlZd dlmZ d dlmZ d dlmZmZ d dlmZ d dlm	Z	 d dlm
Z
 e jd  dkZd	d
„ ZG dd„ deƒZedkrKe ¡  dS dS )é    N)Úsocket)Útesting)ÚTestCaseÚtcp_listener)Úgc_collect_if_needed)Ú
skipOnPyPy)Úparamsé   c                 C   s@   z|   |¡}W n ty   tsJ ‚Y d S w |d u sJ |ƒ‚d S )N)ÚwriteÚ
ValueErrorÚPY3)ÚfÚsÚr© r   ú[/var/www/html/humari/django-venv/lib/python3.10/site-packages/gevent/tests/test__greenio.pyÚ_write_to_closed"   s   ÿr   c                   @   s$   e Zd Zdd„ Zedƒdd„ ƒZdS )ÚTestGreenIoc                    sl   ‡ fdd„}‡ fdd„}‡ fdd„}t ƒ }t ||¡}||ƒ | ¡  t ƒ }t ||¡}||ƒ | ¡  d S )Nc                    sh   z.|   ¡ \}}|jdd}| ¡  | d¡ | ¡  t|dƒ ˆ  tj|jd¡ W |  ¡  d S |  ¡  w )NÚwb©Úmodeó   hello
ó   aó   b)	ÚacceptÚmakefileÚcloser
   r   ÚassertRaisesr   ÚerrorÚsend©ÚlistenerÚconnÚ_Úfd©Úselfr   r   Úaccept_close_early/   s   

z@TestGreenIo.test_close_with_makefile.<locals>.accept_close_earlyc                    sr   z3|   ¡ \}}|jdd}| d¡ | ¡  | d¡ | ¡  t|dƒ ˆ  tj|jd¡ W |  ¡  d S |  ¡  w )Nr   r   s   helloó   
r   r   )	r   r   r
   r   r   r   r   r   r   r    r%   r   r   Úaccept_close_late=   s   


z?TestGreenIo.test_close_with_makefile.<locals>.accept_close_latec                    sV   t  tj|  ¡ d f¡}|jdd}| ¡  ˆ  | ¡ d¡ ˆ  	| 
¡ ¡ | ¡  d S )Né   Úrbr   r   )r   Úcreate_connectionr   ÚDEFAULT_CONNECTÚgetsocknamer   r   ÚassertEqualÚreadlineÚassertFalseÚread)ÚserverÚclientr$   r%   r   r   Údid_it_workL   s   z9TestGreenIo.test_close_with_makefile.<locals>.did_it_work)r   ÚgeventÚspawnÚkill)r&   r'   r)   r5   r3   Úserver_greenletr   r%   r   Útest_close_with_makefile-   s   z$TestGreenIo.test_close_with_makefilez6Takes multiple GCs and issues a warning we can't catchc                    s°   dd l ‰ ‡ fdd„}tƒ }t ||¡ t tj| ¡ d f¡}tj	 
d¡' | ¡ }| ¡  |  | ¡ d¡ |  | ¡ d¡ | ¡  W d   ƒ ~~d S 1 sOw   Y  ~~d S )Nr   c              	      s¤   ˆ   ¡ D ˆ  d¡ z(|  ¡ d }|jdd}| d¡ | ¡  t|dƒ W |  ¡  ~ ~tƒ  tƒ  n|  ¡  ~ ~tƒ  tƒ  w W d   ƒ d S 1 sKw   Y  d S )NÚignorer   r   r   r   r   )Úcatch_warningsÚsimplefilterr   r   r
   r   r   r   )r!   r"   ©Úwarningsr   r   Úaccept_oncea   s&   


ü
"ðz7TestGreenIo.test_del_closes_socket.<locals>.accept_oncer*   g      à?zhello
Ú )r?   r   r6   r7   r   r,   r   r-   r.   ÚTimeoutÚ	start_newr   r   r/   r2   )r&   r@   r3   r4   r$   r   r>   r   Útest_del_closes_socket^   s"    

ø	ö	z"TestGreenIo.test_del_closes_socketN)Ú__name__Ú
__module__Ú__qualname__r:   r   rD   r   r   r   r   r   +   s    1r   Ú__main__)Úsysr6   r   r   Ú	greentestÚgevent.testingr   r   r   r   r   Úversion_infor   r   r   rE   Úmainr   r   r   r   Ú<module>   s   	fÿ