Ë
    #´˜j<&  ã                   óÊ  — d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlZdd	lmZ dd
lmZmZ 	  ed«      Z G d„ d«      Z G d„ dej(                  «      Z G d„ dej(                  «      Z G d„ dej(                  «      Z G d„ dej(                  «      Z G d„ dej(                  e«      Z G d„ dej(                  «      Zedk(  r ej8                  d¬«       yy)zeTest debugger, coverage 66%

Try to make tests pass with draft bdbx, which may replace bdb in 3.13+.
é    )Údebugger)Ú
namedtuple)Údedent)ÚTk)Úrequires)ÚExtraAssertionsN)Úmock)ÚMockÚpatchz9
    i = 1
    i += 2
    if i == 3:
       print(i)
    c                   ó   — e Zd ZdZd„ Zy)Ú	MockFramezMinimal mock frame.c                 ó    — || _         || _        y ©N)Úf_codeÚf_lineno)ÚselfÚcodeÚlinenos      ú1lib/python3.12/idlelib/idle_test/test_debugger.pyÚ__init__zMockFrame.__init__   s   € ØˆŒØˆ�ó    N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   © r   r   r   r      s
   „ Ùór   r   c                   ó.   — e Zd Zed„ «       Zd„ Zd„ Zd„ Zy)ÚIdbTestc                 óö   — t        «       | _        t        j                  | j                  «      | _        t        t        dd¬«      }t        |d«      }d |_        t        |d«      }||_        || _	        d| _
        y )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   Ú
setUpClasszIdbTest.setUpClass$   sd   € ä“&ˆŒÜ—,‘,˜sŸw™wÓ'ˆŒô œ9Ð&7¸fÔEˆÜ˜8 QÓ'ˆØˆŒÜ˜8 QÓ'ˆØˆŒØˆŒ	Ø)ˆ�r   c                 ód   — | j                  | j                  j                  | j                  «       y r   )ÚassertIsr'   r%   ©r   s    r   Ú	test_initzIdbTest.test_init2   s   € Ø�‰�d—h‘h—l‘l D§H¡HÕ-r   c                 óô   — t        «       | j                  _        | j                  j	                  | j
                  «       | j                  j                  j                  | j                  | j
                  «       y r   )r
   r%   Úinteractionr'   Ú	user_liner+   Úassert_called_once_withr,   r4   s    r   Útest_user_linezIdbTest.test_user_line6   sH   € ä#›vˆ�‰ÔØ�‰×Ñ˜4Ÿ:™:Ô&Ø�‰×Ñ×4Ñ4°T·X±X¸t¿z¹zÕJr   c                 ó,  — t        t        «      t        «       d f}t        «       | j                  _        | j
                  j                  | j                  |«       | j                  j                  j                  | j                  | j                  |«       y r   )
ÚtypeÚ
ValueErrorr
   r%   r7   r'   Úuser_exceptionr+   r9   r,   )r   Úexc_infos     r   Útest_user_exceptionzIdbTest.test_user_exception<   sb   € äœÓ$¤j£l°DÐ9ˆÜ#›vˆ�‰ÔØ�‰×Ñ §
¡
¨HÔ5Ø�‰×Ñ×4Ñ4Ø—‘˜$Ÿ*™* hõ	0r   N)r   r   r   Úclassmethodr1   r5   r:   r@   r   r   r   r   r   "   s$   „ àñ*ó ð*ò.òKó0r   r   c                   ó   — e Zd Zd„ Zy)ÚFunctionTestc                 óh  — t        t        dd¬«      }t        |d«      }||_        | j	                  t        j                  |«      «       | j                  t        j                  |«      d«       t        t        dd¬«      }t        |d«      }d |_        | j                  t        j                  |«      «       | j                  t        j                  |«      d«       ||_        | j                  t        j                  |«      «       ||_        | j	                  t        j                  |«      «       y )	Nzrpc.pyr    r!   r$   zrpc.py:2: <module>()zidlelib/debugger.pyr#   zdebugger.py:1: <module>())
r(   r)   r   r*   Ú
assertTruer   Ú_in_rpc_codeÚassertEqualÚ_frame2messageÚassertFalse)r   Úrpc_objÚ	rpc_framer.   Ú
code_frames        r   Útest_functionszFunctionTest.test_functionsH   s÷   € Üœ) H°6Ô:ˆÜ˜g qÓ)ˆ	Ø$ˆ	ÔØ�‰œ×-Ñ-¨iÓ8Ô9Ø×Ñœ×0Ñ0°Ó;Ø/ô	1ô œ9Ð&;À&ÔIˆÜ˜x¨Ó+ˆ
Ø ˆ
ÔØ×Ñœ×.Ñ.¨zÓ:Ô;Ø×Ñœ×0Ñ0°Ó<Ø4ô	6ð 'ˆ
ÔØ×Ñœ×.Ñ.¨zÓ:Ô;Ø%ˆ
ÔØ�‰œ×-Ñ-¨jÓ9Õ:r   N)r   r   r   rM   r   r   r   rC   rC   E   s   „ ó;r   rC   c                   óV   — e Zd ZdZed„ «       Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d„ Zd	„ Zd
„ Zd„ Zy)ÚDebuggerTestz0Tests for Debugger that do not need a real root.c                 ót  — t        «       | _        t        «       | j                  _        t        «       | _        t	        j
                  t        j                  d«      5  t        j                  | j                  | j                  «      | _        d d d «       t        «       | j                  _        y # 1 sw Y   Œ#xY w)NÚmake_gui)r
   ÚpyshellÚrootr'   r   Úobjectr   ÚDebugger©r-   s    r   r1   zDebuggerTest.setUpClass`   sn   € ä“fˆŒÜ›6ˆ�‰ÔÜ“&ˆŒÜ�\‰\œ(×+Ñ+¨ZÕ8Ü#×,Ñ,¨S¯[©[¸#¿'¹'ÓBˆCŒL÷ 9ä ›Fˆ�‰Õ÷ 9Ð8ús   Á0B.Â.B7c                 ó€   — | j                   j                  «        | j                  j                  j	                  «        y r   )r   Úcontr'   Úset_continueÚassert_called_oncer4   s    r   Ú	test_contzDebuggerTest.test_conti   s(   € Ø�‰×ÑÔØ�‰×Ñ×0Ñ0Õ2r   c                 ó€   — | j                   j                  «        | j                  j                  j	                  «        y r   )r   Ústepr'   Úset_steprZ   r4   s    r   Ú	test_stepzDebuggerTest.test_stepm   ó(   € Ø�‰×ÑÔØ�‰×Ñ×,Ñ,Õ.r   c                 ó€   — | j                   j                  «        | j                  j                  j	                  «        y r   )r   Úquitr'   Úset_quitrZ   r4   s    r   Ú	test_quitzDebuggerTest.test_quitq   r`   r   c                 óì   — t        j                  | j                  d«      5 }| j                  j                  «        | j                  j
                  j                  |«       d d d «       y # 1 sw Y   y xY w©Nr+   )r   rT   r   Únextr'   Úset_nextr9   ©r   r+   s     r   Ú	test_nextzDebuggerTest.test_nextu   sJ   € Ü�\‰\˜$Ÿ-™-¨Ô1°UØ�M‰M×ÑÔ Ø�H‰H×Ñ×5Ñ5°eÔ<÷ 2×1Ñ1úó   ¡A A*Á*A3c                 óì   — t        j                  | j                  d«      5 }| j                  j                  «        | j                  j
                  j                  |«       d d d «       y # 1 sw Y   y xY wrf   )r   rT   r   Úretr'   Ú
set_returnr9   ri   s     r   Útest_retzDebuggerTest.test_retz   sJ   € Ü�\‰\˜$Ÿ-™-¨Ô1°UØ�M‰M×ÑÔØ�H‰H×Ñ×7Ñ7¸Ô>÷ 2×1Ñ1úrk   c                 óˆ   — | j                   j                  dd«       | j                  j                  j	                  dd«       y )Nútest.pyé   )r   Úclear_breakpointr'   Úclear_breakr9   r4   s    r   Útest_clear_breakpointz"DebuggerTest.test_clear_breakpoint   s0   € Ø�‰×&Ñ& y°!Ô4Ø�‰×Ñ×4Ñ4°YÀÕBr   c                 ó„   — | j                   j                  d«       | j                  j                  j	                  d«       y )Nrq   )r   Úclear_file_breaksr'   Úclear_all_file_breaksr9   r4   s    r   Útest_clear_file_breaksz#DebuggerTest.test_clear_file_breaksƒ   s,   € Ø�‰×'Ñ'¨	Ô2Ø�‰×&Ñ&×>Ñ>¸yÕIr   c                 óÎ  ‡— t        dd«      Š G ˆfd„dt        «      }t        «       | j                  _         |dddg«       |dg d¢«      f| j                  j                  _        | j                  j                  d	d
«       | j                  j                  j                  d	d
«       | j                  j                  «        | j                  j                  j                  t        j                  d	d
«      t        j                  dd«      t        j                  dd«      t        j                  dd«      t        j                  dd«      t        j                  dd«      g«       y )NÚFileIOÚfilenamec                   ó   •— e Zd Zˆ fd„Zy)ú>DebuggerTest.test_set_load_breakpoints.<locals>.MockEditWindowc                 ó.   •—  ‰|«      | _         || _        y r   )ÚioÚbreakpoints)r   Úfnr�   r{   s      €r   r   zGDebuggerTest.test_set_load_breakpoints.<locals>.MockEditWindow.__init__Œ   s   ø€ Ù  ›*�”Ø#.�Õ r   N)r   r   r   r   )r{   s   €r   ÚMockEditWindowr~   ‹   s   ø„ õ/r   rƒ   ztest1.pyrr   ztest2.py)é   é,   é-   ztest0.pyr#   r„   r…   r†   )r   rT   r
   rR   ÚflistÚinversedictr   Úset_breakpointr'   Ú	set_breakr9   Úload_breakpointsÚassert_has_callsr	   Úcall)r   rƒ   r{   s     @r   Útest_set_load_breakpointsz&DebuggerTest.test_set_load_breakpoints‡   s  ø€ ä˜H jÓ1ˆö	/œVô 	/ô
 "›Vˆ�‰Ôá˜:¨¨1 vÓ.Ù˜:¢|Ó4ð*
ˆ�‰×ÑÔ&ð 	�‰×$Ñ$ Z°Ô3Ø�‰×Ñ×2Ñ2°:¸qÔAØ�‰×&Ñ&Ô(Ø�‰×Ñ×+Ñ+Ü�Y‰Y�z 1Ó%Ü�Y‰Y�z 1Ó%Ü�Y‰Y�z 1Ó%Ü�Y‰Y�z 2Ó&Ü�Y‰Y�z 2Ó&Ü�Y‰Y�z 2Ó&ð(õ	)r   c                 ój  — t        t        dd«      }t        |d«      }|| j                  _        t        «       | j                  _        t        dd¬«      5  | j                  j                  «        d d d «       | j                  j                  j                  j                  dd«       y # 1 sw Y   Œ:xY w)Nztest_sync.pyr    r#   zidlelib.debugger.os.path.existsT©Úreturn_value)r(   r)   r   r   r+   r
   r‡   r   Úsync_source_lineÚgotofileliner9   )r   Ú	test_codeÚ
test_frames      r   Útest_sync_source_linez"DebuggerTest.test_sync_source_line    s‚   € äœI ~°vÓ>ˆ	Ü˜y¨!Ó,ˆ
Ø(ˆ�‰Ôä"›fˆ�‰ÔÜÐ4À4ÖHØ�M‰M×*Ñ*Ô,÷ Ià�‰×Ñ×(Ñ(×@Ñ@ÀÐQRÕS÷ IÐHús   ÁB)Â)B2N)r   r   r   r   rA   r1   r[   r_   rd   rj   ro   ru   ry   rŽ   r–   r   r   r   rO   rO   ]   sG   „ Ù6àñ#ó ð#ò3ò/ò/ò=ò
?ò
CòJò)ó2	Tr   rO   c                   óN   — e Zd ZdZed„ «       Zed„ «       Zd„ Zd„ Zd„ Z	d„ Z
d„ Zy	)
ÚDebuggerGuiTestzbTests for debugger.Debugger that need tk root.

    close needs debugger.top set in make_gui.
    c                 óº   — t        d«       t        «       x| _        }|j                  «        t	        «       | _        || j
                  _        t	        «       | _        y ©Nr%   )r   r   rS   Úwithdrawr
   rR   r'   )r-   rS   s     r   r1   zDebuggerGuiTest.setUpClass²   s>   € ä�ŒÜ›$ÐˆŒ�4Ø�‰ŒÜ“fˆŒØˆ�‰ÔÜ“&ˆ�r   c                 ó<   — | j                   j                  «        | ` y r   ©rS   ÚdestroyrV   s    r   ÚtearDownClasszDebuggerGuiTest.tearDownClassÀ   ó   € à�‰×ÑÔØ‰Hr   c                 ó˜   — t        j                  | j                  | j                  «      | _         | j                  | j                   _        y r   )r   rU   rR   r'   rS   r4   s    r   ÚsetUpzDebuggerGuiTest.setUpÅ   s.   € Ü ×)Ñ)¨$¯,©,¸¿¹ÓAˆŒØ!ŸY™Yˆ�‰Õr   c                 óÔ   — | j                   j                  dd«       | j                  j                  j                  dd«       | j	                  | j                   j
                  d«       y )Nr#   Útwor   )r   Úrunr'   r9   rG   Úinteractingr4   s    r   Útest_run_debuggerz!DebuggerGuiTest.test_run_debuggerË   sH   € Ø�‰×Ñ˜!˜UÔ#Ø�‰�‰×,Ñ,¨Q°Ô6Ø×Ñ˜Ÿ™×2Ñ2°AÕ6r   c                 ó€   — | j                   j                  «        | j                  j                  j	                  «        y r   )r   ÚcloserR   Úclose_debuggerrZ   r4   s    r   Ú
test_closezDebuggerGuiTest.test_closeÐ   s(   € à�‰×ÑÔØ�‰×#Ñ#×6Ñ6Õ8r   c                 ó¬   — | j                   j                  «        | j                  | j                   j                  j                  | j                   «       y r   )r   Ú
show_stackrG   Ústackviewerr%   r4   s    r   Útest_show_stackzDebuggerGuiTest.test_show_stackÕ   s6   € Ø�‰× Ñ Ô"Ø×Ñ˜Ÿ™×2Ñ2×6Ñ6¸¿¹ÕFr   c                 óŽ  — t        d d «      }|| j                  _        d | j                  _        g df| j                  j
                  _        | j                  j                  «        | j                  | j                  j                  j                  | j                  «       | j                  j
                  j                  |d «       y )Nr   )r   r   r+   r®   r'   Ú	get_stackr‘   r­   rG   r%   r9   )r   r•   s     r   Útest_show_stack_with_framez*DebuggerGuiTest.test_show_stack_with_frameÙ   sŽ   € Ü˜t TÓ*ˆ
Ø(ˆ�‰Ôð %)ˆ�‰Ô!Ø+-¨q¨'ˆ�‰×ÑÔ'Ø�‰× Ñ Ô"ð 	×Ñ˜Ÿ™×2Ñ2×6Ñ6¸¿¹ÔFØ�‰×Ñ×2Ñ2°:¸tÕDr   N)r   r   r   r   rA   r1   rŸ   r¢   r§   r«   r¯   r²   r   r   r   r˜   r˜   ¬   sJ   „ ñð
 ñó ðð ñó ðò'ò7ò
9ò
GóEr   r˜   c                   óD   — e Zd Zed„ «       Zed„ «       Zd„ Zd„ Zd„ Zd„ Z	y)ÚStackViewerTestc                 ól   — t        d«       t        «       | _        | j                  j                  «        y rš   ©r   r   rS   r›   rV   s    r   r1   zStackViewerTest.setUpClassé   ó"   € ä�ŒÜ“4ˆŒØ�‰×ÑÕr   c                 ó<   — | j                   j                  «        | ` y r   r�   rV   s    r   rŸ   zStackViewerTest.tearDownClassï   r    r   c                 ó0  — t        t        dd«      | _        t        | j                  d«      dft        | j                  d«      dfg| _        t        j                  | j                  d d «      | _        | j                  j                  | j                  «       y )Nútest_stackviewer.pyr    r#   r$   )
r(   r)   r   r   Ústackr   ÚStackViewerrS   ÚsvÚ
load_stackr4   s    r   r¢   zStackViewerTest.setUpô   st   € ÜœIÐ'<¸fÓEˆŒ	ä�t—y‘y !Ó$ aÐ(Ü�t—y‘y !Ó$ aÐ(ð
ˆŒ
ô
 ×&Ñ& t§y¡y°$¸Ó=ˆŒØ�‰×Ñ˜4Ÿ:™:Õ&r   c                 óv   — d }d }| j                   }t        j                  |||«      }| j                  |d«       y )Nr»   )rS   r   r¼   ÚassertHasAttr)r   r%   r‡   Úmaster_windowr½   s        r   r5   zStackViewerTest.test_initþ   s9   € àˆØˆØŸ	™	ˆÜ×!Ñ! -°¸Ó<ˆØ×Ñ˜2˜wÕ'r   c                 ó  — | j                  | j                  j                  | j                  «       | j                  d| j                  j	                  d«      v «       | j                  | j                  j	                  d«      d«       y )Nz?.<module>(), line 1:r   r#   z?.<module>(), line 2: )rG   r½   r»   rE   Úgetr4   s    r   Útest_load_stackzStackViewerTest.test_load_stack  s[   € ð 	×Ñ˜Ÿ™Ÿ™¨¯
©
Ô3Ø�‰Ð/°4·7±7·;±;¸q³>ÐAÔBØ×Ñ˜Ÿ™Ÿ™ Q›Ð)AÕBr   c                 ó0  — t        «       | j                  _        t        dd¬«      5 }| j                  j	                  d«       |j                  d«       | j                  j                  j                  j                  d«       d d d «       y # 1 sw Y   y xY w)Nzidlelib.debugger.os.path.isfileTr�   r#   rº   )r
   r½   r‡   r   Úshow_sourcer9   Úopen)r   Úisfiles     r   Útest_show_sourcez StackViewerTest.test_show_source  si   € ô ›ˆ�‰ŒäÐ4À4ÕHÈFØ�G‰G×Ñ Ô"Ø×*Ñ*Ð+@ÔAØ�G‰G�M‰M×Ñ×6Ñ6Ð7LÔM÷ I×HÑHús   §ABÂBN)
r   r   r   rA   r1   rŸ   r¢   r5   rÄ   rÉ   r   r   r   r´   r´   ç   s>   „ àñó ðð
 ñó ðò'ò(òCóNr   r´   c                   ó2   — e Zd Zed„ «       Zed„ «       Zd„ Zy)ÚNameSpaceTestc                 ól   — t        d«       t        «       | _        | j                  j                  «        y rš   r¶   rV   s    r   r1   zNameSpaceTest.setUpClass  r·   r   c                 ó<   — | j                   j                  «        | ` y r   r�   rV   s    r   rŸ   zNameSpaceTest.tearDownClass   r    r   c                 óD   — t        j                  | j                  d«       y )NÚTest)r   ÚNamespaceViewerrS   r4   s    r   r5   zNameSpaceTest.test_init%  s   € Ü× Ñ  §¡¨FÕ3r   N)r   r   r   rA   r1   rŸ   r5   r   r   r   rË   rË     s-   „ àñó ðð
 ñó ðó4r   rË   Ú__main__r$   )Ú	verbosity)r   Úidlelibr   Úcollectionsr   Útextwrapr   Útkinterr   Útest.supportr   Útest.support.testcaser   Úunittestr	   Úunittest.mockr
   r   r)   r   ÚTestCaser   rC   rO   r˜   r´   rË   r   Úmainr   r   r   Ú<module>rÝ      sÚ   ðñõ
 Ý "Ý Ý å !Ý 1Û Ý ß %à /Ùð ó 	€	÷ñ ô 0ˆh×Ñô  0ôF;�8×$Ñ$ô ;ô0LT�8×$Ñ$ô LTô^8E�h×'Ñ'ô 8Eôv.N�h×'Ñ'¨ô .Nôb4�H×%Ñ%ô 4ð" ˆzÒØ€H‡M�M˜AÖð r   