
    4hh*                        S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJr  \R                  " \
" \S5      S5      \R                  " \R                  S:H  S5       " S S\R                  5      5       5       r\R                  " \
" \S5      S5      \R                  " \R                  S:H  S5       " S	 S
\5      5       5       r\R                  " \
" \S5      S5      \R                  " \R                  S:H  S5       " S S\5      5       5       r\R                  " \
" \S5      S5      \R                  " \R                  S:H  S5       " S S\5      5       5       r\S:X  a  \R&                  " 5         gg)    N)supportkillzTest requires os.killwin32zTest cannot run on Windowsc                   z    \ rS rSrSrSrS rS rSS jrS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rSrg)	TestBreak   N   c                     [         R                  " [         R                  5      U l        U R                  b0  [         R                   " [         R                  U R                  5        g g N)signal	getsignalSIGINT_default_handlerint_handlerselfs    F/opt/python-3.13.8/usr/lib/python3.13/test/test_unittest/test_break.pysetUpTestBreak.setUp   sB     & 0 0 ?'MM&--)9)9: (    c                     [         R                   " [         R                  U R                  5        [        R                  " 5       [
        R                  l        S [
        R                  l        g r   )	r   r   r   weakrefWeakKeyDictionaryunittestsignals_results_interrupt_handlerr   s    r   tearDownTestBreak.tearDown   s?    fmmT%:%:;$+$=$=$?!.2+r   c                 z   [         R                  " SS9(       d  SnOUc  U R                  n[        U5       HQ  nU R	                  US9   US:w  a  U R                  5          U" 5         X2S-
  :w  a  U R                  5         S S S 5        MS     g ! X2S-
  :w  a  U R                  5         f f = f! , (       d  f       M  = f)NT)cpython   )repeatr   )r   check_impl_detaildefault_repeatsrangesubTestr   r   )r   test_functionrepeatsr#   s       r   withRepeatsTestBreak.withRepeats   s    ((6 G_**GGnFV, Q;JJL(!O1, -, % 1, - -,s$   	B+!B(B+B((B++
B:	c                    [         R                  " [         R                  5      n[        R                  " 5         U R                  [         R                  " [         R                  5      U5         [        R                  " 5       n[        R                  " U[         R                  5        U R                  [        R                  R                  R                  5        g ! [         a    U R                  S5         NQf = fNzKeyboardInterrupt not handled)r   r   r   r   installHandlerassertNotEqualosgetpidr   KeyboardInterruptfail
assertTruer   r   called)r   default_handlerpids      r   testInstallHandlerTestBreak.testInstallHandler4   s     **6==9!F,,V]];_M	7))+CGGC' 	((;;BBC ! 	7II56	7s   /:C C;:C;c                 f   [         R                  " 5       nU R                  U[         R                  R                  5        [         R
                  " U5         U R                  U[         R                  R                  5        [         R                  " U5        g ! [         R                  " U5        f = fr   )r   
TestResultassertNotInr   r   registerResultassertInremoveResult)r   results     r   testRegisterResultTestBreak.testRegisterResultA   sv    $$&!1!1!:!:;'	*MM&("2"2";";<!!&)H!!&)s   *B B0c                 D   ^ ^ U 4S jmU U4S jnT R                  U5        g )Nc                    > [         R                  " 5       n[         R                  " U[        R                  5        SU l        TR                  U R                  5        g )NT)r0   r1   r   r   r   breakCaughtr4   
shouldStopr@   r7   r   s     r   test+TestBreak.testInterruptCaught.<locals>.testL   s:    ))+CGGC'!%FOOF--.r   c                    > [         R                  " 5       n [         R                  " 5         [         R                  " U 5        TR	                  [
        R                  " [
        R                  5      TR                  5         T" U 5        TR                  U R                  5        g ! [         a    TR                  S5         N9f = fr-   )r   r;   r.   r=   r/   r   r   r   r   r2   r3   r4   rE   r@   r   rH   s    r   r(   4TestBreak.testInterruptCaught.<locals>.test_functionR   s    ((*F##%##F+  /%%
;V OOF../ % ;		9:;s   B% %CCr*   r   r(   rH   s   ` @r   testInterruptCaughtTestBreak.testInterruptCaughtK   s    	/	0 	'r   c                    ^ ^ [         R                  " [         R                  5      [         R                  :X  a  T R	                  S5        U 4S jmU U4S jnT R                  U5        g )N&test requires SIGINT to not be ignoredc                 *  > [         R                  " 5       n[         R                  " U[        R                  5        SU l        TR                  U R                  5        [         R                  " U[        R                  5        TR                  S5        g )NTz#Second KeyboardInterrupt not raised)	r0   r1   r   r   r   rE   r4   rF   r3   rG   s     r   rH   +TestBreak.testSecondInterrupt.<locals>.testi   sY    ))+CGGC'!%FOOF--.GGC'II;<r   c                  *  > [         R                  " 5       n [         R                  " 5         [         R                  " U 5        TR	                  [
        5         T" U 5        S S S 5        TR                  U R                  5        g ! , (       d  f       N*= fr   )r   r;   r.   r=   assertRaisesr2   r4   rE   rK   s    r   r(   4TestBreak.testSecondInterrupt.<locals>.test_functionq   sa    ((*F##%##F+""#45V 6OOF../ 65s   	B
Br   r   r   SIG_IGNskipTestr*   rN   s   ` @r   testSecondInterruptTestBreak.testSecondInterruptc   sG     FMM*fnn<MMBC	=	0 	'r   c                 4   ^  U 4S jnT R                  U5        g )Nc                    > [         R                  " 5         [         R                  " 5       n [         R                  " U 5        [        R
                  " [        R                  5      n[         R                  " 5       n[         R                  " U5        TR                  [        R
                  " [        R                  5      U5        [         R                  " 5       n [        R                  " [        R                  " 5       [        R                  5        TR                  U R                  5        TR                  UR                  5        TR                  UR                  5        g ! [         a    TR                  S5         Nof = fr-   )r   r.   r;   r=   r   r   r   assertEqualr0   r   r1   r2   r3   r4   rF   assertFalse)r@   new_handlerresult2result3r   s       r   r(   /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   8E% %FFrM   r   r(   s   ` r   testTwoResultsTestBreak.testTwoResults|   s    	1* 	'r   c                    ^  [         R                  " [         R                  5      [         R                  :X  a  T R	                  S5        U 4S jnT R                  U5        g )NrR   c                    >^ [         R                  " 5         [        R                  " [        R                  5      mU4S jn [        R                  " [        R                  U 5         [
        R                  " [
        R                  " 5       [        R                  5        TR                  S5        g ! [         a     g f = f)Nc                    > T" X5        g r    )framesignumhandlers     r   ra   RTestBreak.testHandlerReplacedButCalled.<locals>.test_function.<locals>.new_handler   s    &r   z6replaced but delegated handler doesn't raise interrupt)
r   r.   r   r   r   r0   r   r1   r3   r2   )ra   rn   r   s    @r   r(   =TestBreak.testHandlerReplacedButCalled.<locals>.test_function   s}     ##%&&v}}5G'MM&--5T		V]]3 		RS % s   (8B2 2
B?>B?rX   re   s   ` r   testHandlerReplacedButCalled&TestBreak.testHandlerReplacedButCalled   sC     FMM*fnn<MMBC	T" 	'r   c                     [         R                  " [        R                  " 5       S9nUR	                  [         R
                  " 5       5      nU R                  U[         R                  R                  5        g )N)stream)	r   TextTestRunnerioStringIOrun	TestSuiter>   r   r   )r   runnerr@   s      r   
testRunnerTestBreak.testRunner   sK     ((>H..01fh..778r   c                    [         R                  " 5       n[         R                  " U5        [        R                  " U5      nA[
        R                  " 5         [
        R                  " 5         U R                  U" 5       5        g r   )r   r;   r=   r   refgccollectassertIsNone)r   r@   r~   s      r   testWeakReferencesTestBreak.testWeakReferences   sR    $$&'kk&! 	

RZZ\#% r   c                 
   [         R                  " 5       n[         R                  " U5        [         R                  " 5         U R	                  [         R
                  " U5      5        U R                  [         R
                  " [         R                  " 5       5      5         [        R                  " 5       n[        R                  " U[        R                  5        U R                  UR                  5        g ! [         a     N(f = fr   )r   r;   r=   r.   r4   r?   r`   r0   r1   r   r   r   r2   rF   )r   r@   r7   s      r   testRemoveResultTestBreak.testRemoveResult   s    $$&'!--f56 	..x/B/B/DEF	))+CGGC' 	**+ ! 		s   :C5 5
DDc                   ^^^^^ [        5       m[        5       m[        5       m[        5       m[        R                  " [        R                  5      n " U4S jS[         5      m " UUUU4S jS[        R
                  5      nU" S5      nUR                  5         U R                  TR                  SS TTSS S S.4/5        U R                  TR                  T/5        U R                  UR                  T5        U R                  [        R                  " [        R                  5      U5        / Tl        / Tl	        U" S5      nUR                  5         U R                  TR                  SS TTSS S S.4/5        U R                  TR                  T/5        U R                  UR                  T5        U R                  [        R                  " [        R                  5      U5        g )	Nc                   0   > \ rS rSr/ r/ rS rU 4S jrSrg)5TestBreak.testMainInstallsHandler.<locals>.FakeRunner   c                 <    U R                   R                  X45        g r   )initArgsappend)r   argskwargss      r   __init__>TestBreak.testMainInstallsHandler.<locals>.FakeRunner.__init__   s    $$d^4r   c                 >   > U R                   R                  U5        T$ r   )runArgsr   )r   rH   r@   s     r   rx   9TestBreak.testMainInstallsHandler.<locals>.FakeRunner.run   s    ##D)r   rk   N)	__name__
__module____qualname____firstlineno__r   r   r   rx   __static_attributes__)r@   s   r   
FakeRunnerr      s    HG5 r   r   c                   (   > \ rS rSrU UUU4S jrSrg)2TestBreak.testMainInstallsHandler.<locals>.Program   c                    > SU l         TU l        TU l        Xl        SU l        TU l        TU l        S U l        S U l        g )NF)	exit	verbosityfailfast
catchbreak	tb_localsr{   rH   r@   	durations)r   r   r   r   rH   r   s     r   r   ;TestBreak.testMainInstallsHandler.<locals>.Program.__init__   s@    !	!* (",!&", 	"!%r   )	r   r   r   r   r@   r   rH   r{   r   N)r   r   r   r   r   r   )r   r   rH   r   s   r   Programr      s    	& 	&r   r   Frk   )bufferr   r   r   warningsr   T)objectr   r   r   r   TestProgramrunTestsr_   r   r   r@   r/   )	r   r6   r   pr   r   r@   rH   r   s	       @@@@@r   testMainInstallsHandler!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                    [         R                  " [         R                  5      n[        R                  " 5         [        R
                  " 5         U R                  [         R                  " [         R                  5      U5        [        R
                  " 5         U R                  [         R                  " [         R                  5      U5        g r   )r   r   r   r   r.   removeHandlerr_   )r   r6   s     r   testRemoveHandlerTestBreak.testRemoveHandler  sz     **6==9! ))&--8/J 	 ))&--8/Jr   c                 $  ^ ^ [         R                  " [         R                  5      m[        R                  " 5         [        R
                  UU 4S j5       nU" 5         T R                  [         R                  " [         R                  5      T5        g )Nc                  n   > TR                  [        R                  " [        R                  5      T 5        g r   )r_   r   r   r   )r6   r   s   r   rH   4TestBreak.testRemoveHandlerAsDecorator.<locals>.test  s"    V--fmm<oNr   )r   r   r   r   r.   r   r/   )r   rH   r6   s   ` @r   testRemoveHandlerAsDecorator&TestBreak.testRemoveHandlerAsDecorator  sc     **6==9!				O 
 	O 	F,,V]];_Mr   )r   r   )r   r   r   r   r   r%   r   r   r*   r8   rA   rO   r[   rf   rq   r{   r   r   r   r   r   r   rk   r   r   r   r      s`     K O;
3(*D*(0(2(2(29
!,$8NtK	Nr   r   c                   ,    \ rS rSr\R
                  rSrg)TestBreakDefaultIntHandleri$  rk   N)r   r   r   r   r   default_int_handlerr   r   rk   r   r   r   r   $  s     ,,Kr   r   c                   ,    \ rS rSr\R
                  rSrg)TestBreakSignalIgnoredi)  rk   N)r   r   r   r   r   rY   r   r   rk   r   r   r   r   )       ..Kr   r   c                   ,    \ rS rSr\R
                  rSrg)TestBreakSignalDefaulti.  rk   N)r   r   r   r   r   SIG_DFLr   r   rk   r   r   r   r   .  r   r   r   __main__)r   rv   r0   sysr   r   r   rH   r   
skipUnlesshasattrskipIfplatformTestCaser   r   r   r   r   mainrk   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MMO r   