o
    HXh5                     @   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r_e  dS dS )zTests for the raise statement.    )supportNc               
   C   s2   zt   t y }  z	| jW  Y d } ~ S d } ~ ww N)OSError__traceback__)e r   9/opt/python-3.10.19/usr/lib/python3.10/test/test_raise.pyget_tb   s   r	   c                   @      e Zd Zdd Zdd ZdS )Contextc                 C   s   | S r   r   selfr   r   r   	__enter__      zContext.__enter__c                 C   s   dS )NTr   )r   exc_type	exc_valueexc_tbr   r   r   __exit__   r   zContext.__exit__N__name__
__module____qualname__r   r   r   r   r   r   r          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   s:   z  t y } z| dt| W Y d }~d S d }~ww )NzNo active exception)RuntimeErrorassertInstrfailr   r   r   r   r   test_invalid_reraise   s   zTestRaise.test_invalid_reraisec              
   C   sZ   zzt   t y } z|} d }~ww  t y, } z| || W Y d }~d S d }~ww r   )
IndexErrorassertIsr   )r   r   Zexc1Zexc2r   r   r   test_reraise#   s   zTestRaise.test_reraisec                 C      dd }|  t| d S )Nc                   S   s,   zt d   ztd ty   Y  w Nfoo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   r#   )Nc                	   S   s   zt d   ztd 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    r   r   r   r   r   r   nested_reraiseG   s   z5TestRaise.test_nested_reraise.<locals>.nested_reraisec                      s   zt d      Y d S Nr%   r(   r   r0   r   r   r*   I   s   z.TestRaise.test_nested_reraise.<locals>.reraiser+   r-   r   r3   r   test_nested_reraiseF   s   zTestRaise.test_nested_reraisec              
   C   sZ   zzt d   t d  ty, } z| |jt  | |j W Y d }~d S d }~ww r1   )r(   
ValueErrorassertIsInstance__context__assertIsNone	__cause__r   r   r   r   test_raise_from_NoneP   s   zTestRaise.test_raise_from_Nonec                 C   r#   )Nc                   S   s8   zt d   t  W d     1 sw   Y   r1   )r(   r   r   r   r   r   r*   [   s   
z-TestRaise.test_with_reraise1.<locals>.reraiser+   r-   r   r   r   test_with_reraise1Z      zTestRaise.test_with_reraise1c                 C   r#   )Nc                   S   s2   zt d   t  td1 sw   Y   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   r<   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   dV   )Nr%      r2   r   r   r   r   r*   o   s   z-TestRaise.test_yield_reraise.<locals>.reraisec                         t  S r   nextr   gr   r   <lambda>w       z.TestRaise.test_yield_reraise.<locals>.<lambda>c                      r?   r   r@   r   rB   r   r   rD   x   rE   )rA   r,   r(   StopIterationr-   r   rB   r   test_yield_reraisen   s
   zTestRaise.test_yield_reraisec                 C   s*   G dd dt }z| ty   Y d S w )Nc                   @      e Zd Zdd ZdS )z7TestRaise.test_erroneous_exception.<locals>.MyExceptionc                 S      t  r   r   r   r   r   r   __init__|      z@TestRaise.test_erroneous_exception.<locals>.MyException.__init__Nr   r   r   rK   r   r   r   r   MyException{       rN   )	Exceptionr   r   r   rN   r   r   r   test_erroneous_exceptionz   s   z"TestRaise.test_erroneous_exceptionc                 C   s4   G dd dt }| t |1 sw   Y  d S )Nc                   @   rH   )z@TestRaise.test_new_returns_invalid_instance.<locals>.MyExceptionc                 W   s   t  S r   )object)clsargsr   r   r   __new__   rL   zHTestRaise.test_new_returns_invalid_instance.<locals>.MyException.__new__N)r   r   r   rV   r   r   r   r   rN      rO   rN   )rP   r,   r(   rQ   r   r   r   !test_new_returns_invalid_instance   s   z+TestRaise.test_new_returns_invalid_instancec              
   C   s>   zW d S  t y } z| t|d W Y d }~d S d }~ww )Nz(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/   r4   r:   r;   r=   rG   rR   rW   rZ   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   z+zzt  ty   td w  ty+ } z| |j | |j d|_|d }~ww  ty? } z|}W Y d }~nd }~ww | |j | |j | |j	t  d S )NF)
r(   rP   r5   r8   r9   Z
assertTrue__suppress_context__ZassertFalser6   r7   )r   excr   r   r   r   testCauseSyntax   s*   zTestCause.testCauseSyntaxc              
   C   s>   zt d ty } z| dt| W Y d }~d S d }~ww )N   zexception cause)r    r(   r   r   r   r   r   r   r   test_invalid_cause      zTestCause.test_invalid_causec              
   C   s<   zt t t y } z| |jt W Y d }~d S d }~ww r   )r    r)   r6   r9   r   r   r   r   r   test_class_cause   s   zTestCause.test_class_causec              
   C   sB   t  }zt| ty  } z| |j| W Y d }~d S d }~ww r   )r)   r    r!   r9   r   )r   causer   r   r   r   test_instance_cause   s   zTestCause.test_instance_causec                 C   s,   G dd dt }zt| ty   Y d S w )Nc                   @   rH   )z3TestCause.test_erroneous_cause.<locals>.MyExceptionc                 S   rI   r   rJ   r   r   r   r   rK      rL   z<TestCause.test_erroneous_cause.<locals>.MyException.__init__NrM   r   r   r   r   rN      rO   rN   )rP   r    r   r   rQ   r   r   r   test_erroneous_cause   s   zTestCause.test_erroneous_causeN)r   r   r   r^   r`   rb   rd   re   r   r   r   r   r[      s    	r[   c                   @   r
   )TestTracebackc              
   C   s>   zt   t y } z| |jtj W Y d }~d S d }~ww r   )r    r6   r   typesTracebackTyper   r   r   r   r   test_sets_traceback   ra   z!TestTraceback.test_sets_tracebackc              
   C   sX   t  }zt | ty+ } z| |j| | |jj| W Y d }~d S d }~ww r   )r	   r    with_tracebackassertNotEqualr   rY   tb_nextr   )r   tbr   r   r   r   test_accepts_traceback   s   z$TestTraceback.test_accepts_tracebackN)r   r   r   ri   rn   r   r   r   r   rf      s    rf   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestTracebackTypec                 C   s   t r   )r5   r   r   r   r   raiser   r   zTestTracebackType.raiserc              
   C   sx  z|    W n ty } z	|j}W Y d }~nd }~ww | |jtj | |jt	
  | |jt | |jt | |jjd  | t
 |`W d    n1 sUw   Y  | t d|_W d    n1 smw   Y  | t ||_W d    n1 sw   Y  | t ||j_W d    n1 sw   Y  d |_| |jd  t }||_| |j| d S )NZasdf)rp   rP   r   r6   rl   rg   rh   r!   tb_framesys	_getframetb_lastiint	tb_linenor,   r(   r5   r	   )r   r]   rm   Znew_tbr   r   r   
test_attrs   s8   
zTestTracebackType.test_attrsc                 C   sb  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 sRw   Y  | 
t t|ddd W d    n1 sow   Y  | 
t t||dd W d    n1 sw   Y  | 
t t||dd W d    d S 1 sw   Y  d S )Nr>      noznuh-uh)r	   rr   rs   rg   rh   rY   rl   rq   rt   rv   r,   r(   )r   Zother_tbframerm   r   r   r   test_constructor  s*   "z"TestTracebackType.test_constructorN)r   r   r   rp   rw   r{   r   r   r   r   ro      s    #ro   c                   @   st   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d ZdS )TestContextc              
   C   sN   t  }z	z|   t  ty& } z| |j| W Y d }~d S d }~ww r   )r    r   r!   r7   r   r   contextr   r   r   r   $test_instance_context_instance_raise*  s   z0TestContext.test_instance_context_instance_raisec              
   C   sZ   t }z	z|   t  ty, } z| |j| | |j| W Y d }~d S d }~ww r   r    r   ZassertIsNotr7   r6   r   r}   r   r   r   !test_class_context_instance_raise6  s   z-TestContext.test_class_context_instance_raisec              
   C   sX   t }zz|   t ty+ } z| |j| | |j| W Y d }~d S d }~ww r   r   r}   r   r   r   test_class_context_class_raiseC  s   z*TestContext.test_class_context_class_raisec              
   C   s`   zzdd  W n   t W n t y( } z| |jt W Y d }~d S d }~ww | d d S Nr>   r   No exception raisedr   r6   r7   ZeroDivisionErrorr   r   r   r   r   test_c_exception_contextP  s   z$TestContext.test_c_exception_contextc              
   C   sb   zzdd  W n   t  Y W n ty) } z| |jt W Y d }~d S d }~ww | d d S r   )xyzzy	NameErrorr6   r7   r   r   r   r   r   r   test_c_exception_raise[  s   z"TestContext.test_c_exception_raisec              
   C   s@   zzW t t  t y } z| |j W Y d }~d S d }~ww r   )r   r8   r7   r   r   r   r   r   test_noraise_finallyf  s   z TestContext.test_noraise_finallyc              
   C   sJ   z
zdd  W t t  t y$ } z| |jt W Y d }~d S d }~ww Nr>   r   r   r   r   r   r   test_raise_finallyq  s   
zTestContext.test_raise_finallyc              
   C   s   G dd d}z|  dd  W d    n1 sw   Y  W n t y: } z| |jt W Y d }~d S d }~ww | d d S )Nc                   @   r
   )z8TestContext.test_context_manager.<locals>.ContextManagerc                 S   s   d S r   r   r   r   r   r   r   ~  r   zBTestContext.test_context_manager.<locals>.ContextManager.__enter__c                 S   s   t  d S r   )r   )r   tvrm   r   r   r   r     s   zATestContext.test_context_manager.<locals>.ContextManager.__exit__Nr   r   r   r   r   ContextManager}  r   r   r>   r   r   )r   r6   r7   r   r   )r   r   r   r   r   r   test_context_manager|  s   
z TestContext.test_context_managerc              
   C   sb   zzdd  W W d S  t y } z|d }~ww  t y0 } z| |j W Y d }~d S d }~ww r   )r   r8   r7   r   r   r   r   test_cycle_broken  s   zTestContext.test_cycle_brokenc                 C   s   z+zt  W W d S  ty+ } zzdd  W n	 ty   |w W Y d }~W d S d }~ww  tyE } z| |jj W Y d }~d S d }~ww r   )r   r   r   r8   r7   )r   ar   r   r   r   test_reraise_cycle_broken  s    z%TestContext.test_reraise_cycle_brokenc                 C   s   t d}z| t y6   zt d t y   Y nw zt d t y3 } z|}W Y d }~nd }~ww Y nw | |j| d S )Nr~   r&   new)rP   r!   r7   )r   r~   r]   Zraisedr   r   r   test_not_last  s$   	zTestContext.test_not_lastc                    s    dd   fdd}|  d S )Nc                   s   s    zdV  W d S w )Nr>   r   r   r   r   r   gen  s   z"TestContext.test_3118.<locals>.genc               
      sV     } t |  z	zt   ~ t ty* } z|jt W Y d }~d S d }~ww r   )rA   r5   r)   rP   r6   r7   )rC   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                    sl   dd l G dd d  fddt }  t|jj W d    d S 1 s/w   Y  d S )Nr   c                   @   rH   )z TestContext.test_3611.<locals>.Cc                 S   s   zdd  W 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  rO   r   c               
      sv     } zzj  W W d S  ty   ~   tw  ty: } z|jd  |jt W Y d }~d S d }~ww r   )xAttributeErrorZcollectr(   rP   rk   r7   r6   )r   r   r   r   gcr   r   r   r     s   z TestContext.test_3611.<locals>.f)r   r   Zcatch_unraisable_exceptionrY   r   Z
unraisabler   )r   cmr   r   r   	test_3611  s   
"zTestContext.test_3611N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r|   )  s    
r|   c                   @   r
   )TestRemovedFunctionalityc                 C   s   zt tf ty   Y d S w r   )r    r)   r(   r   r   r   r   r   test_tuples  s
   z$TestRemovedFunctionality.test_tuplesc                 C   s   zd t y   Y d S w r1   )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   rr   rg   Zunittestr	   r   ZTestCaser   r[   rf   ro   r|   r   r   mainr   r   r   r   <module>   s"   };B ?