a
    3j3                     @   s   d Z ddlmZ ddlZddlZddlZdd ZG dd dZG dd	 d	ejZ	G d
d dejZ
G dd dejZG dd dejZG dd dejZG dd dejZedkre  dS )zTests for the raise statement.    )supportNc                   C   s(   z
t  W n   t d  Y S 0 d S )N   )OSErrorsysexc_info r   r   K/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_raise.pyget_tb   s    
r	   c                   @   s   e Zd Zdd Zdd ZdS )Contextc                 C   s   | S Nr   selfr   r   r   	__enter__   s    zContext.__enter__c                 C   s   dS )NTr   )r   exc_type	exc_valueexc_tbr   r   r   __exit__   s    zContext.__exit__N__name__
__module____qualname__r   r   r   r   r   r   r
      s   r
   c                   @   sl   e 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d Z
dd Zdd Zdd Zdd ZdS )	TestRaisec              
   C   sJ   z W n4 t y: } z| dt| W Y d }~nd }~0 0 | d d S )NzNo active exceptionNo exception raised)RuntimeErrorassertInstrfailr   er   r   r   test_invalid_reraise   s
    &zTestRaise.test_invalid_reraisec              
   C   sz   z:z
t  W n* t y6 } z|} W Y d }~n
d }~0 0 W n0 t yj } z| || W Y d }~nd }~0 0 | d d S Nr   )
IndexErrorassertIsr   )r   r   Zexc1Zexc2r   r   r   test_reraise#   s    
"zTestRaise.test_reraisec                 C   s   dd }|  t| d S )Nc                   S   s@   zt dW n.   ztdW n ty2   Y n0  Y n0 d S NfooZcaught	TypeErrorKeyErrorr   r   r   r   reraise0   s    z.TestRaise.test_except_reraise.<locals>.reraiseassertRaisesr'   r   r)   r   r   r   test_except_reraise/   s    	zTestRaise.test_except_reraisec                 C   s   dd }|  t| d S )Nc                	   S   s2   zt dW n    ztdW  n 0 Y n0 d S r$   r&   r   r   r   r   r)   <   s    
z/TestRaise.test_finally_reraise.<locals>.reraise)r+   r(   r,   r   r   r   test_finally_reraise;   s    zTestRaise.test_finally_reraisec                    s$   dd   fdd}|  t| d S )Nc                    S   s    d S r   r   r   r   r   r   nested_reraiseG   s    z5TestRaise.test_nested_reraise.<locals>.nested_reraisec                      s$   zt dW n      Y n0 d S Nr%   r'   r   r/   r   r   r)   I   s    z.TestRaise.test_nested_reraise.<locals>.reraiser*   r,   r   r2   r   test_nested_reraiseF   s    zTestRaise.test_nested_reraisec              
   C   sj   z&zt dW n   t d Y n0 W n> tyd } z&| |jt  | |j W Y d }~n
d }~0 0 d S r0   )r'   
ValueErrorassertIsInstance__context__assertIsNone	__cause__r   r   r   r   test_raise_from_NoneP   s    zTestRaise.test_raise_from_Nonec                 C   s   dd }|  t| d S )Nc                   S   sF   zt dW n4   t  W d    n1 s00    Y   Y n0 d S r0   )r'   r
   r   r   r   r   r)   [   s    z-TestRaise.test_with_reraise1.<locals>.reraiser*   r,   r   r   r   test_with_reraise1Z   s    zTestRaise.test_with_reraise1c                 C   s   dd }|  t| d S )Nc                   S   sN   zt dW n<   t  tdW d    n1 s80    Y   Y n0 d S r$   )r'   r
   r(   r   r   r   r   r)   e   s    &z-TestRaise.test_with_reraise2.<locals>.reraiser*   r,   r   r   r   test_with_reraise2d   s    zTestRaise.test_with_reraise2c                    sB   dd }|  t   | t fdd | t fdd d S )Nc                   s   s&   zt dW n   dV   Y n0 d S )Nr%      r1   r   r   r   r   r)   o   s
    z-TestRaise.test_yield_reraise.<locals>.reraisec                      s   t  S r   nextr   gr   r   <lambda>w       z.TestRaise.test_yield_reraise.<locals>.<lambda>c                      s   t  S r   r=   r   r?   r   r   rA   x   rB   )r>   r+   r'   StopIterationr,   r   r?   r   test_yield_reraisen   s
    zTestRaise.test_yield_reraisec                 C   s:   G dd dt }z|W n ty*   Y n0 | d d S )Nc                   @   s   e Zd Zdd ZdS )z7TestRaise.test_erroneous_exception.<locals>.MyExceptionc                 S   s
   t  d S r   r   r   r   r   r   __init__|   s    z@TestRaise.test_erroneous_exception.<locals>.MyException.__init__Nr   r   r   rF   r   r   r   r   MyException{   s   rH   r   )	Exceptionr   r   r   rH   r   r   r   test_erroneous_exceptionz   s    z"TestRaise.test_erroneous_exceptionc                 C   sB   G dd dt }| t |W d    n1 s40    Y  d S )Nc                   @   s   e Zd Zdd ZdS )z@TestRaise.test_new_returns_invalid_instance.<locals>.MyExceptionc                 W   s   t  S r   )object)clsargsr   r   r   __new__   s    zHTestRaise.test_new_returns_invalid_instance.<locals>.MyException.__new__N)r   r   r   rO   r   r   r   r   rH      s   rH   )rI   r+   r'   rJ   r   r   r   !test_new_returns_invalid_instance   s    z+TestRaise.test_new_returns_invalid_instancec              
   C   sJ   zdsJ dW n4 t yD } z| t|d W Y d }~n
d }~0 0 d S )NF)   z(3,))AssertionErrorassertEqualr   r   r   r   r   test_assert_with_tuple_arg   s    z$TestRaise.test_assert_with_tuple_argN)r   r   r   r   r#   r-   r.   r3   r9   r:   r;   rD   rK   rP   rT   r   r   r   r   r      s   



	r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )	TestCausec              
   C   s   zrz&zt W n ty$   td Y n0 W nF tyn } z.| |j | |j d|_|W Y d }~n
d }~0 0 W n( ty } z|}W Y d }~n
d }~0 0 | |j | |j | |j	t  d S )NF)
r'   rI   r4   r7   r8   Z
assertTrue__suppress_context__ZassertFalser5   r6   )r   excr   r   r   r   testCauseSyntax   s     zTestCause.testCauseSyntaxc              
   C   sN   z
t dW n4 ty> } z| dt| W Y d }~nd }~0 0 | d d S )N   zexception causer   )r!   r'   r   r   r   r   r   r   r   test_invalid_cause   s
    
&zTestCause.test_invalid_causec              
   C   sL   z
t tW n2 t y< } z| |jt W Y d }~nd }~0 0 | d d S r    )r!   r(   r5   r8   r   r   r   r   r   test_class_cause   s
    
$zTestCause.test_class_causec              
   C   sR   t  }z
t|W n2 tyB } z| |j| W Y d }~nd }~0 0 | d d S r    )r(   r!   r"   r8   r   )r   causer   r   r   r   test_instance_cause   s    
$zTestCause.test_instance_causec                 C   s<   G dd dt }z
t|W n ty,   Y n0 | d d S )Nc                   @   s   e Zd Zdd ZdS )z3TestCause.test_erroneous_cause.<locals>.MyExceptionc                 S   s
   t  d S r   rE   r   r   r   r   rF      s    z<TestCause.test_erroneous_cause.<locals>.MyException.__init__NrG   r   r   r   r   rH      s   rH   r   )rI   r!   r   r   rJ   r   r   r   test_erroneous_cause   s    
zTestCause.test_erroneous_causeN)r   r   r   rX   rZ   r[   r]   r^   r   r   r   r   rU      s
   	rU   c                   @   s   e Zd Zdd Zdd ZdS )TestTracebackc              
   C   sN   z
t  W n4 t y> } z| |jtj W Y d }~nd }~0 0 | d d S r    )r!   r5   __traceback__typesTracebackTyper   r   r   r   r   test_sets_traceback   s
    
&z!TestTraceback.test_sets_tracebackc              
   C   sh   t  }zt |W nB tyX } z*| |j| | |jj| W Y d }~nd }~0 0 | d d S r    )r	   r!   with_tracebackassertNotEqualr`   rS   tb_nextr   )r   tbr   r   r   r   test_accepts_traceback   s    &z$TestTraceback.test_accepts_tracebackN)r   r   r   rc   rh   r   r   r   r   r_      s   r_   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestTracebackTypec                 C   s   t d S r   )r4   r   r   r   r   raiser   s    zTestTracebackType.raiserc              
   C   s|  z|    W n* ty6 } z|j}W Y d }~n
d }~0 0 | |jtj | |jt	
  | |jt | |jt | |jjd  | t |`W d    n1 s0    Y  | t d|_W d    n1 s0    Y  | t ||_W d    n1 s0    Y  | t ||j_W d    n1 s@0    Y  d |_| |jd  t }||_| |j| d S )NZasdf)rj   rI   r`   r5   rf   ra   rb   r"   tb_framer   	_getframetb_lastiint	tb_linenor+   r'   r4   r	   )r   rW   rg   Znew_tbr   r   r   
test_attrs   s,    "$&(zTestTracebackType.test_attrsc                 C   sd  t  }t }t||dd}| |j| | |j| | |jd | |j	d td |dd}| |jd  | 
t  td|dd W d    n1 s0    Y  | 
t  t|ddd W d    n1 s0    Y  | 
t  t||dd W d    n1 s0    Y  | 
t  t||dd W d    n1 sV0    Y  d S )Nr<   r   noznuh-uh)r	   r   rl   ra   rb   rS   rf   rk   rm   ro   r+   r'   )r   Zother_tbframerg   r   r   r   test_constructor  s"    ..0z"TestTracebackType.test_constructorN)r   r   r   rj   rp   rs   r   r   r   r   ri      s   #ri   c                   @   sl   e 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d Z
dd Zdd Zdd Zdd ZdS )TestContextc              
   C   sh   t  }z z|W n   t Y n0 W n2 tyX } z| |j| W Y d }~nd }~0 0 | d d S r    )r!   r   rS   r6   r   r   contextr   r   r   r   $test_instance_context_instance_raise*  s    $z0TestContext.test_instance_context_instance_raisec              
   C   st   t }z z|W n   t Y n0 W n@ tyd } z(| |j| | |j| W Y d }~nd }~0 0 | d d S r    r!   r   re   r6   r5   r   ru   r   r   r   !test_class_context_instance_raise6  s    $z-TestContext.test_class_context_instance_raisec              
   C   sr   t }zz|W n   tY n0 W n@ tyb } z(| |j| | |j| W Y d }~nd }~0 0 | d d S r    rx   ru   r   r   r   test_class_context_class_raiseC  s    $z*TestContext.test_class_context_class_raisec              
   C   sd   z"zdd  W n   t Y n0 W n2 t yT } z| |jt W Y d }~nd }~0 0 | d d S Nr<   r   r   r   r5   r6   ZeroDivisionErrorr   r   r   r   r   test_c_exception_contextP  s    $z$TestContext.test_c_exception_contextc              
   C   sd   z"zdd  W n   t  Y n0 W n2 tyT } z| |jt W Y d }~nd }~0 0 | d d S r{   )xyzzy	NameErrorr5   r6   r}   r   r   r   r   r   test_c_exception_raise[  s    $z"TestContext.test_c_exception_raisec              
   C   sT   zzW t nt 0 W n0 t yD } z| |j W Y d }~nd }~0 0 | d d S r    )r   r7   r6   r   r   r   r   r   test_noraise_finallyf  s    "z TestContext.test_noraise_finallyc              
   C   s^   zzdd  W t nt 0 W n2 t yN } z| |jt W Y d }~nd }~0 0 | d d S r{   r|   r   r   r   r   test_raise_finallyq  s    
$zTestContext.test_raise_finallyc              
   C   s   G dd d}z2|  dd  W d    n1 s40    Y  W n2 t yr } z| |jt W Y d }~nd }~0 0 | d d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z8TestContext.test_context_manager.<locals>.ContextManagerc                 S   s   d S r   r   r   r   r   r   r   ~  s    zBTestContext.test_context_manager.<locals>.ContextManager.__enter__c                 S   s   t  d S r   )r   )r   tvrg   r   r   r   r     s    zATestContext.test_context_manager.<locals>.ContextManager.__exit__Nr   r   r   r   r   ContextManager}  s   r   r<   r   r   )r   r5   r6   r}   r   )r   r   r   r   r   r   test_context_manager|  s    *$z TestContext.test_context_managerc              
   C   sp   z:zdd  W n( t y6 } z|W Y d }~n
d }~0 0 W n0 t yj } z| |j W Y d }~n
d }~0 0 d S Nr<   r   )r}   r7   r6   r   r   r   r   test_cycle_broken  s    zTestContext.test_cycle_brokenc                 C   s   zVzt  W nH tyR } z0zdd  W n ty<   |Y n0 W Y d }~n
d }~0 0 W n2 ty } z| |jj W Y d }~n
d }~0 0 d S r   )r   r   r}   r7   r6   )r   ar   r   r   r   test_reraise_cycle_broken  s    $z%TestContext.test_reraise_cycle_brokenc                    s    dd   fdd}|  d S )Nc                   s   s   z
dV  W n0 d S )Nr<   r   r   r   r   r   gen  s    z"TestContext.test_3118.<locals>.genc               
      sf     } t |  z ztW n   ~ tY n0 W n2 ty` } z|jt W Y d }~n
d }~0 0 d S r   )r>   r4   r(   rI   r5   r6   )r@   r   r   r   r   r   f  s    z TestContext.test_3118.<locals>.fr   )r   r   r   r   r   	test_3118  s    zTestContext.test_3118c                    sj   dd l G dd d  fddt &}  t|jj W d    n1 s\0    Y  d S )Nr   c                   @   s   e Zd Zdd ZdS )z TestContext.test_3611.<locals>.Cc                 S   s    zdd  W n    Y n0 d S r   r   r   r   r   r   __del__  s    z(TestContext.test_3611.<locals>.C.__del__N)r   r   r   r   r   r   r   r   C  s   r   c               
      s|     } z0z
j  W n  ty2   ~   tY n0 W n@ tyv } z(|jd  |jt W Y d }~n
d }~0 0 d S r   )xAttributeErrorZcollectr'   rI   re   r6   r5   )r   r   r   r   gcr   r   r   r     s    
z TestContext.test_3611.<locals>.f)r   r   Zcatch_unraisable_exceptionrS   r}   Z
unraisabler   )r   cmr   r   r   	test_3611  s    
zTestContext.test_3611N)r   r   r   rw   ry   rz   r~   r   r   r   r   r   r   r   r   r   r   r   r   rt   )  s   
rt   c                   @   s   e Zd Zdd Zdd ZdS )TestRemovedFunctionalityc                 C   s.   zt tfW n ty   Y n0 | d d S r    )r!   r(   r'   r   r   r   r   r   test_tuples  s
    z$TestRemovedFunctionality.test_tuplesc                 C   s*   zdW n t y   Y n0 | d d S )Nr%   r   )r'   r   r   r   r   r   test_strings  s
    z%TestRemovedFunctionality.test_stringsN)r   r   r   r   r   r   r   r   r   r     s   r   __main__)__doc__testr   r   ra   Zunittestr	   r
   ZTestCaser   rU   r_   ri   rt   r   r   mainr   r   r   r   <module>   s   };B /