
    daf)                     t   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&                          yy)    N)EEXISTc                       e Zd Zy)
SubOSErrorN__name__
__module____qualname__     8/root/Python-3.12.4/Lib/test/test_exception_hierarchy.pyr   r   
       r   r   c                        e Zd Z fdZ xZS )SubOSErrorWithInitc                 2    || _         t        | 	  |       y 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      s    " "r   r   c                        e Zd Z fdZ xZS )SubOSErrorWithNewc                 6    t         |   | |      }||_        |S r   )r   __new__baz)clsr   r   r   r   s       r   r   zSubOSErrorWithNew.__new__   s    wsG,r   )r   r   r	   r   r   r   s   @r   r   r      s     r   r   c                       e Zd Zy)SubOSErrorCombinedInitFirstNr   r
   r   r   r!   r!      r   r   r!   c                       e Zd Zy)SubOSErrorCombinedNewFirstNr   r
   r   r   r#   r#      r   r   r#   c                       e Zd Zd Zy)SubOSErrorWithStandaloneInitc                      y 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                   D    e Zd Zd Zd Zd ZdZd Z ee      Zd Z	d Z
y)	HierarchyTestc                     | j                  t        j                  d       | j                  t        t               | j                  t
        t               y )NOSError)assertEqualr+   r   assertIsIOErrorEnvironmentErrorr'   s    r   test_builtin_errorsz!HierarchyTest.test_builtin_errors%   s5    ))95gw'&0r   c                 L   | j                  t        j                  t               | j                  t        j                  j
                  t               | j                  t        j                  j
                  t               | j                  t        j                  t               y r   )	r-   socketerrorr+   gaierror__base__herrortimeoutTimeoutErrorr'   s    r   test_socket_errorsz HierarchyTest.test_socket_errors*   sV    fllG,foo..8fmm,,g6fnnl3r   c                 L    | j                  t        j                  t               y r   )r-   selectr3   r+   r'   s    r   test_select_errorzHierarchyTest.test_select_error0   s    fllG,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                 P   i }| j                         D ]  }|j                  d      }|s|j                  d      \  }}}t        d |j                         j	                  d            D ]9  }|dk(  rt        t        |      st        t        |      |t        t        |      <   ;  |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    LLN 	KD::e$D#'>>##6 GQ!$(8(>(>t(DE Km+GE74K07'0JWUG,-K	K r   c                    t        t        d      }| j                  t        |      t               | j
                  j                         D ],  \  }}t        |d      }| j                  t        |      |       . t        t        j                        t        | j
                        z
  }|D ]7  }t        |d      }| j                  t        |      t         t        |             9 y )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d1g/ IIOO- 	(LGS0AMM$q'3'	( )C		N:
! 	5G0AMM$q'7DG4	5r   c                 (   d}	 t        |       | j                  d       | j                  t        j
                  j                  |             	 t	        j                  |       | j                  d       y # t        $ r Y aw xY w# t        $ r Y y 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	@N II>? 	12	@IIh II>? ! 		 ! 		s#   A6 B 6	BB	BBN)r   r   r	   r0   r9   r<   _pep_maprP   rJ   r]   ri   r
   r   r   r)   r)   #   s4    1
4-
H" XD5@r   r)   c                   j    e Zd Zd Zd Z ej                  ej                  dk(  d      d        Z	d Z
y)AttributesTestc                     t         j                  dk(  r | j                  dt        t                     y | j                  dt        t                     y )Nntwinerror)rd   nameassertIndirr+   assertNotInr'   s    r   test_windows_errorz!AttributesTest.test_windows_error|   s3    77d?MM*c'l3ZW6r   c                 |   t        t        dd      }| j                  |j                  t               | j                  |j                  d   t               | j                  |j
                  d       | j                  |j                  d       t        j                  dk(  r| j                  |j                  d        y y )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/77d?QZZ. r   rn   zWindows-specific testc                 N   t        dddd      }| j                  |j                  d       | j                  |j                  t               | j                  |j
                  d   t               | j                  |j                  d       | j                  |j                  d       y )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 ]W  }t        |d |  }| j                  t              5  |j                   d d d        | j                  t              5  |`d d d        Y t        ddd      }| j                  |j                  d       d|_        | j                  |j                  d       |`| j                  t              5  |j                   d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)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bq*A"">2 %$$%"">2 )() )		) Ca(--q1 --q1 ~. 	!  	! 	!% %) )	! 	!s#   C!C-C9!C*	-C6	9DN)r   r   r	   rt   r{   unittest
skipUnlessrd   rp   r~   r   r
   r   r   rl   rl   z   s>    7/ XD*AB0 C0!r   rl   c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	ExplicitSubclassingTestc                 b    t        t        d      }| j                  t        |      t                y )NrR   )r   r   r-   rS   rz   s     r   r]   z*ExplicitSubclassingTest.test_errno_mapping   s!    v45d1gz*r   c                     t        dd      }| j                  |j                  d       | j                  |j                  d       y Nsome messager   r   r   r,   r   rx   rz   s     r   test_init_overriddenz,ExplicitSubclassingTest.test_init_overridden   s7    ~u5&!23r   c                     t        dd      }| j                  |j                  d       | j                  |j                  d       y )Nr   r   )r   r   r   rz   s     r   test_init_kwdargsz)ExplicitSubclassingTest.test_init_kwdargs   s7    ~59&!23r   c                     t        dd      }| j                  |j                  d       | j                  |j                  d       y r   r   r,   r   rx   rz   s     r   test_new_overriddenz+ExplicitSubclassingTest.test_new_overridden   s7    ne4&!23r   c                     t        dd      }| j                  |j                  d       | j                  |j                  d       y )Nr   r   )r   r   r   rz   s     r   test_new_kwdargsz(ExplicitSubclassingTest.test_new_kwdargs   s7    n%8&!23r   c                    t        dd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       t        dd      }| j                  |j                  d       | j                  |j                  d       | j                  |j                  d       y r   )r!   r,   r   r   rx   r#   rz   s     r   test_init_new_overriddenz0ExplicitSubclassingTest.test_init_new_overridden   s    '>&&!23&~u=&&!23r   c                     t               }| j                  |j                  d       | j                  t        |      d       y )Nr
    )r%   r,   rx   strrz   s     r   test_init_standalonez,ExplicitSubclassingTest.test_init_standalone   s2    (*$Q$r   N)
r   r   r	   r]   r   r   r   r   r   r   r
   r   r   r   r      s%    +
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@H%% T@n)!X&& )!X)%h// )%X zHMMO r   