
    /hh<&                        S SK Jr  S SKJr  S SKJr  S SKJr  S SKJ	r	  S SK
Jr  S SKrS SKJr  S S	KJrJr   \" S
5      r " S S5      r " S S\R&                  5      r " S S\R&                  5      r " S S\R&                  5      r " S S\R&                  5      r " S S\R&                  \5      r " S S\R&                  5      r\S:X  a  \R6                  " SS9  gg)    debugger)
namedtuple)dedent)Tk)requires)ExtraAssertionsN)mock)Mockpatchz9
    i = 1
    i += 2
    if i == 3:
       print(i)
    c                       \ rS rSrS rSrg)	MockFrame   c                     Xl         X l        g Nf_codef_lineno)selfcodelinenos      H/opt/python-3.13.8/usr/lib/python3.13/idlelib/idle_test/test_debugger.py__init__MockFrame.__init__   s        r   N__name__
__module____qualname____firstlineno__r   __static_attributes__ r   r   r   r      s    r   r   c                   6    \ rS rSr\S 5       rS rS rS rSr	g)IdbTest"   c                     [        5       U l        [        R                  " U R                  5      U l        [        [        SSS9n[        US5      nS Ul        [        US5      nX#l        X0l	        SU l
        g )Nzidlelib/file.pyexecmode      zfile.py:2: <module>())r   guir   Idbidbcompile	TEST_CODEr   f_backframemsg)clscode_objframe1frame2s       r   
setUpClassIdbTest.setUpClass$   s`    &,,sww' 9&7fE8Q'8Q'	)r   c                 d    U R                  U R                  R                  U R                  5        g r   )assertIsr.   r,   r   s    r   	test_initIdbTest.test_init2   s    dhhllDHH-r   c                     [        5       U R                  l        U R                  R	                  U R
                  5        U R                  R                  R                  U R                  U R
                  5        g r   )r   r,   interactionr.   	user_liner2   assert_called_once_withr3   r<   s    r   test_user_lineIdbTest.test_user_line6   sH    #v4::&44TXXtzzJr   c                 ,   [        [        5      [        5       S 4n[        5       U R                  l        U R
                  R                  U R                  U5        U R                  R                  R                  U R                  U R                  U5        g r   )
type
ValueErrorr   r,   r@   r.   user_exceptionr2   rB   r3   )r   exc_infos     r   test_user_exceptionIdbTest.test_user_exception<   sb    $jlD9#v

H544$**h	0r   r"   N)
r   r   r   r    classmethodr8   r=   rC   rJ   r!   r"   r   r   r$   r$   "   s$    * *.K0r   r$   c                       \ rS rSrS rSrg)FunctionTestE   c                 b   [        [        SSS9n[        US5      nX"l        U R	                  [
        R                  " U5      5        U R                  [
        R                  " U5      S5        [        [        SSS9n[        US5      nS Ul        U R                  [
        R                  " U5      5        U R                  [
        R                  " U5      S5        XDl        U R                  [
        R                  " U5      5        X$l        U R	                  [
        R                  " U5      5        g )	Nzrpc.pyr'   r(   r+   zrpc.py:2: <module>()zidlelib/debugger.pyr*   zdebugger.py:1: <module>())
r/   r0   r   r1   
assertTruer   _in_rpc_codeassertEqual_frame2messageassertFalse)r   rpc_obj	rpc_framer5   
code_frames        r   test_functionsFunctionTest.test_functionsH   s    )H6:gq)	$--i8900;/	1 9&;&Ix+
 
..z:;00<4	6 '..z:;%--j9:r   r"   N)r   r   r   r    rY   r!   r"   r   r   rN   rN   E   s    ;r   rN   c                   Z    \ rS rSr\S 5       rS rS rS rS r	S r
S rS	 rS
 rS rSrg)DebuggerTest]   c                    [        5       U l        [        5       U R                  l        [        5       U l        [        R
                  " [        R                  S5         [        R                  " U R                  U R                  5      U l        S S S 5        [        5       U R                  l        g ! , (       d  f       N(= f)Nmake_gui)r   pyshellrootr.   r   objectr   Debuggerr4   s    r   r8   DebuggerTest.setUpClass`   sn    f6&\\(++Z8#,,S[[#''BCL 9 F 98s   1B00
B>c                     U R                   R                  5         U R                  R                  R	                  5         g r   )r   contr.   set_continueassert_called_oncer<   s    r   	test_contDebuggerTest.test_conti   s(    002r   c                     U R                   R                  5         U R                  R                  R	                  5         g r   )r   stepr.   set_stepri   r<   s    r   	test_stepDebuggerTest.test_stepm   (    ,,.r   c                     U R                   R                  5         U R                  R                  R	                  5         g r   )r   quitr.   set_quitri   r<   s    r   	test_quitDebuggerTest.test_quitq   rq   r   c                     [         R                  " U R                  S5       nU R                  R                  5         U R                  R
                  R                  U5        S S S 5        g ! , (       d  f       g = fNr2   )r   rb   r   nextr.   set_nextrB   r   r2   s     r   	test_nextDebuggerTest.test_nextu   sJ    \\$--1UMM HH55e< 211   A A++
A9c                     [         R                  " U R                  S5       nU R                  R                  5         U R                  R
                  R                  U5        S S S 5        g ! , (       d  f       g = frx   )r   rb   r   retr.   
set_returnrB   r{   s     r   test_retDebuggerTest.test_retz   sJ    \\$--1UMMHH77> 211r~   c                     U R                   R                  SS5        U R                  R                  R	                  SS5        g )Ntest.py   )r   clear_breakpointr.   clear_breakrB   r<   s    r   test_clear_breakpoint"DebuggerTest.test_clear_breakpoint   s0    &&y!444YBr   c                     U R                   R                  S5        U R                  R                  R	                  S5        g )Nr   )r   clear_file_breaksr.   clear_all_file_breaksrB   r<   s    r   test_clear_file_breaks#DebuggerTest.test_clear_file_breaks   s,    ''	2&&>>yIr   c                   ^ [        SS5      m " U4S jS[        5      n[        5       U R                  l        U" SSS/5      U" S/ SQ5      4U R                  R                  l        U R                  R                  S	S
5        U R                  R                  R                  S	S
5        U R                  R                  5         U R                  R                  R                  [        R                  " S	S
5      [        R                  " SS5      [        R                  " SS5      [        R                  " SS5      [        R                  " SS5      [        R                  " SS5      /5        g )NFileIOfilenamec                   "   > \ rS rSrU 4S jrSrg)>DebuggerTest.test_set_load_breakpoints.<locals>.MockEditWindow   c                 ,   > T" U5      U l         X l        g r   )iobreakpoints)r   fnr   r   s      r   r   GDebuggerTest.test_set_load_breakpoints.<locals>.MockEditWindow.__init__   s     *#. r   )r   r   Nr   )r   s   r   MockEditWindowr      s    / /r   r   ztest1.pyr   ztest2.py)   ,   -   ztest0.pyr*   r   r   r   )r   rb   r   r`   flistinversedictr   set_breakpointr.   	set_breakrB   load_breakpointsassert_has_callsr
   call)r   r   r   s     @r   test_set_load_breakpoints&DebuggerTest.test_set_load_breakpoints   s   Hj1	/V 	/
 "V:1v.:|4*
& 	$$Z322:qA&&(++YYz1%YYz1%YYz1%YYz2&YYz2&YYz2&(	)r   c                 l   [        [        SS5      n[        US5      nX R                  l        [        5       U R                  l        [        SSS9   U R                  R                  5         S S S 5        U R                  R                  R                  R                  SS5        g ! , (       d  f       N?= f)Nztest_sync.pyr'   r*   zidlelib.debugger.os.path.existsTreturn_value)r/   r0   r   r   r2   r   r   r   sync_source_linegotofilelinerB   )r   	test_code
test_frames      r   test_sync_source_line"DebuggerTest.test_sync_source_line   s    I~v>	y!,
("f44HMM**, I((@@QRS IHs   B%%
B3r"   N)r   r   r   r    rL   r8   rj   ro   ru   r|   r   r   r   r   r   r!   r"   r   r   r\   r\   ]   sF     # #3//=
?
CJ)2	Tr   r\   c                   R    \ rS rSr\S 5       r\S 5       rS rS rS r	S r
S rS	rg
)DebuggerGuiTest   c                     [        S5        [        5       =U l        nUR                  5         [	        5       U l        XR
                  l        [	        5       U l        g Nr,   )r   r   ra   withdrawr   r`   r.   )r4   ra   s     r   r8   DebuggerGuiTest.setUpClass   s<    $4f&r   c                 <    U R                   R                  5         U ? g r   ra   destroyrd   s    r   tearDownClassDebuggerGuiTest.tearDownClass       Hr   c                     [         R                  " U R                  U R                  5      U l         U R                  U R                   l        g r   )r   rc   r`   r.   ra   r<   s    r   setUpDebuggerGuiTest.setUp   s.     ))$,,A!YYr   c                     U R                   R                  SS5        U R                  R                  R                  SS5        U R	                  U R                   R
                  S5        g )Nr*   twor   )r   runr.   rB   rS   interactingr<   s    r   test_run_debugger!DebuggerGuiTest.test_run_debugger   sH    !U#,,Q622A6r   c                     U R                   R                  5         U R                  R                  R	                  5         g r   )r   closer`   close_debuggerri   r<   s    r   
test_closeDebuggerGuiTest.test_close   s(    ##668r   c                     U R                   R                  5         U R                  U R                   R                  R                  U R                   5        g r   )r   
show_stackrS   stackviewerr,   r<   s    r   test_show_stackDebuggerGuiTest.test_show_stack   s6      "2266Fr   c                    [        S S 5      nXR                  l        S U R                  l        / S4U R                  R
                  l        U R                  R                  5         U R                  U R                  R                  R                  U R                  5        U R                  R
                  R                  US 5        g )Nr   )r   r   r2   r   r.   	get_stackr   r   rS   r,   rB   )r   r   s     r   test_show_stack_with_frame*DebuggerGuiTest.test_show_stack_with_frame   s    tT*
( %)!+-q''  " 	2266F22:tDr   r   N)r   r   r   r    rL   r8   r   r   r   r   r   r   r!   r"   r   r   r   r      sE        '7
9
GEr   r   c                   L    \ rS rSr\S 5       r\S 5       rS rS rS r	S r
Srg	)
StackViewerTest   c                 l    [        S5        [        5       U l        U R                  R                  5         g r   r   r   ra   r   rd   s    r   r8   StackViewerTest.setUpClass   "    4r   c                 <    U R                   R                  5         U ? g r   r   rd   s    r   r   StackViewerTest.tearDownClass   r   r   c                 2   [        [        SS5      U l        [        U R                  S5      S4[        U R                  S5      S4/U l        [
        R                  " U R                  S S 5      U l        U R                  R                  U R                  5        g )Ntest_stackviewer.pyr'   r*   r+   )
r/   r0   r   r   stackr   StackViewerra   sv
load_stackr<   s    r   r   StackViewerTest.setUp   st    I'<fE	tyy!$a(tyy!$a(


 &&tyy$=4::&r   c                 v    S nS nU R                   n[        R                  " X2U5      nU R                  US5        g )Nr   )ra   r   r   assertHasAttr)r   r,   r   master_windowr   s        r   r=   StackViewerTest.test_init   s7    		!!-<2w'r   c                    U R                  U R                  R                  U R                  5        U R                  SU R                  R	                  S5      ;   5        U R                  U R                  R	                  S5      S5        g )Nz?.<module>(), line 1:r   r*   z?.<module>(), line 2: )rS   r   r   rQ   getr<   s    r   test_load_stackStackViewerTest.test_load_stack  s[     	

3/477;;q>ABQ)ABr   c                 4   [        5       U R                  l        [        SSS9 nU R                  R	                  S5        UR                  S5        U R                  R                  R                  R                  S5        S S S 5        g ! , (       d  f       g = f)Nzidlelib.debugger.os.path.isfileTr   r*   r   )r   r   r   r   show_sourcerB   open)r   isfiles     r   test_show_source StackViewerTest.test_show_source  si     44HFGG"**+@AGGMM667LM IHHs   AB		
B)r   r   r   N)r   r   r   r    rL   r8   r   r   r=   r   r   r!   r"   r   r   r   r      s>     
  '(CNr   r   c                   :    \ rS rSr\S 5       r\S 5       rS rSrg)NameSpaceTesti  c                 l    [        S5        [        5       U l        U R                  R                  5         g r   r   rd   s    r   r8   NameSpaceTest.setUpClass  r   r   c                 <    U R                   R                  5         U ? g r   r   rd   s    r   r   NameSpaceTest.tearDownClass   r   r   c                 F    [         R                  " U R                  S5        g )NTest)r   NamespaceViewerra   r<   s    r   r=   NameSpaceTest.test_init%  s      F3r   r"   N)	r   r   r   r    rL   r8   r   r=   r!   r"   r   r   r   r     s-     
  4r   r   __main__r+   )	verbosity)idlelibr   collectionsr   textwrapr   tkinterr   test.supportr   test.support.testcaser	   unittestr
   unittest.mockr   r   r0   r   TestCaser$   rN   r\   r   r   r   r   mainr"   r   r   <module>r	     s     "   ! 1   % /  		  0h  0F;8$$ ;0LT8$$ LT^8Eh'' 8Ev.Nh'' .Nb4H%% 4" zMMA r   