
    daf*                        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Zd dlmZ  ej                   e
ed      d       ej                  ej                  dk(  d       G d dej                                      Z ej                   e
ed      d       ej                  ej                  dk(  d       G d	 d
e                    Z ej                   e
ed      d       ej                  ej                  dk(  d       G d de                    Z ej                   e
ed      d       ej                  ej                  dk(  d       G d de                    Zedk(  r ej&                          yy)    N)supportkillzTest requires os.killwin32zTest cannot run on Windowsc                   p    e Zd ZdZdZd Zd Zd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)	TestBreakN   c                     t        j                  t         j                        | _        | j                  /t        j                   t         j                  | j                         y y N)signal	getsignalSIGINT_default_handlerint_handlerselfs    8/root/Python-3.12.4/Lib/test/test_unittest/test_break.pysetUpzTestBreak.setUp   sB     & 0 0 ?'MM&--)9)9: (    c                     t        j                   t         j                  | j                         t        j                         t
        j                  _        d t
        j                  _        y r
   )	r   r   r   weakrefWeakKeyDictionaryunittestsignals_results_interrupt_handlerr   s    r   tearDownzTestBreak.tearDown   s?    fmmT%:%:;$+$=$=$?!.2+r   c                 h   t        j                  d      sd}n|| j                  }t        |      D ]S  }| j	                  |      5  |dk7  r| j                          	  |        ||dz
  k7  r| j                          	 d d d        U y # ||dz
  k7  r| j                          w w xY w# 1 sw Y   ~xY w)NT)cpython   )repeatr   )r   check_impl_detaildefault_repeatsrangesubTestr   r   )r   test_functionrepeatsr    s       r   withRepeatszTestBreak.withRepeats   s    ((6 G_**GGn 	(FV, 
( Q;JJL(!O1,
( 
(	( 1, -
( 
(s$   B(B
&B(
B%%B((B1	c                    t        j                  t         j                        }t        j                          | j                  t        j                  t         j                        |       	 t        j                         }t        j                  |t         j                         | j                  t        j                  j                  j                         y # t        $ r | j                  d       Y Pw xY wNzKeyboardInterrupt not handled)r   r   r   r   installHandlerassertNotEqualosgetpidr   KeyboardInterruptfail
assertTruer   r   called)r   default_handlerpids      r   testInstallHandlerzTestBreak.testInstallHandler4   s     **6==9!F,,V]];_M	7))+CGGC' 	((;;BBC ! 	7II56	7s   ,8C C54C5c                 ^   t        j                         }| j                  |t         j                  j                         t        j
                  |       	 | j                  |t         j                  j                         t        j                  |       y # t        j                  |       w xY wr
   )r   
TestResultassertNotInr   r   registerResultassertInremoveResult)r   results     r   testRegisterResultzTestBreak.testRegisterResultA   sv    $$&!1!1!:!:;'	*MM&("2"2";";<!!&)H!!&)s   *B B,c                 @      fd fd} j                  |       y )Nc                     t        j                         }t        j                  |t        j                         d| _        j                  | j                         y )NT)r,   r-   r   r   r   breakCaughtr0   
shouldStopr;   r3   r   s     r   testz+TestBreak.testInterruptCaught.<locals>.testL   s:    ))+CGGC'!%FOOF--.r   c                     t        j                         } t        j                          t        j                  |        j	                  t        j                  t
        j                        j                         	  |        j                  | j                         y # t        $ r j                  d       Y 8w xY wr)   )r   r6   r*   r8   r+   r   r   r   r   r.   r/   r0   r?   r;   r   rB   s    r   r%   z4TestBreak.testInterruptCaught.<locals>.test_functionR   s    ((*F##%##F+  /%%
;V OOF../ % ;		9:;s   =B! !B>=B>r'   r   r%   rB   s   ` @r   testInterruptCaughtzTestBreak.testInterruptCaughtK   s    	/	0 	'r   c                      t        j                  t         j                        t         j                  k(  r j	                  d        fd fd} j                  |       y )N&test requires SIGINT to not be ignoredc                 $   t        j                         }t        j                  |t        j                         d| _        j                  | j                         t        j                  |t        j                         j                  d       y )NTz#Second KeyboardInterrupt not raised)	r,   r-   r   r   r   r?   r0   r@   r/   rA   s     r   rB   z+TestBreak.testSecondInterrupt.<locals>.testi   sY    ))+CGGC'!%FOOF--.GGC'II;<r   c                     t        j                         } t        j                          t        j                  |        j	                  t
              5   |        d d d        j                  | j                         y # 1 sw Y   %xY wr
   )r   r6   r*   r8   assertRaisesr.   r0   r?   rD   s    r   r%   z4TestBreak.testSecondInterrupt.<locals>.test_functionq   sh    ((*F##%##F+""#45 VOOF../ s   	BB
r   r   r   SIG_IGNskipTestr'   rF   s   ` @r   testSecondInterruptzTestBreak.testSecondInterruptc   sG     FMM*fnn<MMBC	=	0 	'r   c                 2      fd} j                  |       y )Nc                     t        j                          t        j                         } t        j                  |        t	        j
                  t        j                        }t        j                         }t        j                  |       j                  t	        j
                  t        j                        |       t        j                         }	 t        j                  t        j                         t        j                         j                  | j                         j                  |j                         j                  |j                         y # t        $ r j                  d       Y nw xY wr)   )r   r*   r6   r8   r   r   r   assertEqualr,   r   r-   r.   r/   r0   r@   assertFalse)r;   new_handlerresult2result3r   s       r   r%   z/TestBreak.testTwoResults.<locals>.test_function}   s    ##%((*F##F+ **6==9K))+G##G,V--fmm<kJ))+G;		V]]3 OOF--.OOG../W//0 % ;		9:;s   6E E87E8rE   r   r%   s   ` r   testTwoResultszTestBreak.testTwoResults|   s    	1* 	'r   c                      t        j                  t         j                        t         j                  k(  r j	                  d        fd} j                  |       y )NrI   c                  v   t        j                          t        j                  t        j                        fd} t        j                  t        j                  |        	 t        j                  t        j                         t        j                         j                  d       y # t        $ r Y y w xY w)Nc                      | |       y r
    )framesignumhandlers     r   rU   zRTestBreak.testHandlerReplacedButCalled.<locals>.test_function.<locals>.new_handler   s    v&r   z6replaced but delegated handler doesn't raise interrupt)
r   r*   r   r   r   r,   r   r-   r/   r.   )rU   r`   r   s    @r   r%   z=TestBreak.testHandlerReplacedButCalled.<locals>.test_function   s}     ##%&&v}}5G'MM&--5T		V]]3 		RS % s   $6B, ,	B87B8rM   rX   s   ` r   testHandlerReplacedButCalledz&TestBreak.testHandlerReplacedButCalled   sC     FMM*fnn<MMBC	T" 	'r   c                     t        j                  t        j                               }|j	                  t        j
                               }| j                  |t         j                  j                         y )N)stream)	r   TextTestRunnerioStringIOrun	TestSuiter9   r   r   )r   runnerr;   s      r   
testRunnerzTestBreak.testRunner   sK     ((>H..01fh..778r   c                     t        j                         }t        j                  |       t        j                  |      }~t        j                          t        j                          | j                   |              y r
   )r   r6   r8   r   refgccollectassertIsNone)r   r;   rl   s      r   testWeakReferenceszTestBreak.testWeakReferences   sR    $$&'kk&! 	

RZZ\#% r   c                    t        j                         }t        j                  |       t        j                          | j	                  t        j
                  |             | j                  t        j
                  t        j                                      	 t        j                         }t        j                  |t        j                         | j                  |j                         y # t        $ r Y 'w xY wr
   )r   r6   r8   r*   r0   r:   rT   r,   r-   r   r   r   r.   r@   )r   r;   r3   s      r   testRemoveResultzTestBreak.testRemoveResult   s    $$&'!--f56 	..x/B/B/DEF	))+CGGC' 	**+ ! 		s   8C- -	C98C9c                    t               t               t               t               t        j                  t        j                        } G fddt                G fddt        j
                        } |d      }|j                          | j                  j                  dd dd d dfg       | j                  j                  g       | j                  |j                         | j                  t        j                  t        j                        |       g _        g _	         |d      }|j                          | j                  j                  dd dd d dfg       | j                  j                  g       | j                  |j                         | j                  t        j                  t        j                        |       y )	Nc                   &    e Zd Zg Zg Zd Z fdZy)5TestBreak.testMainInstallsHandler.<locals>.FakeRunnerc                 >    | j                   j                  ||f       y r
   )initArgsappend)r   argskwargss      r   __init__z>TestBreak.testMainInstallsHandler.<locals>.FakeRunner.__init__   s    $$dF^4r   c                 >    | j                   j                  |       S r
   )runArgsrx   )r   rB   r;   s     r   rg   z9TestBreak.testMainInstallsHandler.<locals>.FakeRunner.run   s    ##D)r   N)__name__
__module____qualname__rw   r}   r{   rg   )r;   s   r   
FakeRunnerru      s    HG5r   r   c                       e Zd Z fdZy)2TestBreak.testMainInstallsHandler.<locals>.Programc                     d| _         | _        | _        || _        d| _        | _        | _        d | _        d | _        y )NF)	exit	verbosityfailfast
catchbreak	tb_localsrj   rB   r;   	durations)r   r   r   r   rB   r   s     r   r{   z;TestBreak.testMainInstallsHandler.<locals>.Program.__init__   sB    !	!* (",!&", 	"!%r   N)r~   r   r   r{   )r   r   rB   r   s   r   Programr      s    	& 	&r   r   Fr]   )bufferr   r   r   warningsr   T)objectr   r   r   r   TestProgramrunTestsrS   rw   r}   r;   r+   )	r   r2   r   pr   r   r;   rB   r   s	       @@@@@r   testMainInstallsHandlerz!TestBreak.testMainInstallsHandler   s   8xH	 **6==9	 	
	& 
	&h** 
	& EN	

,,tBKAIBGAEBF5H 0I /J 	K 	++dV46*))&--8/J 

DM	

,,tBKAIBGAEBF5H 0I /J 	K 	++dV46*F,,V]];_Mr   c                    t        j                  t         j                        }t        j                          t        j
                          | j                  t        j                  t         j                        |       t        j
                          | j                  t        j                  t         j                        |       y r
   )r   r   r   r   r*   removeHandlerrS   )r   r2   s     r   testRemoveHandlerzTestBreak.testRemoveHandler  sz     **6==9! ))&--8/J 	 ))&--8/Jr   c                     t        j                  t         j                        t        j                          t        j
                   fd       } |         j                  t        j                  t         j                               y )Nc                  l    j                  t        j                  t        j                                y r
   )rS   r   r   r   )r2   r   s   r   rB   z4TestBreak.testRemoveHandlerAsDecorator.<locals>.test  s"    V--fmm<oNr   )r   r   r   r   r*   r   r+   )r   rB   r2   s   ` @r   testRemoveHandlerAsDecoratorz&TestBreak.testRemoveHandlerAsDecorator  sc     **6==9!				O 
 	O 	F,,V]];_Mr   r
   )r~   r   r   r   r"   r   r   r'   r4   r<   rG   rP   rY   ra   rj   rp   rr   r   r   r   r]   r   r   r   r      s`     K O;
3(*D*(0(2(2(29
!,$8NtK	Nr   r   c                   $    e Zd Zej                  Zy)TestBreakDefaultIntHandlerN)r~   r   r   r   default_int_handlerr   r]   r   r   r   r   $  s     ,,Kr   r   c                   $    e Zd Zej                  Zy)TestBreakSignalIgnoredN)r~   r   r   r   rN   r   r]   r   r   r   r   )       ..Kr   r   c                   $    e Zd Zej                  Zy)TestBreakSignalDefaultN)r~   r   r   r   SIG_DFLr   r]   r   r   r   r   .  r   r   r   __main__)rm   re   r,   sysr   r   r   rB   r   
skipUnlesshasattrskipIfplatformTestCaser   r   r   r   r~   mainr]   r   r   <module>r      s   	 	 	 
     WR(*AB')EFTN!! TN G CTNl WR(*AB')EF- - G C- WR(*AB')EF!Y ! G C! WR(*AB')EF!Y ! G C! zHMMO r   