o
    gx                     @   s`   d dl Z d dlZd dlZd dlmZ G dd de jZG dd de jZe	dkr.e 
  dS dS )    N)systemc                   @   sJ   e Zd Z	 dd Zdd Zdd ZdZdd	 Zd
d Zdd Z	dd Z
dS )ExceptionClassTestsc                 C   s   |  ttt d S N)
assertTrue
issubclass	Exceptionobjectself r   M/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_baseexception.pytest_builtins_new_style   s   z+ExceptionClassTests.test_builtins_new_stylec                 C   s,   dD ]}|  t||d|jj|f  qd S )N)args__str____repr__z%s missing %s attribute)r   hasattr	__class____name__)r
   Zinsattrr   r   r   verify_instance_interface   s   
z-ExceptionClassTests.verify_instance_interfacec              	   C   sv  t  }tj D ]}zt|tr||j W q ty    Y qw t	t
jt
jtd ddd}z|  }ztt|}W n tyP   | d|  Y nw | ||d|  || g }d}|D ]}| }|d}	||	d d  }
d	|
v r|
d	}|
|d
 d }|
d |d
  }
t |kr||
 qed|
v r|
d}|
d |d
  }
ztt|
}W n ty   | d|
  Y nw ||	k r|||f n||	kr|d d |	kr|  |d d |	ks| t||d d
 d|j|d d
 jf  z| |  W n
 ty   Y nw | |
| ||
 |}|	}qeW |  n|  w | t|dd|  d S )Nr   zexception_hierarchy.txtzutf-8)encodingzbase class %s not a built-inz%s not found-   (   [z%s not a built-in exceptionz%s is not a subclass of %sz%s not accounted for) setbuiltins__dict__valuesr   BaseExceptionaddr   	TypeErroropenospathjoinsplit__file__readlinerstripgetattrAttributeErrorfailZassertIndiscardrindexindexplatform_systemappendpopr   r   closeassertEquallen)r
   Zexc_setobject_Zinheritance_treeZsuperclass_namelast_excZsuperclassesZ
last_depthZexc_lineZdepthZexc_nameZparen_indexZplatform_nameZleft_bracketexcr   r   r   test_inheritance   s   







#z$ExceptionClassTests.test_inheritance)lengthr   strreprc              	   C   s6   t | j|D ]\}\}}| ||d|||f  qd S )Nz%s: %s != %s)zipinterface_testsr6   )r
   resultsZ	test_nameZgivenZexpectedr   r   r   interface_test_driverU   s
   
z)ExceptionClassTests.interface_test_driverc                 C   sZ   d}t |}t|jdg|jd |gt|t|gt|d|jj|f gf}| | d S )Nspamr   r   z%s(%r))r   r7   r   r=   r>   r   r   rB   )r
   argr:   rA   r   r   r   test_interface_single_argZ   s   z-ExceptionClassTests.test_interface_single_argc                 C   sd   d}t t|}t| }t|j|g|j|gt|t|gt||jjt|j gf}| 	| d S )N   )
tupleranger   r7   r   r=   r>   r   r   rB   )r
   Z	arg_countr   r:   rA   r   r   r   test_interface_multi_argc   s   z,ExceptionClassTests.test_interface_multi_argc                 C   sJ   t  }t|jdg|jt gt|dgt||jjd gf}| | d S )Nr    z())	r   r7   r   rG   r=   r>   r   r   rB   )r
   r:   rA   r   r   r   test_interface_no_argm   s   
z)ExceptionClassTests.test_interface_no_argN)r   
__module____qualname__r   r   r;   r@   rB   rE   rI   rK   r   r   r   r   r      s    >	
r   c                   @   sF   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S )
UsageTestsc                 C   s   	 z| t y   Y d S w )Nz!TypeError expected for raising %s)r#   r.   typer
   r8   r   r   r   raise_failsy   s   zUsageTests.raise_failsc                 C   s   	 zzt  |y   Y nw W n ty   Y n t y)   | dt|  Y nw zzt  |fy9   Y W d S w  tyC   Y d S  t yU   | dt|  Y d S w )Nz#TypeError expected when catching %sz;TypeError expected when catching %s as specified in a tuple)r   r#   r.   rO   rP   r   r   r   catch_fails   s4   zUsageTests.catch_failsc                 C   *   G dd dt }| | | |  d S )Nc                   @      e Zd ZdS )zDUsageTests.test_raise_new_style_non_exception.<locals>.NewStyleClassNr   rL   rM   r   r   r   r   NewStyleClass       rV   )r   rQ   )r
   rV   r   r   r   "test_raise_new_style_non_exception   s   
z-UsageTests.test_raise_new_style_non_exceptionc                 C      |  d d S NrC   )rQ   r	   r   r   r   test_raise_string      zUsageTests.test_raise_stringc                 C   rS   )Nc                   @   rT   )zAUsageTests.test_catch_non_BaseException.<locals>.NonBaseExceptionNrU   r   r   r   r   NonBaseException   rW   r]   )r   rR   )r
   r]   r   r   r   test_catch_non_BaseException   s   
z'UsageTests.test_catch_non_BaseExceptionc                 C   s   |  t  d S r   )rR   r!   r	   r   r   r   !test_catch_BaseException_instance   s   z,UsageTests.test_catch_BaseException_instancec                 C   rY   rZ   )rR   r	   r   r   r   test_catch_string   r\   zUsageTests.test_catch_stringN)
r   rL   rM   rQ   rR   rX   r[   r^   r_   r`   r   r   r   r   rN   u   s    
rN   __main__)Zunittestr   r%   platformr   r2   ZTestCaser   rN   r   mainr   r   r   r   <module>   s    nB