a
    'f                     @   s|   d dl Z d dlmZ d dlZd dlmZ dd ZdZG dd dej	Z
G dd	 d	e
ZG d
d de
Z[
edkrxe  dS )    N)get_hubc                 C   s   | d S N )exr   r   l/var/www/staging/api/virtual_environments/venv/lib/python3.9/site-packages/gevent/tests/test__systemerror.pyraise_   s    r   zshould be re-raised and caughtc                   @   sL   e Zd ZdZdZdd Zdd Zdd Zd	d
 Zdd Z	dd Z
dd ZdS )TestNFc                 G   s   t d S r   )NotImplementedErrorselfargsr   r   r   start   s    z
Test.startc                 C   s
   d | _ d S r   )xr   r   r   r   setUp   s    z
Test.setUpc              
   C   sj   |  tjt ztd W n@ ty\ } z(t|tksHJ tt|W Y d }~nd }~0 0 t	dd S )NMbP?zmust raise SystemExit)
r   sysexitMSGgeventsleep
SystemExitstrreprAssertionError)r   r   r   r   r   test_sys_exit   s    2zTest.test_sys_exitc                 C   s:   |  tt ztd W n ty,   Y n
0 tdd S )Nr   zmust raise KeyboardInterrupt)r   r   KeyboardInterruptr   r   r   r   r   r   r   test_keyboard_interrupt!   s    zTest.test_keyboard_interruptc              
   C   st   ddl m} |jdddd zBz| tt t d q,W n tyL   Y n0 W |ddt_	n|ddt_	0 d S )	Nr   )monkeyFT)stdinstdoutstderrg?r   r!   )
r   r   Z	patch_sysr   r   r   r   Zget_originalr   r!   )r   r   r   r   r   &test_keyboard_interrupt_stderr_patched+   s    z+Test.test_keyboard_interrupt_stderr_patchedc                 C   sJ   |  ttt | tt td W d    n1 s<0    Y  d S )NgMb`?)r   r   SystemErrorr   assertRaisesRegexr   r   r   r   r   r   test_system_error:   s
    zTest.test_system_errorc                 C   s   |  ttd td d S )Nz+regular exception must not kill the programr   )r   r   	Exceptionr   r   r   r   r   r   test_exceptionA   s    zTest.test_exception)__name__
__module____qualname__r   Zerror_fatalr   r   r   r   r"   r%   r'   r   r   r   r   r      s   

r   c                       s2   e Zd Zdd Zdd Zejr* fddZ  ZS )TestCallbackc                 C   s    | j d ur| j jrJ | j d S r   )r   pendingr   r   r   r   tearDownH   s    
zTestCallback.tearDownc                 G   s   t  jj| | _d S r   )r   loopZrun_callbackr   r
   r   r   r   r   Q   s    zTestCallback.startc                    s   t d tt|   d S )Nr   )r   r   superr+   r'   r   	__class__r   r   r'   U   s    
zTestCallback.test_exception)	r(   r)   r*   r-   r   	greentestZLIBUVr'   __classcell__r   r   r0   r   r+   F   s   	r+   c                   @   s   e Zd Zdd Zdd ZdS )	TestSpawnc                 C   s*   t d | jd ur&| jjs&J | jd S )Ng-C6?)r   r   r   Zdeadr   r   r   r   r-   b   s    

zTestSpawn.tearDownc                 G   s   t j| | _d S r   )r   spawnr   r
   r   r   r   r   g   s    zTestSpawn.startN)r(   r)   r*   r-   r   r   r   r   r   r4   `   s   r4   __main__)r   Zgevent.testingtestingr2   r   Z
gevent.hubr   r   r   ZTestCaser   r+   r4   r(   mainr   r   r   r   <module>   s   9