
    daf5                     p   d Z ddlmZ ddlZddlZddlZd Z G d d      Z G d dej                        Z	 G d	 d
ej                        Z
 G d dej                        Z G d dej                        Z G d dej                        Z G d dej                        Zedk(  r ej                           yy)zTests for the raise statement.    )supportNc                  \    	 t               # t         $ r} | j                  cY d } ~ S d } ~ ww xY wN)OSError__traceback__)es    */root/Python-3.12.4/Lib/test/test_raise.pyget_tbr
      s(    i s   
 	+&++c                       e Zd Zd Zd Zy)Contextc                     | S r    selfs    r	   	__enter__zContext.__enter__   s        c                      y)NTr   )r   exc_type	exc_valueexc_tbs       r	   __exit__zContext.__exit__   s    r   N__name__
__module____qualname__r   r   r   r   r	   r   r      s    r   r   c                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)	TestRaisec                 h    	  # t        $ r%}| j                  dt        |             Y d }~y d }~ww xY w)NzNo active exception)failRuntimeErrorassertInstrr   r   s     r	   test_invalid_reraisezTestRaise.test_invalid_reraise   s0    	- 	9MM/Q88	9s    	1,1c                     	 	 t               # t         $ r}|} d }~ww xY w# t         $ r}| j                  |       Y d }~y d }~ww xY wr   )
IndexErrorr   assertIs)r   r   exc1exc2s       r	   test_reraisezTestRaise.test_reraise#   sN    		- l"   	&MM$%%	&s$   
 	! 	AAAc                 6    d }| j                  t        |       y )Nc                  Z    	 t        d      #  	 t        d      # t        $ r Y  w xY wxY wNfoocaught	TypeErrorKeyErrorr   r   r	   reraisez.TestRaise.test_except_reraise.<locals>.reraise0   s=    &&"8,, s    *	'*'*assertRaisesr1   r   r3   s     r	   test_except_reraisezTestRaise.test_except_reraise/   s    	 	)W-r   c                 6    d }| j                  t        |       y )Nc                  F    	 t        d      #  	 t        d      #  xY wxY wr-   r0   r   r   r	   r3   z/TestRaise.test_finally_reraise.<locals>.reraise<   s-    &&"8,,s      )r5   r2   r6   s     r	   test_finally_reraisezTestRaise.test_finally_reraise;   s    	 	(G,r   c                 B    d fd}| j                  t        |       y )Nc                        r   r   r   r   r	   nested_reraisez5TestRaise.test_nested_reraise.<locals>.nested_reraiseG   s    r   c                  8    	 t        d      #            Y y xY wNr.   r1   )r=   s   r	   r3   z.TestRaise.test_nested_reraise.<locals>.reraiseI   s     !&&! s    	r4   )r   r3   r=   s     @r	   test_nested_reraisezTestRaise.test_nested_reraiseF   s    		!
 	)W-r   c                     	 	 t        d      #  t               d xY w# t        $ rE}| j                  |j                  t                | j	                  |j
                         Y d }~y d }~ww xY wr?   )r1   
ValueErrorassertIsInstance__context__assertIsNone	__cause__r#   s     r	   test_raise_from_NonezTestRaise.test_raise_from_NoneP   s`    	+-&&- l, 	+!!!--;akk**	+s     	A,;A''A,c                 6    d }| j                  t        |       y )Nc                  f    	 t        d      #  t               5  	 d d d         # 1 sw Y    xY wxY wr?   )r1   r   r   r   r	   r3   z-TestRaise.test_with_reraise1.<locals>.reraise[   s6    &&Y s    0$	0-	0r4   r6   s     r	   test_with_reraise1zTestRaise.test_with_reraise1Z       	 	)W-r   c                 6    d }| j                  t        |       y )Nc                  h    	 t        d      #  t               5  t        d      # 1 sw Y    xY wxY wr-   )r1   r   r2   r   r   r	   r3   z-TestRaise.test_with_reraise2.<locals>.reraisee   s6    &&Y -"8,,-s    1%.	1r4   r6   s     r	   test_with_reraise2zTestRaise.test_with_reraise2d   rL   r   c                     d } |       t               | j                  t        fd       | j                  t        fd       y )Nc               3   6   K   	 t        d      #  d  xY ww)Nr.      r@   r   r   r	   r3   z-TestRaise.test_yield_reraise.<locals>.reraiseo   s$     &&s    c                      t               S r   nextgs   r	   <lambda>z.TestRaise.test_yield_reraise.<locals>.<lambda>w   s    T!W r   c                      t               S r   rT   rV   s   r	   rX   z.TestRaise.test_yield_reraise.<locals>.<lambda>x   s    a r   )rU   r5   r1   StopIteration)r   r3   rW   s     @r	   test_yield_reraisezTestRaise.test_yield_reraisen   s8    	 IQ)_5-9r   c                 D     G d dt               }	 |# t        $ r Y y w xY w)Nc                       e Zd Zd Zy)7TestRaise.test_erroneous_exception.<locals>.MyExceptionc                     t               r   r    r   s    r	   __init__z@TestRaise.test_erroneous_exception.<locals>.MyException.__init__|   
    "n$r   Nr   r   r   ra   r   r   r	   MyExceptionr^   {       %r   rd   )	Exceptionr   r    r   rd   s     r	   test_erroneous_exceptionz"TestRaise.test_erroneous_exceptionz   s+    	%) 	%	- 		s    	c                 h     G d dt               }| j                  t              5  |# 1 sw Y   y xY w)Nc                       e Zd Zd Zy)@TestRaise.test_new_returns_invalid_instance.<locals>.MyExceptionc                     t               S r   )object)clsargss     r	   __new__zHTestRaise.test_new_returns_invalid_instance.<locals>.MyException.__new__   s	    xr   N)r   r   r   rp   r   r   r	   rd   rk      s     r   rd   )rf   r5   r1   rg   s     r	   !test_new_returns_invalid_instancez+TestRaise.test_new_returns_invalid_instance   s4    	 ) 	  y) 		 	s   (1c                 t    	 J d       # t         $ r%}| j                  t        |      d       Y d }~y d }~ww xY w)N)   z(3,))AssertionErrorassertEqualr"   r#   s     r	   test_assert_with_tuple_argz$TestRaise.test_assert_with_tuple_arg   s8    	-$5 	-SVV,,	-   	 	727N)r   r   r   r$   r*   r7   r:   rA   rH   rK   rO   r[   rh   rq   rv   r   r   r	   r   r      s>    -
-
.	-.+..
:
--r   r   c                   *    e Zd Zd Zd Zd Zd Zd Zy)	TestCausec                    	 	 	 t         # t        $ r t        d w xY w# t        $ rD}| j                  |j                         | j                  |j                         d|_        |d }~ww xY w# t        $ r}|}Y d }~nd }~ww xY w| j                  |j                         | j                  |j                         | j                  |j                  t                y )NF)
r1   rf   rC   rF   rG   
assertTrue__suppress_context__assertFalserD   rE   )r   excr   s      r	   testCauseSyntaxzTestCause.testCauseSyntax   s    		/#O  /$$./ !!#--0 8 89+0(		
  	A	 	!++&//0ammY7s4   
  	A+?A&&A++A. .	B7A>>Bc                 t    	 t         d# t        $ r%}| j                  dt	        |             Y d }~y d }~ww xY w)N   zexception cause)r&   r   r1   r!   r"   r#   s     r	   test_invalid_causezTestCause.test_invalid_cause   s5    	-!# 	5MM+SV44	5rw   c                     	 t         t        # t         $ r*}| j                  |j                  t               Y d }~y d }~ww xY wr   )r&   r2   r   rD   rG   r#   s     r	   test_class_causezTestCause.test_class_cause   s6    	-(* 	9!!!++x88	9s    	A  ;A c                     t               }	 t        |# t        $ r&}| j                  |j                  |       Y d }~y d }~ww xY wr   )r2   r&   r   r'   rG   )r   causer   s      r	   test_instance_causezTestCause.test_instance_cause   s;    
	-%' 	.MM!++u--	.s    	A=Ac                 N     G d dt               }	 t        |# t        $ r Y y w xY w)Nc                       e Zd Zd Zy)3TestCause.test_erroneous_cause.<locals>.MyExceptionc                     t               r   r`   r   s    r	   ra   z<TestCause.test_erroneous_cause.<locals>.MyException.__init__   rb   r   Nrc   r   r   r	   rd   r      re   r   rd   )rf   r&   r   r    rg   s     r	   test_erroneous_causezTestCause.test_erroneous_cause   s-    	%) 	%	-+- 		s    	$$N)r   r   r   r   r   r   r   r   r   r   r	   ry   ry      s    8&---
-r   ry   c                       e Zd Zd Zd Zy)TestTracebackc                     	 t               # t         $ r4}| j                  |j                  t        j
                         Y d }~y d }~ww xY wr   )r&   r   rD   r   typesTracebackTyper#   s     r	   test_sets_tracebackz!TestTraceback.test_sets_traceback   s>    	-, 	H!!!//53F3FGG	Hs   
 	A	*AA	c                     t               }	 t               j                  |      # t        $ rL}| j	                  |j
                  |       | j                  |j
                  j                  |       Y d }~y d }~ww xY wr   )r
   r&   with_tracebackr   assertNotEqualr   ru   tb_next)r   tbr   s      r	   test_accepts_tracebackz$TestTraceback.test_accepts_traceback   sb    X	-,--b11 	:4Q__44b99	:s   % 	A:AA55A:N)r   r   r   r   r   r   r   r	   r   r      s    --r   r   c                       e Zd Zd Zd Zd Zy)TestTracebackTypec                     t         r   )rC   r   s    r	   raiserzTestTracebackType.raiser   s    r   c                    	 | j                          | j                  j                  t
        j                         | j                  |j                  t        j                                | j                  |j                  t               | j                  |j                  t               | j                  |j                  j                  d        | j                  t              5  |`d d d        | j                  t              5  d|_        d d d        | j                  t               5  ||_        d d d        | j                  t               5  ||j                  _        d d d        d |_        | j                  |j                  d        t#               }||_        | j                  |j                  |       y # t        $ r}|j                  }Y d }~d }~ww xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w)Nasdf)r   rf   r   rD   r   r   r   r'   tb_framesys	_getframetb_lastiint	tb_linenor5   r1   rC   r
   )r   r~   r   new_tbs       r	   
test_attrszTestTracebackType.test_attrs   s   	#KKM 	bjj%*=*=>bkk3==?3bkk3/bllC0bjj(($/ y) 	
	 y) 	 BJ	  z* 	BJ	 z* 	$!#BJJ	$ 
bjj$'
bjj&)=  	#""B	#	 		  	 	 		$ 	$sG   F: %GG)*G5H:	GGGG&)G25G>H
c                    t               }t        j                         }t        j                  ||dd      }| j                  |j                  |       | j                  |j                  |       | j                  |j                  d       | j                  |j                  d       t        j                  d |dd      }| j                  |j                  d        | j                  t              5  t        j                  d|dd       d d d        | j                  t              5  t        j                  |ddd       d d d        | j                  t              5  t        j                  ||dd       d d d        | j                  t              5  t        j                  ||dd       d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   XxY w# 1 sw Y   y xY w)NrR      noznuh-uh)r
   r   r   r   r   ru   r   r   r   r   r5   r1   )r   other_tbframer   s       r	   test_constructorz"TestTracebackType.test_constructor  s   8  5!Q7X.e,a(q)  ua3T*y) 	3eQ2	3 y) 	6$15	6 y) 	:%q9	: y) 	>%H=	> 	>	3 	3	6 	6	: 	:	> 	>s0   0F4&G GG4F= G	GG!N)r   r   r   r   r   r   r   r   r	   r   r      s    !*F>r   r   c                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)TestContextc                     t               }	 	 |#  t               xY w# t        $ r&}| j                  |j                  |       Y d }~y d }~ww xY wr   )r&   r   r   r'   rE   r   contextr   s      r	   $test_instance_context_instance_raisez0TestContext.test_instance_context_instance_raise*  sJ    ,	-  i 	2MM!--11	2s     	AAAc                     t         }	 	 |#  t               xY w# t        $ rB}| j                  |j                  |       | j                  |j                  |       Y d }~y d }~ww xY wr   r&   r   r   assertIsNotrE   rD   r   s      r	   !test_class_context_instance_raisez-TestContext.test_class_context_instance_raise6  s^    		-  i 	:Q]]G4!!!--99	:s     	A%8A  A%c                     t         }	 	 |#  t        xY w# t        $ rB}| j                  |j                  |       | j                  |j                  |       Y d }~y d }~ww xY wr   r   r   s      r	   test_class_context_class_raisez*TestContext.test_class_context_class_raiseC  s\    		- 	:Q]]G4!!!--99	:s     	A!8AA!c                     	 	 ddz   	 | j                  d       y #  t         xY w# t         $ r*}| j                  |j                  t               Y d }~y d }~ww xY wNrR   r   No exception raisedr   r   rD   rE   ZeroDivisionErrorr#   s     r	   test_c_exception_contextz$TestContext.test_c_exception_contextP  sW    	-! II+, 	D!!!--1BCC	Ds    #& 	A AAc                     	 	 ddz   | j                  d       y #  t          Y xY w# t        $ r*}| j                  |j                  t
               Y d }~y d }~ww xY wr   )xyzzyr   	NameErrorrD   rE   r   r#   s     r	   test_c_exception_raisez"TestContext.test_c_exception_raise[  sU    	-! II+, 	D!!!--1BCC	Ds    $' 	A AAc                     	 	 	 t         # t         xY w# t         $ r%}| j                  |j                         Y d }~y d }~ww xY wr   )r   r   rF   rE   r#   s     r	   test_noraise_finallyz TestContext.test_noraise_finallyf  s>    	-g 	-amm,,	-s     	A=Ac                     	 	 ddz   t         # t         xY w# t         $ r*}| j                  |j                  t               Y d }~y d }~ww xY wNrR   r   r   r#   s     r	   test_raise_finallyzTestContext.test_raise_finallyq  sG    	-!g 	D!!!--1BCC	Ds       	A AAc                      G d d      }	  |       5  ddz   d d d        | j                  d       y # 1 sw Y   xY w# t        $ r*}| j                  |j                  t               Y d }~y d }~ww xY w)Nc                       e Zd Zd Zd Zy)8TestContext.test_context_manager.<locals>.ContextManagerc                      y r   r   r   s    r	   r   zBTestContext.test_context_manager.<locals>.ContextManager.__enter__~  s    r   c                     t          y r   )r   )r   tvr   s       r	   r   zATestContext.test_context_manager.<locals>.ContextManager.__exit__  s    r   Nr   r   r   r	   ContextManagerr   }  s    r   r   rR   r   r   )r   r   rD   rE   r   )r   r   r   s      r	   test_context_managerz TestContext.test_context_manager|  sk    	 	
	-! !
 II+,  	D!!!--1BCC	Ds%   ? 3? <? 	A2 A--A2c                     	 	 ddz   y # t         $ r}|d }~ww xY w# t         $ r%}| j                  |j                         Y d }~y d }~ww xY wr   )r   rF   rE   r#   s     r	   test_cycle_brokenzTestContext.test_cycle_broken  sL    	-!$   	-amm,,	-s$   	 	 	A
AA
c                     	 	 t          y # t        $ r }	 ddz   n# t        $ r |w xY wY d }~y d }~ww xY w# t        $ r/}| j                  |j                  j                         Y d }~y d }~ww xY wr   )r   r   r   rF   rE   )r   ar   s      r	   test_reraise_cycle_brokenz%TestContext.test_reraise_cycle_broken  sp    		9 aC( G 
  	9amm7788	9s4   
 	3.&.6 36 	A.%A))A.c                     t        d      }	 |# t         $ rB 	 t        d      # t         $ r Y nw xY w	 t        d      # t         $ r}|}Y d }~nd }~ww xY wY nw xY w| j                  |j                  |       y )Nr   r/   new)rf   r'   rE   )r   r   r~   raiseds       r	   test_not_lastzTestContext.test_not_last  s    I&
	M 	)) && 	 	f(('2sF    	A$	0A0A?	AA
AAAAc                 (     d  fd} |        y )Nc               3       K   	 d y # w xY ww)NrR   r   r   r   r	   genz"TestContext.test_3118.<locals>.gen  s     s   	 c                              } t        |        	 	 t        #  ~ t        xY w# t        $ r*}j	                  |j
                  t               Y d }~y d }~ww xY wr   )rU   rC   r2   rf   rD   rE   )rW   r   r   r   s     r	   fz TestContext.test_3118.<locals>.f  sY    AGA#$$#"N A%%ammZ@@As    	%( 	A AAr   )r   r   r   s   ` @r	   	test_3118zTestContext.test_3118  s    	
	A 	
r   c                      dd l  G d d       fdt        j                         5 }          j                  t        |j
                  j                         d d d        y # 1 sw Y   y xY w)Nr   c                       e Zd Zd Zy) TestContext.test_3611.<locals>.Cc                     	 ddz   y #   xY wr   r   r   s    r	   __del__z(TestContext.test_3611.<locals>.C.__del__  s    aCs    N)r   r   r   r   r   r   r	   Cr     s    r   r   c                             } 	 	 j                    y # t        $ r ~ j                          t        w xY w# t        $ rF}j                  |j                  d        j                  |j                  t               Y d }~y d }~ww xY wr   )xAttributeErrorcollectr1   rf   r   rE   rD   )r   r   r   r   gcr   s     r	   r   z TestContext.test_3611.<locals>.f  sz    A
E$CC% $JJL#O	$
  E##AMM48%%amm^DDEs    !9< 	B<BB)r   r   catch_unraisable_exceptionru   r   
unraisabler   )r   cmr   r   r   s   ` @@@r	   	test_3611zTestContext.test_3611  s_    	 		E //1 	HRC.0F0FG	H 	H 	Hs   2A**A3N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   )  sD    
---	-	-	-	---93 ,Hr   r   c                       e Zd Zd Zd Zy)TestRemovedFunctionalityc                 :    	 t         t        f# t        $ r Y y w xY wr   )r&   r2   r   r1   r   s    r	   test_tuplesz$TestRemovedFunctionality.test_tuples  s$    	-x(( 		s    	c                 &    	 d# t        $ r Y y w xY wr?   )r   r1   r   s    r	   test_stringsz%TestRemovedFunctionality.test_strings  s    	-K 		s    	N)r   r   r   r   r   r   r   r	   r   r     s    --r   r   __main__)__doc__testr   r   r   unittestr
   r   TestCaser   ry   r   r   r   r   r   mainr   r   r	   <module>r      s    %  
   y-!! y-z8-!! 8-v-H%% -*?>)) ?>D{H(## {H|-x00 -$ zHMMO r   