o
    HXîh¶  ã                   @   sî   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ G dd„ deƒZG dd„ deƒZ	G dd„ deƒZ
G d	d
„ d
e	e
ƒZG dd„ de
e	ƒZG dd„ deƒ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rue ¡  dS dS )é    N)ÚEEXISTc                   @   ó   e Zd ZdS )Ú
SubOSErrorN©Ú__name__Ú
__module__Ú__qualname__© r	   r	   úG/opt/python-3.10.19/usr/lib/python3.10/test/test_exception_hierarchy.pyr   
   ó    r   c                       ó   e Zd Z‡ fdd„Z‡  ZS )ÚSubOSErrorWithInitc                    s   || _ tƒ  |¡ d S ©N)ÚbarÚsuperÚ__init__)ÚselfÚmessager   ©Ú	__class__r	   r
   r      s   zSubOSErrorWithInit.__init__)r   r   r   r   Ú__classcell__r	   r	   r   r
   r      ó    r   c                       r   )ÚSubOSErrorWithNewc                    s   t ƒ  | |¡}||_|S r   )r   Ú__new__Úbaz)Úclsr   r   r   r   r	   r
   r      s   zSubOSErrorWithNew.__new__)r   r   r   r   r   r	   r	   r   r
   r      r   r   c                   @   r   )ÚSubOSErrorCombinedInitFirstNr   r	   r	   r	   r
   r      r   r   c                   @   r   )ÚSubOSErrorCombinedNewFirstNr   r	   r	   r	   r
   r      r   r   c                   @   s   e Zd Zdd„ ZdS )ÚSubOSErrorWithStandaloneInitc                 C   s   d S r   r	   ©r   r	   r	   r
   r      s   z%SubOSErrorWithStandaloneInit.__init__N)r   r   r   r   r	   r	   r	   r
   r      s    r   c                   @   sH   e Zd Zdd„ Zdd„ Zdd„ ZdZdd	„ ZeeƒZd
d„ Z	dd„ Z
dS )ÚHierarchyTestc                 C   s*   |   tjd¡ |  tt¡ |  tt¡ d S )NÚOSError)ÚassertEqualr!   r   ÚassertIsÚIOErrorÚEnvironmentErrorr   r	   r	   r
   Útest_builtin_errors%   s   z!HierarchyTest.test_builtin_errorsc                 C   s@   |   tjt¡ |   tjjt¡ |   tjjt¡ |   tjt¡ d S r   )	r#   ÚsocketÚerrorr!   ÚgaierrorÚ__base__ÚherrorÚtimeoutÚTimeoutErrorr   r	   r	   r
   Útest_socket_errors*   s   z HierarchyTest.test_socket_errorsc                 C   s   |   tjt¡ d S r   )r#   Úselectr(   r!   r   r	   r	   r
   Útest_select_error0   s   zHierarchyTest.test_select_errorae  
        +-- BlockingIOError        EAGAIN, EALREADY, EWOULDBLOCK, EINPROGRESS
        +-- ChildProcessError                                          ECHILD
        +-- ConnectionError
            +-- BrokenPipeError                              EPIPE, ESHUTDOWN
            +-- ConnectionAbortedError                           ECONNABORTED
            +-- ConnectionRefusedError                           ECONNREFUSED
            +-- ConnectionResetError                               ECONNRESET
        +-- FileExistsError                                            EEXIST
        +-- FileNotFoundError                                          ENOENT
        +-- InterruptedError                                            EINTR
        +-- IsADirectoryError                                          EISDIR
        +-- NotADirectoryError                                        ENOTDIR
        +-- PermissionError                                     EACCES, EPERM
        +-- ProcessLookupError                                          ESRCH
        +-- TimeoutError                                            ETIMEDOUT
    c                 C   sd   i }|   ¡ D ])}| d¡}|sq| d¡\}}}td | ¡  d¡ƒD ]}tt|ƒ|tt|ƒ< q"q|S )Nz+- ú z, )Ú
splitlinesÚstripÚ	partitionÚfilterÚsplitÚgetattrÚbuiltinsÚerrno)ÚsÚ_mapÚlineÚexcnameÚ_ZerrnamesZerrnamer	   r	   r
   Ú	_make_mapF   s   
ÿzHierarchyTest._make_mapc                 C   s„   t tdƒ}|  t|ƒt¡ | j ¡ D ]\}}t |dƒ}|  t|ƒ|¡ qttj	ƒt| jƒ }|D ]}t |dƒ}|  t|ƒt ¡ q0d S )NúBad file descriptorzSome message)
r!   r   r#   ÚtypeÚFileExistsErrorr;   ÚitemsÚsetr9   Ú	errorcode)r   ÚeZerrcodeÚexcZ
othercodesr	   r	   r
   Útest_errno_mappingR   s   


þz HierarchyTest.test_errno_mappingc                 C   sr   d}zt |ƒ W n	 ty   Y nw |  d¡ |  tj |¡¡ zt |¡ W n
 ty1   Y d S w |  d¡ d S )NZ some_hopefully_non_existing_filez&should have raised a FileNotFoundError)ÚopenÚFileNotFoundErrorZfailZassertFalseÚosÚpathÚexistsÚunlink)r   Úfilenamer	   r	   r
   Útest_try_except`   s   ÿ
ÿzHierarchyTest.test_try_exceptN)r   r   r   r&   r.   r0   Z_pep_mapr?   r;   rH   rP   r	   r	   r	   r
   r    #   s    
r    c                   @   s>   e Zd Zdd„ Zdd„ Ze ejdkd¡dd„ ƒZ	d	d
„ Z
dS )ÚAttributesTestc                 C   s2   t jdkr|  dttƒ¡ d S |  dttƒ¡ d S )NÚntÚwinerror)rK   ÚnameZassertInÚdirr!   ZassertNotInr   r	   r	   r
   Útest_windows_errorz   s   
z!AttributesTest.test_windows_errorc                 C   sh   t tddƒ}|  |jt¡ |  |jd t¡ |  |jd¡ |  |jd¡ tjdkr2|  |j	d ¡ d S d S )NúFile already existsúfoo.txtr   rR   )
r!   r   r"   r9   ÚargsÚstrerrorrO   rK   rT   rS   ©r   rF   r	   r	   r
   Útest_posix_error€   s   
ÿzAttributesTest.test_posix_errorrR   zWindows-specific testc                 C   s\   t ddddƒ}|  |jd¡ |  |jt¡ |  |jd t¡ |  |jd¡ |  |jd¡ d S )Nr   rW   rX   é·   )r!   r"   rS   r9   r   rY   rZ   rO   r[   r	   r	   r
   Útest_errno_translation‰   s   z%AttributesTest.test_errno_translationc              	   C   sè   d}t dƒD ]9}t|d |… Ž }|  t¡ |j W d   ƒ n1 s#w   Y  |  t¡
 |`W d   ƒ n1 s:w   Y  qtdddƒ}|  |jd¡ d|_|  |jd¡ |`|  t¡ |j W d   ƒ d S 1 smw   Y  d S )N)ÚaÚbÚcÚdrF   é   r_   r`   é   é   )ÚrangeÚBlockingIOErrorZassertRaisesÚAttributeErrorÚcharacters_writtenr"   )r   rY   ÚnrF   r	   r	   r
   Útest_blockingioerror“   s$   ÿÿ€"ÿz#AttributesTest.test_blockingioerrorN)r   r   r   rV   r\   ÚunittestZ
skipUnlessrK   rT   r^   rk   r	   r	   r	   r
   rQ   x   s    	
	rQ   c                   @   sD   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 )ÚExplicitSubclassingTestc                 C   s   t tdƒ}|  t|ƒt ¡ d S )Nr@   )r   r   r#   rA   r[   r	   r	   r
   rH   ¦   s   
z*ExplicitSubclassingTest.test_errno_mappingc                 C   ó*   t ddƒ}|  |jd¡ |  |jd¡ d S ©Núsome messager   ©rp   ©r   r"   r   rY   r[   r	   r	   r
   Útest_init_overridden«   ó   
z,ExplicitSubclassingTest.test_init_overriddenc                 C   ó,   t ddd}|  |jd¡ |  |jd¡ d S )Nrp   r   )r   rq   rr   r[   r	   r	   r
   Útest_init_kwdargs°   ó   z)ExplicitSubclassingTest.test_init_kwdargsc                 C   rn   ro   ©r   r"   r   rY   r[   r	   r	   r
   Útest_new_overriddenµ   rt   z+ExplicitSubclassingTest.test_new_overriddenc                 C   ru   )Nrp   r   )r   rq   rx   r[   r	   r	   r
   Útest_new_kwdargsº   rw   z(ExplicitSubclassingTest.test_new_kwdargsc                 C   sl   t ddƒ}|  |jd¡ |  |jd¡ |  |jd¡ tddƒ}|  |jd¡ |  |jd¡ |  |jd¡ d S ro   )r   r"   r   r   rY   r   r[   r	   r	   r
   Útest_init_new_overridden¿   s   

z0ExplicitSubclassingTest.test_init_new_overriddenc                 C   s(   t ƒ }|  |jd¡ |  t|ƒd¡ d S )Nr	   Ú )r   r"   rY   Ústrr[   r	   r	   r
   Útest_init_standaloneÉ   s   z,ExplicitSubclassingTest.test_init_standaloneN)
r   r   r   rH   rs   rv   ry   rz   r{   r~   r	   r	   r	   r
   rm   ¤   s    
rm   Ú__main__)r8   rK   r/   r'   rl   r9   r   r!   r   r   r   r   r   r   ZTestCaser    rQ   rm   r   Úmainr	   r	   r	   r
   Ú<module>   s&    U,,ÿ