
    <e5                     `   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                     dS dS )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    &/usr/lib/python3.11/test/test_raise.pyget_tbr
      sF    ii   s    
+&++c                       e Zd Zd Zd ZdS )Contextc                     | S r    selfs    r	   	__enter__zContext.__enter__   s        c                     dS )NTr   )r   exc_type	exc_valueexc_tbs       r	   __exit__zContext.__exit__   s    tr   N__name__
__module____qualname__r   r   r   r   r	   r   r      s2              r   r   c                   V    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S )	TestRaisec                 |    	  # t          $ r.}|                     dt          |                     Y d }~d S d }~ww xY w)NNo exception raisedzNo active exception)failRuntimeErrorassertInstrr   r   s     r	   test_invalid_reraisezTestRaise.test_invalid_reraise   sV    	- 	9 	9 	9MM/Q888888888	9s    
;#6;c                     	 	 t                      # t           $ r}|} d }~ww xY w# t           $ r!}|                     ||           Y d }~d S d }~ww xY wr   )
IndexErrorr    assertIs)r   r   exc1exc2s       r	   test_reraisezTestRaise.test_reraise#   s    		- ll"     	& 	& 	&MM$%%%%%%%%%	&s$    
##& 
AAAc                 B    d }|                      t          |           d S )Nc                  n    	 t          d          #  	 t          d          # t          $ r Y nw xY w xY wNfoocaught	TypeErrorKeyErrorr   r   r	   reraisez.TestRaise.test_except_reraise.<locals>.reraise0   sT    &&&"8,,,   Ds    4#
0404assertRaisesr2   r   r4   s     r	   test_except_reraisezTestRaise.test_except_reraise/   s/    	 	 	 	)W-----r   c                 B    d }|                      t          |           d S )Nc                  V    	 t          d          #  	 t          d          #  xY wxY wr.   r1   r   r   r	   r4   z/TestRaise.test_finally_reraise.<locals>.reraise<   s;    &&&"8,,,EEEs    (#%()r6   r3   r7   s     r	   test_finally_reraisezTestRaise.test_finally_reraise;   s/    	 	 	 	(G,,,,,r   c                 N    d fd}|                      t          |           d S )Nc                        r   r   r   r   r	   nested_reraisez5TestRaise.test_nested_reraise.<locals>.nested_reraiseG   s    r   c                  H    	 t          d          #                 Y d S xY wNr/   r2   )r>   s   r	   r4   z.TestRaise.test_nested_reraise.<locals>.reraiseI   s6    !&&&!      s    !r5   )r   r4   r>   s     @r	   test_nested_reraisezTestRaise.test_nested_reraiseF   sI    	 	 		! 	! 	! 	! 	!
 	)W-----r   c                     	 	 t          d          #  t                      d xY w# t          $ rE}|                     |j        t                      |                     |j                   Y d }~d S d }~ww xY wr@   )r2   
ValueErrorassertIsInstance__context__assertIsNone	__cause__r$   s     r	   test_raise_from_NonezTestRaise.test_raise_from_NoneP   s    	+-&&&- ll, 	+ 	+ 	+!!!-;;;ak*********	+s    #& 
A5:A00A5c                 B    d }|                      t          |           d S )Nc                  |    	 t          d          #  t                      5  	 d d d            n# 1 swxY w Y    xY wr@   )r2   r   r   r   r	   r4   z-TestRaise.test_with_reraise1.<locals>.reraise[   s    &&&YY                s     ;/;3	;3	;r5   r7   s     r	   test_with_reraise1zTestRaise.test_with_reraise1Z   /    	 	 	 	)W-----r   c                 B    d }|                      t          |           d S )Nc                      	 t          d          #  t                      5  t          d          # 1 swxY w Y    xY wr.   )r2   r   r3   r   r   r	   r4   z-TestRaise.test_with_reraise2.<locals>.reraisee   sk    &&&YY - -"8,,,- - - - - - - -s    =15	=5	=r5   r7   s     r	   test_with_reraise2zTestRaise.test_with_reraise2d   rM   r   c                     d } |            t                     |                     t          fd           |                     t          fd           d S )Nc               3   :   K   	 t          d          #  dV   xY w)Nr/      rA   r   r   r	   r4   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!WW r   c                  "    t                     S r   rU   rW   s   r	   rY   z.TestRaise.test_yield_reraise.<locals>.<lambda>x   s    a r   )rV   r6   r2   StopIteration)r   r4   rX   s     @r	   test_yield_reraisezTestRaise.test_yield_reraisen   sh    	 	 	 GIIQ)____555-99999r   c                 P     G d dt                     }	 |# t          $ r Y d S w xY w)Nc                       e Zd Zd ZdS )7TestRaise.test_erroneous_exception.<locals>.MyExceptionc                     t                      r   r!   r   s    r	   __init__z@TestRaise.test_erroneous_exception.<locals>.MyException.__init__|       "nn$r   Nr   r   r   rb   r   r   r	   MyExceptionr_   {   #        % % % % %r   re   )	Exceptionr    r!   r   re   s     r	   test_erroneous_exceptionz"TestRaise.test_erroneous_exceptionz   sY    	% 	% 	% 	% 	%) 	% 	% 	%	- 	 	 	DD	s    
%%c                 |     G d dt                     }|                     t                    5  |# 1 swxY w Y   d S )Nc                       e Zd Zd ZdS )@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    xxr   N)r   r   r   rq   r   r   r	   re   rl      s#                 r   re   )rg   r6   r2   rh   s     r	   !test_new_returns_invalid_instancez+TestRaise.test_new_returns_invalid_instance   s    	  	  	  	  	 ) 	  	  	  y)) 	 		 	 	 	 	 	 	 	 	 	s   155c                 |    d S # t           $ r.}|                     t          |          d           Y d }~d S d }~ww xY w)Nz(3,))AssertionErrorassertEqualr#   r$   s     r	   test_assert_with_tuple_argz$TestRaise.test_assert_with_tuple_arg   sY    	- 	- 	- 	- 	-SVVV,,,,,,,,,	-s   
;#6;N)r   r   r   r%   r+   r8   r;   rB   rI   rL   rP   r\   ri   rr   rv   r   r   r	   r   r      s        - - -
- 
- 
-
. 
. 
.	- 	- 	-. . .+ + +. . .. . .
: 
: 
:
- 
- 
-  - - - - -r   r   c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )	TestCausec                    	 	 	 t           # t          $ r	 t          d w xY w# t          $ rB}|                     |j                   |                     |j                   d|_        |d }~ww xY w# t          $ r}|}Y d }~nd }~ww xY w|                     |j                   |                     |j                   |                     |j	        t                      d S )NF)
r2   rg   rD   rG   rH   
assertTrue__suppress_context__assertFalserE   rF   )r   excr   s      r	   testCauseSyntaxzTestCause.testCauseSyntax   s   		/#O  / / /$$./   !!#-000 8999+0(		
  	 	 	AAAAAA	 	!+&&&/000amY77777s4    ! 
A-=A((A--A0 0
B:BBc                     	 t           d# t          $ r.}|                     dt	          |                     Y d }~d S d }~ww xY w)N   r   zexception cause)r'   r    r2   r"   r#   r$   s     r	   test_invalid_causezTestCause.test_invalid_cause   s[    	-!# 	5 	5 	5MM+SVV444444444	5s   
 
A#=Ac                     	 t           t          # t           $ r+}|                     |j        t                     Y d }~d S d }~ww xY wr   )r'   r3   r    rE   rH   r$   s     r	   test_class_causezTestCause.test_class_cause   sX    	-(* 	9 	9 	9!!!+x888888888	9s    
A ?Ac                     t                      }	 t          |# t          $ r&}|                     |j        |           Y d }~d S d }~ww xY wr   )r3   r'   r    r(   rH   )r   causer   s      r	   test_instance_causezTestCause.test_instance_cause   s_    

	-%' 	. 	. 	.MM!+u---------	.s    
AAAc                 \     G d dt                     }	 t          |# t          $ r Y d S w xY w)Nc                       e Zd Zd ZdS )3TestCause.test_erroneous_cause.<locals>.MyExceptionc                     t                      r   ra   r   s    r	   rb   z<TestCause.test_erroneous_cause.<locals>.MyException.__init__   rc   r   Nrd   r   r   r	   re   r      rf   r   re   )rg   r'   r    r!   rh   s     r	   test_erroneous_causezTestCause.test_erroneous_cause   s[    	% 	% 	% 	% 	%) 	% 	% 	%	-+- 	 	 	DD	s    
++N)r   r   r   r~   r   r   r   r   r   r   r	   rx   rx      s_        8 8 8&- - -- - -- - -
- 
- 
- 
- 
-r   rx   c                       e Zd Zd Zd ZdS )TestTracebackc                     	 t                      # t           $ r0}|                     |j        t          j                   Y d }~d S d }~ww xY wr   )r'   r    rE   r   typesTracebackTyper$   s     r	   test_sets_tracebackz!TestTraceback.test_sets_traceback   sa    	-,, 	H 	H 	H!!!/53FGGGGGGGGG	Hs    
A
%AA
c                    t                      }	 t                                          |          # t          $ rF}|                     |j        |           |                     |j        j        |           Y d }~d S 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   s    XX	-,,--b111 	: 	: 	:444Q_4b999999999	:s   !1 
B;A<<BN)r   r   r   r   r   r   r   r	   r   r      s2        - - -- - - - -r   r   c                        e Zd Zd Zd Zd ZdS )TestTracebackTypec                     t           r   )rD   r   s    r	   raiserzTestTracebackType.raiser   s    r   c                 <   	 |                                   n# t          $ r}|j        }Y d }~nd }~ww xY w|                     |j        t
          j                   |                     |j        t          j
                               |                     |j        t                     |                     |j        t                     |                     |j        j        d            |                     t                    5  |`d d d            n# 1 swxY w Y   |                     t                    5  d|_        d d d            n# 1 swxY w Y   |                     t                     5  ||_        d d d            n# 1 swxY w Y   |                     t                     5  ||j        _        d d d            n# 1 swxY w Y   d |_        |                     |j        d            t#                      }||_        |                     |j        |           d S )Nasdf)r   rg   r   rE   r   r   r   r(   tb_framesys	_getframetb_lastiint	tb_linenor6   r2   rD   r
   )r   r}   r   new_tbs       r	   
test_attrszTestTracebackType.test_attrs   s   	#KKMMMM 	# 	# 	#"BBBBBB	# 	bj%*=>>>bk3=??333bk3///blC000bj($/// y)) 	 	
	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 y)) 	  	 BJ	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  z** 	 	BJ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 z** 	$ 	$!#BJ	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 
bj$'''
bj&)))))sX    
2-2 DDD4EEE-FFF&F??GGc                    t                      }t          j                    }t          j        ||dd          }|                     |j        |           |                     |j        |           |                     |j        d           |                     |j	        d           t          j        d |dd          }|                     |j        d            | 
                    t                    5  t          j        d|dd           d d d            n# 1 swxY w Y   | 
                    t                    5  t          j        |ddd           d d d            n# 1 swxY w Y   | 
                    t                    5  t          j        ||dd           d d d            n# 1 swxY w Y   | 
                    t                    5  t          j        ||dd           d d d            d S # 1 swxY w Y   d S )NrS      noznuh-uh)r
   r   r   r   r   ru   r   r   r   r   r6   r2   )r   other_tbframer   s       r	   test_constructorz"TestTracebackType.test_constructor  s   88 5!Q77X...e,,,a(((q))) ua33T***y)) 	3 	3eQ222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 y)) 	6 	6$1555	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 y)) 	: 	:%q999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: y)) 	> 	>%H===	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	> 	>sH   1DDD:EE"%E"F''F+.F+G11G58G5N)r   r   r   r   r   r   r   r   r	   r   r      sB          !* !* !*F> > > > >r   r   c                   \    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dS )TestContextc                     t                      }	 	 |#  t                      xY w# t          $ r&}|                     |j        |           Y d }~d S d }~ww xY wr   )r'   r   r    r(   rF   r   contextr   s      r	   $test_instance_context_instance_raisez0TestContext.test_instance_context_instance_raise*  ss    ,,	-  ii 	2 	2 	2MM!-111111111	2s    #& 
AAAc                     t           }	 	 |#  t                      xY w# t          $ rA}|                     |j        |           |                     |j        |           Y d }~d S d }~ww xY wr   r'   r   r    assertIsNotrF   rE   r   s      r	   !test_class_context_instance_raisez-TestContext.test_class_context_instance_raise6  s    		-  ii 	: 	: 	:Q]G444!!!-999999999	:s     
A*6A%%A*c                     t           }	 	 |#  t          xY w# t          $ rA}|                     |j        |           |                     |j        |           Y d }~d S 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44!!!-999999999	:s    	 
A#6AA#c                     	 	 ddz   n#  t           xY w	 |                     d           d S # t           $ r+}|                     |j        t                     Y d }~d S d }~ww xY wNrS   r   r   r   r    rE   rF   ZeroDivisionErrorr$   s     r	   test_c_exception_contextz$TestContext.test_c_exception_contextP  s    	-!  II+,,,,,  	D 	D 	D!!!-1BCCCCCCCCC	Ds    	 - 	- 
A" AA"c                     	 	 ddz   n#  t            Y nxY w|                     d           d S # t          $ r+}|                     |j        t
                     Y d }~d S d }~ww xY wr   )xyzzyr    	NameErrorrE   rF   r   r$   s     r	   test_c_exception_raisez"TestContext.test_c_exception_raise[  s    	-! II+,,,,,  	D 	D 	D!!!-1BCCCCCCCCC	Ds    	 . 	. 
A# AA#c                     	 	 	 t           # t           xY w# t           $ r%}|                     |j                   Y d }~d S d }~ww xY wr   )r   r    rG   rF   r$   s     r	   test_noraise_finallyz TestContext.test_noraise_finallyf  sf    	-g 	- 	- 	-am,,,,,,,,,	-s     
AA  Ac                     	 	 ddz   t           # t           xY w# t           $ r+}|                     |j        t                     Y d }~d S d }~ww xY wNrS   r   r   r$   s     r	   test_raise_finallyzTestContext.test_raise_finallyq  ss    	-!g 	D 	D 	D!!!-1BCCCCCCCCC	Ds       
A A

Ac                 
    G d d          }	  |            5  ddz   d d d            n# 1 swxY w Y   |                      d           d S # t          $ r+}|                     |j        t                     Y d }~d S d }~ww xY w)Nc                       e Zd Zd Zd ZdS )8TestContext.test_context_manager.<locals>.ContextManagerc                     d S r   r   r   s    r	   r   zBTestContext.test_context_manager.<locals>.ContextManager.__enter__~  s    r   c                     t            d S r   )r   )r   tvr   s       r	   r   zATestContext.test_context_manager.<locals>.ContextManager.__exit__  s    r   Nr   r   r   r	   ContextManagerr   }  s2              r   r   rS   r   r   )r    r   rE   rF   r   )r   r   r   s      r	   test_context_managerz TestContext.test_context_manager|  s   	 	 	 	 	 	 	 	
	-!!  !              
 II+,,,,,  	D 	D 	D!!!-1BCCCCCCCCC	Ds2   
A +A /A /A 
B A==Bc                     	 	 ddz   d S # t           $ r}|d }~ww xY w# t           $ r%}|                     |j                   Y d }~d S d }~ww xY wr   )r   rG   rF   r$   s     r	   test_cycle_brokenzTestContext.test_cycle_broken  s    	-!$     	- 	- 	-am,,,,,,,,,	-s$   
 
 
AAAc                     	 	 t            d S # t          $ r"}	 ddz   n# t          $ r |w xY wY d }~d S d }~ww xY w# t          $ r*}|                     |j        j                   Y d }~d S d }~ww xY wr   )r   r   r   rG   rF   )r   ar   s      r	   test_reraise_cycle_brokenz%TestContext.test_reraise_cycle_broken  s    		9   aCCC(   G CCCCC
  	9 	9 	9am7888888888	9s5    
83*3; 8; 
A/A**A/c                    t          d          }	 |# t           $ rL 	 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        |           d S )Nr   r0   new)rg   r(   rF   )r   r   r}   raiseds       r	   test_not_lastzTestContext.test_not_last  s    I&&
	M 	 	 	)))   &&&   	 	f('22222sH    
A)-
:A):A)A
A#AA)A##A)(A)c                 0     d  fd} |             d S )Nc               3      K   	 dV  d S # w xY w)NrS   r   r   r   r	   genz"TestContext.test_3118.<locals>.gen  s"      s   
 c                                   } t          |            	 	 t          #  ~ t          xY w# t          $ r+}                    |j        t                     Y d }~d S d }~ww xY wr   )rV   rD   r3   rg   rE   rF   )rX   r   r   r   s     r	   fz TestContext.test_3118.<locals>.f  s    AGGGA#$$#"N A A A%%amZ@@@@@@@@@As   $ 
.1 
A& A!!A&r   )r   r   r   s   ` @r	   	test_3118zTestContext.test_3118  sH    	 	 	
	A 
	A 
	A 
	A 
	A 
	A 	
r   c                      dd l  G d d           fdt          j                    5 }                                   t          |j        j                   d d d            d S # 1 swxY w Y   d S )Nr   c                       e Zd Zd ZdS ) TestContext.test_3611.<locals>.Cc                     	 ddz   d S #   xY wr   r   r   s    r	   __del__z(TestContext.test_3611.<locals>.C.__del__  s     aCCCCs   	 N)r   r   r   r   r   r   r	   Cr     s#            r   r   c                  (                } 	 	 j          d S # t          $ r ~                                  t          w xY w# t          $ rF}                    |j        d                                |j        t                     Y d }~d S d }~ww xY wr   )xAttributeErrorcollectr2   rg   r   rF   rE   )r   r   r   r   gcr   s     r	   r   z TestContext.test_3611.<locals>.f  s    A
E$CCCC% $ $ $JJLLL#O	$
  E E E##AM4888%%am^DDDDDDDDDEs    '>A 
B;BB)r   r   catch_unraisable_exceptionru   r   
unraisabler   )r   cmr   r   r   s   ` @@@r	   	test_3611zTestContext.test_3611  s   				 	 	 	 	 	 	 		E 	E 	E 	E 	E 	E 	E 	E /11 	HRACCC.0FGGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs   0A..A25A2N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r	   r   r   )  s        
- 
- 
-- - -- - -	- 	- 	-	- 	- 	-	- 	- 	-	- 	- 	-- - -- - -9 9 93 3 3   ,H H H H Hr   r   c                       e Zd Zd Zd ZdS )TestRemovedFunctionalityc                 B    	 t           t          f# t          $ r Y d S w xY wr   )r'   r3   r    r2   r   s    r	   test_tuplesz$TestRemovedFunctionality.test_tuples  s4    	-x(( 	 	 	DD	s    
c                 *    	 d# t          $ r Y d S w xY wr@   )r    r2   r   s    r	   test_stringsz%TestRemovedFunctionality.test_strings  s.    	-K 	 	 	DD	s    
N)r   r   r   r   r   r   r   r	   r   r     s2        - - -- - - - -r   r   __main__)__doc__testr   r   r   unittestr
   r   TestCaser   rx   r   r   r   r   r   mainr   r   r	   <module>r      s   % $       



           y- y- y- y- y-! y- y- y-z8- 8- 8- 8- 8-! 8- 8- 8-v- - - - -H% - - -*?> ?> ?> ?> ?>) ?> ?> ?>D{H {H {H {H {H(# {H {H {H|- - - - -x0 - - -$ zHMOOOOO r   