
    daf                         d dl Z d dlZd dlZd dlmZ  G d de j                        Z G d de j                        Ze	dk(  r e j                          yy)    N)systemc                   D    e Zd ZdZd Zd Zd ZdZd Zd Z	d Z
d	 Zd
 Zy)ExceptionClassTestsz]Tests for anything relating to exception objects themselves (e.g.,
    inheritance hierarchy)c                 J    | j                  t        t        t                     y N)
assertTrue
issubclass	Exceptionobjectselfs    2/root/Python-3.12.4/Lib/test/test_baseexception.pytest_builtins_new_stylez+ExceptionClassTests.test_builtins_new_style   s    
9f56    c                 ~    dD ]8  }| j                  t        ||      |j                  j                  d|d       : y )N)args__str____repr__z	 missing z
 attribute)r   hasattr	__class____name__)r   insattrs      r   verify_instance_interfacez-ExceptionClassTests.verify_instance_interface   s:    3 	8DOOGC.//78	8r   c                 2   t               }t        j                  j                         D ].  }	 t	        |t
              r|j                  |j                         0 t        t        j                  j                  t        j                  j                  t              d   d      d      }	 |j                         j!                         }	 t#        t        |      }| j)                  ||d|z         |j+                  |       g }d}|D ]b  }|j!                         }|j-                  d      }	||	dz   d  }
d	|
v r@|
j/                  d	      }|
|d
z   d }|
d |d
z
   }
t1               |k7  r|j+                  |
       qd|
v r|
j/                  d      }|
d |d
z
   }
	 t#        t        |
      }||	k  r|j3                  |f       n,||	kD  r'|d   d   |	k\  r|j5                          |d   d   |	k\  r| j7                  t	        |d   d
         |j                  d|d   d
   j                         	 | j9                   |              | j)                  |
|       |j+                  |
       |}|	}e 	 |j;                          | j=                  t?        |      dd|z         y # t        $ r Y w xY w# t$        $ r | j'                  d|z         Y w xY w# t$        $ r | j'                  d|
z         Y Lw xY w# t        $ r Y w xY w# |j;                          w xY w)Nr   zexception_hierarchy.txtzutf-8)encodingzbase class %s not a built-inz%s not foundu   ─   (   [z%s not a built-in exceptionz is not a subclass of z%s not accounted for) setbuiltins__dict__valuesr	   BaseExceptionaddr   	TypeErroropenospathjoinsplit__file__readlinerstripgetattrAttributeErrorfailassertIndiscardrindexindexplatform_systemappendpopr   r   closeassertEquallen)r   exc_setobject_inheritance_treesuperclass_namelast_excsuperclasses
last_depthexc_linedepthexc_nameparen_indexplatform_nameleft_bracketexcs                  r   test_inheritancez$ExceptionClassTests.test_inheritance   s   %((//1 	Gg}5KK 0 01	  RWW]]84Q79RS ".	%.779@@BOL"8_= MM/7(?:<OOO,LJ, !##??, .#E!GH-(?"*.."5K$,[]2$>M'Q7H&(M91 (?#+>>##6L'a8HH!(H5C % ''X(>?%'&r*1-6$((* 'r*1-6
3R0@0C D03 $Q'002322359 h0)"
C!#F ""$Wq*@7*JKk   " L		8?JKL. & HII;hFGH !  ""$s   +J*L 	J- B;L K%AL *AL ,K5*L 	J*)J*-K
L KL K2.L 1K22L 5	L>L  LL L)lengthr   strreprc           
      |    t        | j                  |      D ]#  \  }\  }}| j                  |||d|d|       % y )Nz: z != )zipinterface_testsr<   )r   results	test_namegivenexpecteds        r   interface_test_driverz)ExceptionClassTests.interface_test_driverU   sF    ,/0D0Dg,N 	"(I(xUH	x/! "	"r   c                    d}t        |      }t        |j                        dg|j                  d   |gt        |      t        |      gt	        |      |j
                  j                  d|dgf}| j                  |       y )Nspamr   r   r   ))r
   r=   r   rN   rO   r   r   rW   )r   argrK   rS   s       r   test_interface_single_argz-ExceptionClassTests.test_interface_single_argZ   sr    nM1%S'9Hc#h'#YCMM$:$:C@AC 	""7+r   c                 B   d}t        t        |            }t        | }t        |j                        |g|j                  |gt        |      t        |      gt        |      |j                  j                  t        |j                        z   gf}| j                  |       y )N   )
tupleranger
   r=   r   rN   rO   r   r   rW   )r   	arg_countr   rK   rS   s        r   test_interface_multi_argz,ExceptionClassTests.test_interface_multi_argc   s    	U9%&M9-$/?S3t9%cCMM22T#((^CDF 	""7+r   c                     t               }t        |j                        dg|j                  t               gt	        |      dgt        |      |j                  j                  dz   gf}| j                  |       y )Nr    z())	r
   r=   r   r_   rN   rO   r   r   rW   )r   rK   rS   s      r   test_interface_no_argz)ExceptionClassTests.test_interface_no_argm   sc    kM1%%'':S2cCMM22T9:< 	""7+r   c                     dd l }i  G fddt              } G d dt              }t               } |        |       <   |j                         |j	                          y )Nr   c                   (     e Zd Zdef fdZ xZS )XExceptionClassTests.test_setstate_refcount_no_crash.<locals>.HashThisKeyWillClearTheDictreturnc                 @    j                          t        | 	         S r   )clearsuper__hash__)r   r   ds    r   rm   zaExceptionClassTests.test_setstate_refcount_no_crash.<locals>.HashThisKeyWillClearTheDict.__hash__{   s    	w'))r   )r   
__module____qualname__intrm   __classcell__)r   rn   s   @r   HashThisKeyWillClearTheDictrh   z   s    *# * *r   rs   c                       e Zd Zy)BExceptionClassTests.test_setstate_refcount_no_crash.<locals>.ValueNr   ro   rp    r   r   Valueru   ~       r   rx   )gcrN   r
   __setstate__collect)r   rz   rs   rx   rK   rn   s        @r   test_setstate_refcount_no_crashz3ExceptionClassTests.test_setstate_refcount_no_crashu   sW     		*# 	*	C 	k+07
%
'( 	 	

r   N)r   ro   rp   __doc__r   r   rL   rR   rW   r\   rb   re   r}   rw   r   r   r   r      s8    78<L| 8O"
,,,r   r   c                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)

UsageTestszTest usage of exceptionsc                 &    	 |# t         $ r Y yw xY w)z6Make sure that raising 'object_' triggers a TypeError.N)r(   r3   typer   r?   s     r   raise_failszUsageTests.raise_fails   s    	M 		s    	c                 *   	 	 t         # |$ r Y nw xY wn6# t        $ r Y n+t         $ r  | j                  dt        |      z         Y nw xY w	 	 t         # |f$ r Y yw xY w# t        $ r Y yt         $ r  | j                  dt        |      z         Y yw xY w)z,Catching 'object_' should raise a TypeError.z#TypeError expected when catching %sNz;TypeError expected when catching %s as specified in a tuple)r
   r(   r3   r   r   s     r   catch_failszUsageTests.catch_fails   s    	M  	 	MII;d7mKL	M		1:  	 	1II  "&w-0 1	1sT   	   	A%AAA AA AA 	B*%BBc                 p     G d dt               }| j                  |       | j                   |              y )Nc                       e Zd Zy)DUsageTests.test_raise_new_style_non_exception.<locals>.NewStyleClassNrv   rw   r   r   NewStyleClassr      ry   r   r   )r   r   )r   r   s     r   "test_raise_new_style_non_exceptionz-UsageTests.test_raise_new_style_non_exception   s,    
	F 	')r   c                 &    | j                  d       y NrY   )r   r   s    r   test_raise_stringzUsageTests.test_raise_string        r   c                 p     G d dt               }| j                  |       | j                   |              y )Nc                       e Zd Zy)AUsageTests.test_catch_non_BaseException.<locals>.NonBaseExceptionNrv   rw   r   r   NonBaseExceptionr      ry   r   r   )r   r   )r   r   s     r   test_catch_non_BaseExceptionz'UsageTests.test_catch_non_BaseException   s/    	v 	)*)+,r   c                 6    | j                  t                      y r   )r   r&   r   s    r   !test_catch_BaseException_instancez,UsageTests.test_catch_BaseException_instance   s    )r   c                 &    | j                  d       y r   )r   r   s    r   test_catch_stringzUsageTests.test_catch_string   r   r   N)r   ro   rp   r~   r   r   r   r   r   r   r   rw   r   r   r   r      s)    "G1.*!-*!r   r   __main__)unittestr#   r*   platformr   r8   TestCaser   r   r   mainrw   r   r   <module>r      sS      	 .D(++ DN?!"" ?!D zHMMO r   