
    [h                     H    d dl Z d dlmZ ddlmZ d Z G d de          ZdS )    N)greenlet   )TestCasec                  B     t          j                    j        j        |  S )N)r   
getcurrentparentswitch)argss    h/var/www/api.easyaligner.net/htdocs/venv_linux/lib/python3.11/site-packages/greenlet/tests/test_throw.pyr	   r	      s    .8  '.55    c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	
ThrowTestsc                     d }t          |          }|                                }|                     |d           |                    t                    }|                     |d           d S )Nc                      	 t          d           n # t          $ r t          d           Y d S w xY wt          d           d S Nokfail)r	   RuntimeError r   r   fz ThrowTests.test_class.<locals>.f   sR    t   t 6NNNNNs    //r   r   r	   assertEqualthrowr   selfr   gress       r   
test_classzThrowTests.test_class   sn    	 	 	 QKKhhjjd###ggl##d#####r   c                    d }t          |          }|                                }|                     |d           |                    t	          d                    }|                     |d           t          |          }|                                }|                     |d           |                    t          d          }|                     |d           d S )Nc                      	 t          d           nN# t          $ rA t          j                    d         } t	          |           dk    rt          d           Y d S Y nw xY wt          d           d S )Nr   r   ciaor   )r	   r   sysexc_infostr)vals    r   r   zThrowTests.test_val.<locals>.f   s{    t   lnnQ's88v%%4LLLFF &%
 6NNNNNs    AAAr   r!   r   r   s       r   test_valzThrowTests.test_val   s    	 	 	 QKKhhjjd###ggl6**++d###QKKhhjjd###gglF++d#####r   c                    d }t          |          }|                                }|                     |d           |                                }|                     t          |t           j                             |                     |j                   |                                }|                     t          |t           j                             d S )Nc                  B    t          d           t          d           d S r   r	   r   r   r   r   zThrowTests.test_kill.<locals>.f2   s    4LLL6NNNNNr   r   )r   r	   r   r   
assertTrue
isinstanceGreenletExitdeadr   s       r   	test_killzThrowTests.test_kill1   s    	 	 	 QKKhhjjd###ggii
3(=>>???ggii
3(=>>?????r   c                    t          j                    fd}fd}t          |          }t          ||          }|                     t                    5  |                    t                     d d d            n# 1 swxY w Y   |                     |j                   |                     |j                   t          |          }t          ||          }|                                }|                     |d           |                    t                    }|                     |d           |                     |j                   |                     |j                   t          |          }t          ||          }|                                }|                     |d           |                                }|                     |d           |                    t                    }|                     |d           |                     |j                   |                     |j                   d S )Nc                  X    	                       d           n# t          $ r Y dS w xY wdS )Nf1 ready to catchcaughtznormal exit)r	   
IndexErrormains   r   f1z9ThrowTests.test_throw_goes_to_original_parent.<locals>.f1A   sE     /0000      xx  =s    
''c                  2                          d           d S )Nfrom f2r)   r4   s   r   f2z9ThrowTests.test_throw_goes_to_original_parent.<locals>.f2H   s    KK	"""""r   )r   r1   r2   r8   )	r   r   assertRaisesr3   r   r*   r-   r	   r   )r   r6   r9   g1g2r   r5   s         @r   "test_throw_goes_to_original_parentz-ThrowTests.test_throw_goes_to_original_parent>   sN   "$$	! 	! 	! 	! 	!	# 	# 	# 	# 	# b\\b$$$z** 	! 	!HHZ   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!      b\\b$$$iikk1222hhz""h'''      b\\b$$$iikk1222iikki(((hhz""h'''        s   B  BBc                 ,   |                      t                    5 }t          j                                        t
          t                      |            d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nz1throw() third argument must be a traceback object)	r:   	TypeErrorr   r   r   	Exceptionr   r$   	exceptionr   excs     r   test_non_traceback_paramz#ThrowTests.test_non_traceback_paramf   s    y)) 	S!!''  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	S]++L	N 	N 	N 	N 	Ns   :A!!A%(A%c                 8   |                      t                    5 }t          j                                        t                      t                                 d d d            n# 1 swxY w Y   |                     t          |j	                  d           d S )Nz0instance exception may not have a separate value)
r:   r?   r   r   r   r@   BaseExceptionr   r$   rA   rB   s     r   test_instance_of_wrong_typez&ThrowTests.test_instance_of_wrong_typep   s    y)) 	S!!''  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	S]++K	M 	M 	M 	M 	Ms   A A''A+.A+c                    |                      t                    5 }t          j                                        d           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nabcz1exceptions must be classes, or instances, not str)r:   r?   r   r   r   r   r$   rA   rB   s     r   test_not_throwablezThrowTests.test_not_throwablez   s    y)) 	S!!''  	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	S]++L	N 	N 	N 	N 	Ns   'AAAN)
__name__
__module____qualname__r   r&   r.   r=   rD   rG   rJ   r   r   r   r   r      s        $ $ $$ $ $.@ @ @&! &! &!PN N NM M MN N N N Nr   r   )r"   r    r   r	   r   r   r   r   <module>rO      s    



            6 6 6uN uN uN uN uN uN uN uN uN uNr   