
    dafu                         d Z ddlZddlZddlZddlmZ  G d dej                        Zedk(  r ej                          yy)zL
Tests run by test_atexit in a subprocess since it clears atexit callbacks.
    N)supportc                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)GeneralTestc                 ,    t        j                          y Natexit_clearselfs    ,/root/Python-3.12.4/Lib/test/_test_atexit.pysetUpzGeneralTest.setUp           c                 ,    t        j                          y r   r   r   s    r   tearDownzGeneralTest.tearDown   r   r   c                    t        j                         5 }t        j                  |g|  t        j                          | j                  |j                  j                  |       | j                  |j                  j                  |       | j                  t        |j                  j                        |       d d d        y # 1 sw Y   y xY wr   )r   catch_unraisable_exceptionr	   register_run_exitfuncsassertEqual
unraisableobjectexc_typetype	exc_value)r   r   funcargscms        r   assert_raises_unraisablez$GeneralTest.assert_raises_unraisable   s    //1 	FROOD(4(!!#R]]1148R]]33X>T"--"9"9:HE	F 	F 	Fs   B&CCc                    g fd}fd}t        j                  |dd       t        j                  |       t        j                  |dd       t        j                          | j                  dd	d
difddi fddi fg       y )Nc                  .    j                  d| |f       y )Nfunc1appendr   kwargscallss     r   r#   z%GeneralTest.test_order.<locals>.func1       LL'401r   c                  .    j                  d| |f       y )Nfunc2r$   r&   s     r   r+   z%GeneralTest.test_order.<locals>.func2"   r)   r            value)keyr+   )r.   r0    r#   )r,   r-   )r	   r   r   r   )r   r#   r+   r(   s      @r   
test_orderzGeneralTest.test_order   s     	2	2 	q!$qg."D5'*:;"B+"FB/1	2r   c                 :    d }| j                  t        |dd       y )Nc                       y r   r1   r1   r   r   r   z&GeneralTest.test_badargs.<locals>.func1   s    r   r,   r-   r    	TypeError)r   r   s     r   test_badargszGeneralTest.test_badargs0   s    	 	%%iq!<r   c                 6    d }| j                  t        |       y )Nc                      t         r   )r6   r1   r   r   raise_type_errorz0GeneralTest.test_raise.<locals>.raise_type_error8   s    Or   r5   )r   r:   s     r   
test_raisezGeneralTest.test_raise7   s    	 	%%i1ABr   c                 6    d }| j                  t        |       y )Nc                      ddz   y Nr,   r   r1   r1   r   r   div_zeroz5GeneralTest.test_raise_unnormalized.<locals>.div_zero@   s	    Er   )r    ZeroDivisionError)r   r?   s     r   test_raise_unnormalizedz#GeneralTest.test_raise_unnormalized=   s    	 	%%&7Br   c                 L    | j                  t        t        j                         y r   )r    
SystemExitsysexitr   s    r   	test_exitzGeneralTest.test_exitE   s    %%j#((;r   c                     dgfd}t        d      D ]  }t        j                  |        t        j                          | j	                  d   d       y )Nr   c                        dxx   dz  cc<   y Nr   r,   r1   as   r   incz$GeneralTest.test_stress.<locals>.incJ       aDAIDr      )ranger	   r   r   r   )r   rL   irK   s      @r   test_stresszGeneralTest.test_stressH   sP    C	 s 	!AOOC 	!1s#r   c                     dgfd}t        j                  |       t        j                          t        j                          | j	                  d   d       y )Nr   c                        dxx   dz  cc<   y rI   r1   rJ   s   r   rL   z#GeneralTest.test_clear.<locals>.incU   rM   r   )r	   r   r
   r   r   )r   rL   rK   s     @r   
test_clearzGeneralTest.test_clearS   sF    C	 	1q!r   c                    dgfd}fd}t        d      D ]  }t        j                  |        t        j                  |       t        j                  |       t        j                          | j                  d   d       y )Nr   c                        dxx   dz  cc<   y rI   r1   rJ   s   r   rL   z(GeneralTest.test_unregister.<locals>.inc`   rM   r   c                        dxx   dz  cc<   y rI   r1   rJ   s   r   decz(GeneralTest.test_unregister.<locals>.decb   rM   r      )rO   r	   r   
unregisterr   r   )r   rL   rX   rP   rK   s       @r   test_unregisterzGeneralTest.test_unregister^   so    C		 q 	!AOOC 	!#1r"r   c                 "   g }t        j                  |j                  d       t        j                          | j	                  |dg       t        j
                  |j                         t        j                          | j	                  |dg       y )N   )r	   r   r%   r   r   r[   )r   ls     r   test_bound_methodszGeneralTest.test_bound_methodsm   sg    !$QC !((#QC r   c                    fdt        j                         	 t        j                         5 }t        j                          | j                  |j                  j                         | j                  |j                  j                  t               | j                  t        |j                  j                        t               d d d        t        j                         y # 1 sw Y   xY w# t        j                         w xY w)Nc                  :    t        j                          ddz   y r>   )r	   r[   )r   s   r   r   z@GeneralTest.test_atexit_with_unregistered_function.<locals>.funcy   s    d#aCr   )r	   r   r   r   r   r   r   r   r   r@   r   r   r[   )r   r   r   s     @r   &test_atexit_with_unregistered_functionz2GeneralTest.test_atexit_with_unregistered_functionw   s    	 		$335 S%%'  !5!5t<  !7!79JK  bmm&=&=!>@QR	S d#S S d#s#   C3 BC'	C3 'C0,C3 3D
N)__name__
__module____qualname__r   r   r    r2   r7   r;   rA   rF   rQ   rT   r\   r`   rc   r1   r   r   r   r   
   sF    F2,=CC<	$	"#!$r   r   __main__)
__doc__r	   rD   unittesttestr   TestCaser   rd   mainr1   r   r   <module>rm      sG     
  z$(## z$z zHMMO r   