
    ;e)                        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e          Z G d de          Z	 G d de          Z
 G d	 d
e	e
          Z G d de
e	          Z G d de          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 )    N)EEXISTc                       e Zd ZdS )
SubOSErrorN__name__
__module____qualname__     4/usr/lib/python3.11/test/test_exception_hierarchy.pyr   r   
           Dr   r   c                        e Zd Z fdZ xZS )SubOSErrorWithInitc                 X    || _         t                                          |           d S N)barsuper__init__)selfmessager   	__class__s      r   r   zSubOSErrorWithInit.__init__   s(    !!!!!r   )r   r   r	   r   __classcell__r   s   @r   r   r      s8        " " " " " " " " "r   r   c                        e Zd Z fdZ xZS )SubOSErrorWithNewc                 Z    t                                          | |          }||_        |S r   )r   __new__baz)clsr   r   r   r   s       r   r   zSubOSErrorWithNew.__new__   s&    wwsG,,r   )r   r   r	   r   r   r   s   @r   r   r      s8                r   r   c                       e Zd ZdS )SubOSErrorCombinedInitFirstNr   r
   r   r   r!   r!      r   r   r!   c                       e Zd ZdS )SubOSErrorCombinedNewFirstNr   r
   r   r   r#   r#      r   r   r#   c                       e Zd Zd ZdS )SubOSErrorWithStandaloneInitc                     d S r   r
   r   s    r   r   z%SubOSErrorWithStandaloneInit.__init__   s    r   N)r   r   r	   r   r
   r   r   r%   r%      s#            r   r%   c                   L    e Zd Zd Zd Zd ZdZd Z ee          Zd Z	d Z
dS )	HierarchyTestc                     |                      t          j        d           |                     t          t                     |                     t
          t                     d S )NOSError)assertEqualr+   r   assertIsIOErrorEnvironmentErrorr'   s    r   test_builtin_errorsz!HierarchyTest.test_builtin_errors%   sJ    )9555gw'''&00000r   c                 B   |                      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'   s    r   test_socket_errorsz HierarchyTest.test_socket_errors*   sf    flG,,,fo.888fm,g666fnl33333r   c                 P    |                      t          j        t                     d S r   )r-   selectr3   r+   r'   s    r   test_select_errorzHierarchyTest.test_select_error0   s    flG,,,,,r   ae  
        +-- 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, ENOTCAPABLE
        +-- ProcessLookupError                                          ESRCH
        +-- TimeoutError                                            ETIMEDOUT
    c                    i }|                                  D ]}|                    d          }|s|                    d          \  }}}t          d |                                                    d                    D ]I}|dk    rt          t          |          st          t          |          |t          t          |          <   J|S )Nz+-  z, ENOTCAPABLE)	
splitlinesstrip	partitionfiltersplithasattrerrnogetattrbuiltins)s_maplineexcname_errnameserrnames          r   	_make_mapzHierarchyTest._make_mapF   s    LLNN 	K 	KD::e$$D #'>>##6#6 GQ!$(8(8(>(>t(D(DEE K Km++GE74K4K+07'0J0JWUG,,--K r   c                    t          t          d          }|                     t          |          t                     | j                                        D ]8\  }}t          |d          }|                     t          |          |           9t          t          j	                  t          | j                  z
  }|D ]H}t          |d          }|                     t          |          t           t          |                     Id S )NBad file descriptorzSome message)r+   r   r-   typeFileExistsErrorrJ   itemssetrF   	errorcoderepr)r   eerrcodeexc
othercodess        r   test_errno_mappingz HierarchyTest.test_errno_mappingT   s     F122d1gg/// IOO-- 	( 	(LGS00AMM$q''3''''))C	NN:
! 	5 	5G00AMM$q''7DGG4444	5 	5r   c                 P   d}	 t          |           |                     d           n# t          $ r Y nw xY w|                     t          j                            |                     	 t	          j        |           |                     d           d S # t          $ r Y d S w xY w)N some_hopefully_non_existing_filez&should have raised a FileNotFoundError)openfailFileNotFoundErrorassertFalseospathexistsunlink)r   filenames     r   test_try_exceptzHierarchyTest.test_try_exceptb   s    5	@NNN II>???? ! 	 	 	D	 	11222	@Ih II>????? ! 	 	 	DD	s   ) 
66,B 
B%$B%N)r   r   r	   r0   r9   r<   _pep_maprP   rJ   r]   ri   r
   r   r   r)   r)   #   s        1 1 1
4 4 4- - -
H"   9XD5 5 5@ @ @ @ @r   r)   c                   f    e Zd Zd Zd Z ej        ej        dk    d          d             Z	d Z
dS )AttributesTestc                     t           j        dk    r*|                     dt          t                               d S |                     dt          t                               d S )Nntwinerror)rd   nameassertIndirr+   assertNotInr'   s    r   test_windows_errorz!AttributesTest.test_windows_error|   sO    7d??MM*c'll33333ZW66666r   c                    t          t          dd          }|                     |j        t                     |                     |j        d         t                     |                     |j        d           |                     |j        d           t          j        dk    r|                     |j	        d            d S d S )NFile already existsfoo.txtr   rn   )
r+   r   r,   rF   argsstrerrorrh   rd   rp   ro   r   rY   s     r   test_posix_errorzAttributesTest.test_posix_error   s    F19==&)))F+++%:;;;Y///7d??QZ..... ?r   rn   zWindows-specific testc                 X   t          dddd          }|                     |j        d           |                     |j        t                     |                     |j        d         t                     |                     |j        d           |                     |j        d           d S )Nr   rv   rw      )r+   r,   ro   rF   r   rx   ry   rh   rz   s     r   test_errno_translationz%AttributesTest.test_errno_translation   s     A,i==S)))&)))F+++%:;;;Y/////r   c                 >   d}t          d          D ]}t          |d |          }|                     t                    5  |j         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          ddd          }|                     |j        d           d|_        |                     |j        d           |`|                     t                    5  |j         d d d            d S # 1 swxY w Y   d S )N)abcdrY      r   r         )rangeBlockingIOErrorassertRaisesAttributeErrorcharacters_writtenr,   )r   rx   nrY   s       r   test_blockingioerrorz#AttributesTest.test_blockingioerror   s   (q 	) 	)Abqb*A"">22 % %$$% % % % % % % % % % % % % % %"">22 ) )() ) ) ) ) ) ) ) ) ) ) ) ) ) )Ca((-q111 -q111 ~.. 	! 	!  	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!s5   AA	A	8BB	B	=DDDN)r   r   r	   rt   r{   unittest
skipUnlessrd   rp   r~   r   r
   r   r   rl   rl   z   st        7 7 7/ / / XD*ABB0 0 CB0! ! ! ! !r   rl   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	ExplicitSubclassingTestc                     t          t          d          }|                     t          |          t                      d S )NrR   )r   r   r-   rS   rz   s     r   r]   z*ExplicitSubclassingTest.test_errno_mapping   s2    v455d1ggz*****r   c                     t          dd          }|                     |j        d           |                     |j        d           d S Nsome messager   r   r   r,   r   rx   rz   s     r   test_init_overriddenz,ExplicitSubclassingTest.test_init_overridden   sH    ~u55&&&!233333r   c                     t          dd          }|                     |j        d           |                     |j        d           d S )Nr   r   )r   r   r   rz   s     r   test_init_kwdargsz)ExplicitSubclassingTest.test_init_kwdargs   sK    ~5999&&&!233333r   c                     t          dd          }|                     |j        d           |                     |j        d           d S r   r   r,   r   rx   rz   s     r   test_new_overriddenz+ExplicitSubclassingTest.test_new_overridden   sH    ne44&&&!233333r   c                     t          dd          }|                     |j        d           |                     |j        d           d S )Nr   r   )r   r   r   rz   s     r   test_new_kwdargsz(ExplicitSubclassingTest.test_new_kwdargs   sK    n%888&&&!233333r   c                    t          dd          }|                     |j        d           |                     |j        d           |                     |j        d           t          dd          }|                     |j        d           |                     |j        d           |                     |j        d           d S r   )r!   r,   r   r   rx   r#   rz   s     r   test_init_new_overriddenz0ExplicitSubclassingTest.test_init_new_overridden   s    '>>&&&&&&!2333&~u==&&&&&&!233333r   c                     t                      }|                     |j        d           |                     t          |          d           d S )Nr
    )r%   r,   rx   strrz   s     r   test_init_standalonez,ExplicitSubclassingTest.test_init_standalone   sG    (**$$$Q$$$$$r   N)
r   r   r	   r]   r   r   r   r   r   r   r
   r   r   r   r      s}        + + +
4 4 4
4 4 4
4 4 4
4 4 4
4 4 4% % % % %r   r   __main__)rH   rd   r;   r2   r   rF   r   r+   r   r   r   r!   r#   r%   TestCaser)   rl   r   r   mainr
   r   r   <module>r      s    				          	 	 	 	 	 	 	 	" " " " " " " "
       	 	 	 	 	"46G 	 	 		 	 	 	 	!24F 	 	 	    7   
T@ T@ T@ T@ T@H% T@ T@ T@n)! )! )! )! )!X& )! )! )!X)% )% )% )% )%h/ )% )% )%X zHMOOOOO r   