
    i{                         d dl mZ d dlZd dlmZ d dlZdZej        sedz  Z	nedz  Z	 G d dej
                  Z G d d	ej
                  Zed
k    r ej                     dS dS )    N)get_hubg{Gz?g       @g      4@c                       e Zd ZdZd Zd ZdS )TestDirectRaiseFc                     	 t           j        # t           j        $ r)}|j        rJ t          |                      Y d }~d S d }~ww xY wNgeventTimeoutpendingrepr)selfts     E/usr/local/lib/python3.11/dist-packages/gevent/tests/test__timeout.pytest_direct_raise_classz'TestDirectRaise.test_direct_raise_class   s^    	*. ~ 	* 	* 	*y))$q'')))))))))	*s    AAAc                     t          j                    }	 |# t           j        $ r9}||u sJ ||f            |j        rJ t          |                      Y d }~d S d }~ww xY wr   r   )r   timeoutr   s      r   test_direct_raise_instancez*TestDirectRaise.test_direct_raise_instance   s    .""	*M~ 	* 	* 	*a<<<'1<<<y))$q'')))))))))	*s    A.AAN)__name__
__module____qualname__switch_expectedr   r        r   r   r      s7        O* * ** * * * *r   r   c                   x    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dd	Z
d
 Zd Zd Zd Zej        d             ZdS )Testc                     	 t                                                       |                     d           d S # t          j        $ r'}||ur |r|                                 |cY d }~S d }~ww xY wNzMust raise Timeout)r   switchfailr	   r
   close)r   r   r    exs       r   _testz
Test._test!   s    	IIII*+++++~ 	 	 	   


IIIIII	s   59 A/A*$A/*A/c                     |                                  |                     |d           |                                  |                     |d          S )NFT)startr"   r   r   s     r   _check_expireszTest._check_expires,   sD    

7E"""zz'4(((r   c                 b    t          j        t                    }|                     |           d S r   r	   r
   SHOULD_EXPIREr&   r%   s     r   test_expireszTest.test_expires3   s+    .//G$$$$$r   c                 d    t          j        t          d          }|                     |           d S )NFr(   r%   s     r   test_expires_falsezTest.test_expires_false7   s/     .66G$$$$$r   c                     t          j        t          d          }|                     |          }|                     t          |                              d                     d S NXXX)r	   r
   r)   r&   
assertTruestrendswithr   r   r!   s      r   test_expires_strzTest.test_expires_str=   sT     .66  ))B((//00000r   c                     |                      dt          |          v pdt          |          v t          |                     d S )Nzexceptions must bezexceptions must derive)r0   r1   )r   r!   s     r   assert_type_errzTest.assert_type_errD   sG    ,B7^;SWZ[]W^W^;^`cdf`g`ghhhhhr   c                    t          j        t          t                                }|                                 	 t                                                       |                     d           n,# t          $ r}| 	                    |           Y d }~nd }~ww xY w|
                                  G d d          }t          j        t          |          }|                                 	 t                                                       |                     d           n# t          $ r?}|                     t          j        d           | 	                    |           Y d }~nYd }~w |                     t          j        d           t          j                    d         }|                     ||           Y nxY w|
                                 t          j        t           |                      }|                                 	 t                                                       |                     d           n# t          $ r?}|                     t          j        d           | 	                    |           Y d }~nYd }~w |                     t          j        d           t          j                    d         }|                     ||           Y nxY w|
                                 d S )NzMost raise TypeErrorc                       e Zd ZdS )1Test.test_expires_non_exception.<locals>.OldStyleN)r   r   r   r   r   r   OldStyler9   R   s        Dr   r:   zMust raise OldStylez-Py3 raises a TypeError for non-BaseExceptionsz+Old style classes can only be raised on Py2r   )r	   r
   r)   objectr$   r   r   r   	TypeErrorr6   r    r0   	greentestPY3PY2sysexc_infoassertEqual)r   r   r!   r:   r   s        r   test_expires_non_exceptionzTest.test_expires_non_exceptionH   s   .99	%IIII,---- 	% 	% 	%  $$$$$$$$	%	 	 	 	 	 	 	 	.99		*IIII+,,,, 	% 	% 	%OOIM+Z[[[  $$$$$$$$	*OOIM+XYYYq!AQ))))).

;;		*IIII+,,,, 	% 	% 	%OOIM+Z[[[  $$$$$$$$	*OOIM+XYYYq!AQ)))))sI   5A2 2
B<BB.5D$ $
F>.5E((AF>5I 
K5JAKTc                     	 |5  t                                                       d d d            n# 1 swxY w Y   n## t          j        $ r}||ur |cY d }~S d }~ww xY w|r|                     d           d S d S r   )r   r   r	   r
   r   )r   r   raisesr!   s       r   _check_context_manager_expiresz#Test._check_context_manager_expiresp   s    	 # #		  """# # # # # # # # # # # # # # #~ 	 	 	  IIIIII	
  	,II*+++++	, 	,s3   = !1= 5= 5= AAAAc                 b    t          j        t                    }|                     |           d S r   )r	   r
   r)   rF   r%   s     r   test_context_managerzTest.test_context_manager|   s+    .//++G44444r   c                     t          j        t          d          }|                     |d           |                     t          |                              d          t          |                     d S )NF)rE   z(silent)r	   r
   r)   rF   r0   r1   r2   r%   s     r   test_context_manager_falsezTest.test_context_manager_false   s`    .66++GE+BBBG--j993w<<HHHHHr   c                     t          j        t          d          }|                     |          }|                     t          |                              d          t          |                     d S r.   rJ   r3   s      r   test_context_manager_strzTest.test_context_manager_str   sZ    .660099B((//R99999r   c                    t          j        t                    }|                                 |                                 t          j        t                     |                     |j        |           |	                                 d S r   )
r	   r
   r)   r$   cancelsleepSHOULD_NOT_EXPIREassertFalser   r    r%   s     r   test_cancelzTest.test_cancel   sh    .//&''''222r   c                    |                      t          j                  5  t          j        t          t          j        t                     d d d            n# 1 swxY w Y   t                      }t          j        t          t          j        t          |          }|                     ||           t          j        t          t          j        t          |          }| 	                    |           d S )N)timeout_value)
assertRaisesr	   r
   with_timeoutr)   rP   rQ   r;   assertIsassertIsNone)r   Xrs      r   test_with_timeoutzTest.test_with_timeout   s   v~.. 	P 	Pv|=NOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	PHHv|=N^_```a 16<^_```!s   +AAAN)T)r   r   r   r"   r&   r*   r,   r4   r6   rC   rF   rH   rK   rM   rS   r=   ignores_leakcheckr\   r   r   r   r   r      s        	 	 	) ) )% % %% % %1 1 1i i i& & &P
, 
, 
, 
,5 5 5I I I: : :
      !   r   r   __main__)gevent.testingtestingr=   r	   
gevent.hubr   r@   r)   RUNNING_ON_CIrQ   TestCaser   r   r   mainr   r   r   <module>re      s    " " " " " "        



 -%+%,* * * * *i( * * *$| | | | |9 | | |~ zIN r   