Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_pdb.cpython-311.opt-2.pyc
�

�Ke*��|�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZddl
mZddlmZddlmZddlmZddlmZGd�d	e��Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d�Z$d�Z%d�Z&d�Z'ej(d��Z)e*de)j+��d�Z,d�Z-d�Z.d�Z/d�Z0d �Z1d!�Z2d"�Z3d#�Z4d$�Z5d%�Z6d&�Z7d'�Z8d(�Z9d)�Z:d*�Z;d+�Z<d,�Z=d-�Z>d.�Z?ej@��Gd/�d0ejA����ZBGd1�d2ejA��ZCd3�ZDeEd4krejF��dSdS)5�N)�	ExitStack�redirect_stdout)�StringIO)�support)�	os_helper)�
_FakeInput)�patchc�"�eZdZ	d�Zd�Zd�ZdS)�PdbTestInputc��||_dS�N)�input)�selfrs  �7/usr/local/apps/python3/lib/python3.11/test/test_pdb.py�__init__zPdbTestInput.__init__s
����
�
�
�c���tj|_t|j��t_ttd��rtj��nd|_dS)N�gettrace)�sys�stdin�
real_stdinrr�hasattrr�
orig_trace�rs r�	__enter__zPdbTestInput.__enter__s@���)����t�z�*�*��	�,3�C��,D�,D�N�#�,�.�.�.�$����rc�l�|jt_|jrtj|j��dSdSr
)rrrr�settrace)r�excs  r�__exit__zPdbTestInput.__exit__"s7���O��	��?�	*��L���)�)�)�)�)�	*�	*rN)�__name__�
__module__�__qualname__rrr�rrrrsG������D����O�O�O�
*�*�*�*�*rrc��dSr
r#r#rr�test_pdb_displayhookr%(s���rc��dSr
r#r#rr�test_pdb_basic_commandsr'Es��R�Rrc�@�ddl}|j���dS)Nr)�bdb�
Breakpoint�clearBreakpoints)r)s r�reset_Breakpointr,�s%���J�J�J��N�#�#�%�%�%�%�%rc��dSr
r#r#rr�test_pdb_breakpoint_commandsr.�s��r�rrc��dSr
r#r#rr�:test_pdb_breakpoints_preserved_across_interactive_sessionsr0Ss��@�@rc��dSr
r#r#rr�test_pdb_pp_repr_excr2�s���rc��dSr
r#r#rr�
do_nothingr4�s���Drc�$�td��dS)N�*)�printr#rr�do_somethingr8�s��	�"�I�I�I�I�Irc��dSr
r#r#rr�test_list_commandsr:�s��\�\rc��dSr
r#r#rr�test_pdb_whatis_commandr<���'�'rc��dSr
r#r#rr�test_pdb_display_commandr?As��/�/rc��dSr
r#r#rr�test_pdb_alias_commandrAs���&�&rc��dSr
r#r#rr�test_pdb_where_commandrD����8�8rc��dSr
r#r#rr�test_post_mortemrG����:�:rc��dSr
r#r#rr�test_pdb_skip_modulesrJ����r�module_to_skipz6def foo_pony(callback): x = 1; callback(); return Nonec��dSr
r#r#rr�#test_pdb_skip_modules_with_callbackrN1r=rc��dSr
r#r#rr� test_pdb_continue_in_bottomframerP\rBrc�b�	ttjdd���|��|��dS)NTF)�nosigint�readrc)�getattr�pdb�Pdb)�method�args  r�
pdb_invokerY�s4���9�G�C�G�T�%�0�0�0�&�9�9�#�>�>�>�>�>rc��dSr
r#r#rr�$test_pdb_run_with_incorrect_argumentr[�s���rc��dSr
r#r#rr�test_pdb_run_with_code_objectr]�rKrc��dSr
r#r#rr�&test_next_until_return_at_return_eventr_�s��=�=rc��dSr
r#r#rr�#test_pdb_next_command_for_generatorra�rErc��dSr
r#r#rr�#test_pdb_next_command_for_coroutinerc,s��5�5rc��dSr
r#r#rr�"test_pdb_next_command_for_asyncgenredrHrc��dSr
r#r#rr�%test_pdb_return_command_for_generatorrg�s��4�4rc��dSr
r#r#rr�%test_pdb_return_command_for_coroutineri�r=rc��dSr
r#r#rr�$test_pdb_until_command_for_generatorrks��)�)rc��dSr
r#r#rr�$test_pdb_until_command_for_coroutinerm.���,�,rc��dSr
r#r#rr�+test_pdb_next_command_in_generator_for_looprp]r=rc��dSr
r#r#rr�!test_pdb_next_command_subiteratorrr�rnrc��dSr
r#r#rr�test_pdb_issue_20766rt�s���rc��dSr
r#r#rr�test_pdb_issue_43318rv�����rc��dSr
r#r#rr�test_pdb_issue_gh_91742ry�s��*�*rc��dSr
r#r#rr�test_pdb_issue_gh_94215r{s��?�?rc��dSr
r#r#rr�test_pdb_issue_gh_101673r}[rwrc�F�eZdZd�Zejejjd��d(d���Z	d(d�Z
d�Zd�Zd�Z
d	�Zd
�Zd�Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d�Z#d�Z$d �Z%d!�Z&d"�Z'e(j)d#���Z*d$�Z+d%�Z,d&�Z-d'S))�PdbTestCasec�B�tjtj��dSr
�r�unlink�TESTFNrs r�tearDownzPdbTestCase.tearDown{������)�*�*�*�*�*rz'PYTHONSAFEPATH changes default sys.pathrc	�@�|�tjd��tjddg|z}tj|t
jt
jt
jitj
�ddi����5}|�t�
|����\}}ddd��n#1swxYwY|ot�|��}|ot�|��}|�|j|d|�d|����||fS)	N�__pycache__�-mrU�PYTHONIOENCODING�utf-8��stdoutr�stderr�envzUnexpected return code
stdout: z	
stderr: )�
addCleanupr�rmtreer�
executable�
subprocess�Popen�PIPE�STDOUT�os�environ�communicate�str�encode�bytes�decode�assertEqual�
returncode)r�pdb_args�commands�expected_returncode�cmd�procr�r�s        r�_run_pdbzPdbTestCase._run_pdb~sc��	
���	�(�-�8�8�8��~�t�U�+�h�6��
�
��!�� �o�!�(�A���A�%7��A�A�
�
�
�	D��!�-�-�c�j�j��.B�.B�C�C�N�F�F�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D��0�E�L�L��0�0���0�E�L�L��0�0������O��I�v�I�I��I�I�	
�	
�	
�
�v�~�s�:1B7�7B;�>B;c��	d}t|d��5}|�tj|����ddd��n#1swxYwY|�t
j|��|�|g||��S)N�main.py�w)�open�write�textwrap�dedentr�rr�r�)r�scriptr�r��filename�fs      r�run_pdb_scriptzPdbTestCase.run_pdb_script�s���A���
�(�C�
 �
 �	-�A�
�G�G�H�O�F�+�+�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-����	�(�(�3�3�3��}�}�h�Z��3F�G�G�Gs�(A�A�Ac��	d|_tj|j��|jdz}|jdz}tj|j��t|d��5}	ddd��n#1swxYwYt|d��5}|�tj|����ddd��n#1swxYwY|�	tj|j��|�
d|jg|��S)N�t_main�/__main__.py�/__init__.pyr�r�)�module_namerr�r��mkdirr�r�r�r�r�r�)rr�r��	main_file�	init_filer�s      r�run_pdb_modulezPdbTestCase.run_pdb_module�sg��6�#������)�*�*�*��$�~�5�	��$�~�5�	�
���!�"�"�"�
�)�S�
!�
!�	�Q��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�)�S�
!�
!�	-�Q�
�G�G�H�O�F�+�+�,�,�,�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-����	�(�$�*:�;�;�;��}�}�d�D�$4�5�x�@�@�@s$�A-�-A1�4A1�(B<�<C�Cc�8�ttjd��5}|�|��ddd��n#1swxYwY|sdn|dtj|df}|�|tj|tj����dS)N�wbr�)r�rr�r�r�rU�
find_function)r�file_content�	func_name�expectedr�s     r�_assert_find_functionz!PdbTestCase._assert_find_function�s���
�)�"�D�
)�
)�	"�Q�
�G�G�L�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"� (�8�4�4��Q�K��)�8�A�;�.8������c�'�	�9�3C�D�D�	F�	F�	F�	F�	F��=�A�Ac�4�|�ddd��dS)Nr�foo)r�rs r�test_find_function_empty_filez)PdbTestCase.test_find_function_empty_file�s ���"�"�3��t�4�4�4�4�4rc�X�|�d���dd��dS)Nu@def foo():
    pass

def bœr():
    pass

def quux():
    pass
�bœr)r���r�r�rs r�test_find_function_foundz$PdbTestCase.test_find_function_found�s:���"�"�	
��F�H�H���
	
�
	
�
	
�
	
�
	
rc�Z�|�d�d��dd��dS)NuV# coding: iso-8859-15
def foo():
    pass

def bœr():
    pass

def quux():
    pass
ziso-8859-15r�)r��r�rs r�-test_find_function_found_with_encoding_cookiez9PdbTestCase.test_find_function_found_with_encoding_cookie�s>���"�"�

��F�=�����	
�	
�	
�	
�	
rc�r�|�tjd���zdd��dS)Nudef bœr():
    pass
r�)r�r�)r��codecs�BOM_UTF8r�rs r�!test_find_function_found_with_bomz-PdbTestCase.test_find_function_found_with_bom�sF���"�"��O���F�H�H�

�
��
	
�	
�	
�	
�	
rc���ttjd��5}|�d��ddd��n#1swxYwYtjddtjg}t
j|tjtjtj	���}|�
|jj��|�
d��\}}|�d|d��dS)	Nr�sprint("testing my pdb")
r�rU�r�rr�squit
sSyntaxErrorz0Got a syntax error running test script under PDB)r�rr�r�rr�r�r�r�r�r�r��closer��assertNotIn�rr�r�r�r�r�s      r�test_issue7964zPdbTestCase.test_issue7964�s��
�)�"�D�
)�
)�	4�Q�
�G�G�2�3�3�3�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4��~�t�U�I�,<�=������?��/��$�����
	
�����)�*�*�*��)�)�)�4�4���������K�	M�	M�	M�	M�	Mr�c��d}d}|�||��\}}|pd|pdz}|�d|d��|�d|d��dS)Nz�
            def do_testcmdwithnodocs(self, arg):
                pass

            import pdb
            pdb.Pdb.do_testcmdwithnodocs = do_testcmdwithnodocs
        zA
            continue
            help testcmdwithnodocs
        ��AttributeErrorzCCalling help on a command with no docs should be handled gracefullyz;*** No help for 'testcmdwithnodocs'; __doc__ string missingz<Calling help on a command with no docs should print an error)r�r��assertIn)rr�r�r�r��outputs      r�test_issue46434zPdbTestCase.test_issue46434�s��������,�,�V�X�>�>�����,�B�6�<�R�0�����)�6�^�	`�	`�	`��
�
�S�U[�T�	V�	V�	V�	V�	Vrc��d}d}d}tdd��5}|�tj|����ddd��n#1swxYwY|�t
jd��|�||��\}}|�td�|�
��D����d��dS)Nz�
            from bar import bar

            def foo():
                bar()

            def nope():
                pass

            def foobar():
                foo()
                nope()

            foobar()
        z�
            from bar import bar
            break bar
            continue
            step
            step
            quit
        z5
            def bar():
                pass
        zbar.pyr�c3�K�|]}d|vV��	dS)zmain.py(5)foo()->NoneNr#��.0�ls  r�	<genexpr>z.PdbTestCase.test_issue13183.<locals>.<genexpr>&s(����J�J��'�1�,�J�J�J�J�J�Jrz+Fail to step into the caller after a return)r�r�r�r�r�rr�r��
assertTrue�any�
splitlines)rr�r��barr�r�r�s       r�test_issue13183zPdbTestCase.test_issue13183s���������(�C�
 �
 �	*�A�
�G�G�H�O�C�(�(�)�)�)�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*�	*����	*�	*�	*�	*����	�(�(�3�3�3��,�,�V�X�>�>��������J�J�f�6G�6G�6I�6I�J�J�J�J�J�9�	;�	;�	;�	;�	;s�(A�A�Ac	�:�ttjd��5}|�t	jd���d����ddd��n#1swxYwYtjdtjg}tj
|tjtjtjitj�ddi����}|�|jj��|�d��\}}|�d	|d
��dS)Nr�a
                import threading
                import pdb

                def start_pdb():
                    pdb.Pdb(readrc=False).set_trace()
                    x = 1
                    y = 1

                t = threading.Thread(target=start_pdb)
                t.start()�ascii�-ur�r�r�scont
�Error�*Got an error running test script under PDB�r�rr�r�r�r�r�rr�r�r�r�r�r�r�r�r�r�r�r�r�s      r�test_issue13120zPdbTestCase.test_issue13120)sN���)�"�D�
)�
)�	/�Q�
�G�G�H�O�
%�
�
�%�f�W�o�o�

/�

/�

/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/��~�t�Y�%5�6������?��/��$�;�2�:�;�1�7�;�;�	����	
�����)�*�*�*��)�)�)�4�4��������6�E�	G�	G�	G�	G�	G��;A"�"A&�)A&c	�:�ttjd��5}|�t	jd���d����ddd��n#1swxYwYtjdtjg}tj
|tjtjtjitj�ddi����}|�|jj��|�d��\}}|�d	|d
��dS)Nr�a�
                import threading
                import pdb

                evt = threading.Event()

                def start_pdb():
                    evt.wait()
                    pdb.Pdb(readrc=False).set_trace()

                t = threading.Thread(target=start_pdb)
                t.start()
                pdb.Pdb(readrc=False).set_trace()
                evt.set()
                t.join()r�r�r�r�r�s
cont
cont
r�r�r�r�s      r�test_issue36250zPdbTestCase.test_issue36250EsL��
�)�"�D�
)�
)�	.�Q�
�G�G�H�O�%���$�V�G�_�_�
.�
.�
.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.�	.����	.�	.�	.�	.� �~�t�Y�%5�6������?��/��$�=�R�Z�=�!3�W�=�=�	����	
�����)�*�*�*��)�)�/�:�:��������6�E�	G�	G�	G�	G�	Gr�c��d}d}d}|�||d���\}}|�||d�||����dS)Nzdef f: pass
r�zSyntaxError:r��r�zE

Expected:
{}
Got:
{}
Fail to handle a syntax error in the debuggee.)r�r��format)rr�r�r�r�r�s      r�test_issue16180zPdbTestCase.test_issue16180csp�� ����!���,�,��H�!�-�
�
����	
�
�
�h��
=�
�V�H�f�
%�
%�	'�	'�	'�	'�	'rc��d}d}|�||��\}}d�d�|���D����}|�|d��|�|d��dS)Nzprint('hello')z[
            continue
            run a b c
            run d e f
            quit
        �
c�6�g|]}|�����Sr#)�strip)r��xs  r�
<listcomp>z/PdbTestCase.test_issue26053.<locals>.<listcomp>zs ��@�@�@�q������@�@�@rz#Restarting .* with arguments:
a b cz#Restarting .* with arguments:
d e f)r��joinr��assertRegex)rr�r�r�r��ress      r�test_issue26053zPdbTestCase.test_issue26053ps���!�����,�,�V�X�>�>�����i�i�@�@�F�,=�,=�,?�,?�@�@�@�A�A������D�E�E�E�����D�E�E�E�E�Erc�$�tjd��}tj�dd��}	tj��5tdd��5}|�d��ddd��n#1swxYwYtdd��5}|�|��ddd��n#1swxYwYtj
dg}tj|tj
tj
tj
���}|5|�d��\}}|�d	|��ddd��n#1swxYwYddd��n#1swxYwY|�|tjd<dSdS#|�|tjd<wxYw)
Nz_
            import pdb; pdb.Pdb(readrc=False).set_trace()

            print('hello')
        �HOME�.pdbrcr�zinvalid
r�r�sq
s(NameError: name 'invalid' is not defined)r�r�r�r��popr�temp_cwdr�r�rr�r�r�r�r�r�)rr��	save_homer�r�r�r�r�s        r�test_readrc_kwargzPdbTestCase.test_readrc_kwarg~s�����"�
�
���J�N�N�6�4�0�0�	�	/��#�%�%�
*�
*��(�C�(�(�)�A��G�G�K�(�(�(�)�)�)�)�)�)�)�)�)�)�)����)�)�)�)��)�S�)�)�$�Q��G�G�F�O�O�O�$�$�$�$�$�$�$�$�$�$�$����$�$�$�$��~�y�1��!�'��%�?�$�/�%�?�	�����*�*�%)�%5�%5�f�%=�%=�N�F�F��$�$�%P�"(�*�*�*�*�*�*�*�*�*�*�*�*�*�*����*�*�*�*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*�
*����
*�
*�
*�
*�(�$�%.��
�6�"�"�"�%�$��y�$�%.��
�6�"�.�.�.�.s��E<�	E�A<�0E�<B	�E�B	�E�B9�-E�9B=	�=E�B=	�A	E�
/E�9E�E		�	E�E		�
E�E<�E � E<�#E �$E<�<Fc��tj�dd��}tj��5}td��5tj�|d��}|tjj_		t|d��5}|�d��ddd��n#1swxYwY|�tj��jdd��|�|tjd<n#|�|tjd<wxYwddd��n#1swxYwYddd��dS#1swxYwYdS)Nrzos.path.expanduserrr��invalidr)r�r�rr�temp_dirr	�pathr��
expanduser�return_valuer�r�r�rUrV�rcLines)rrr	�rc_pathr�s     r�test_readrc_homedirzPdbTestCase.test_readrc_homedir�s����J�N�N�6�4�0�0�	�
�
�
!�
!�		3�X�u�5I�/J�/J�		3�		3��g�l�l�8�X�6�6�G�.5�B�G��+�
3��'�3�'�'�'�1��G�G�I�&�&�&�'�'�'�'�'�'�'�'�'�'�'����'�'�'�'�� � �����!2�1�!5�y�A�A�A��(�)2�B�J�v�&����(�)2�B�J�v�&�2�2�2�2�		3�		3�		3�		3�		3�		3�		3�		3�		3�		3�		3����		3�		3�		3�		3�		3�		3�		3�		3�		3�		3�		3�		3�		3�		3�		3�		3����		3�		3�		3�		3�		3�		3sq�D7�7D�<C=�B.�"C=�.B2�2C=�5B2�65C=�+D�=D�D�D7�D#	�#D7�&D#	�'D7�7D;�>D;c	�|�tjd��}tj�dd��}	tj��5tddd���5}|�d��ddd��n#1swxYwYtddd���5}|�|��ddd��n#1swxYwYtj
dg}d	d
i}tjdkrd|d
<tj
|tjtjtjitj�|����}|5|�d��\}}|�d|��ddd��n#1swxYwYddd��n#1swxYwY|�|tjd<dSdS#|�|tjd<wxYw)NzR
            import pdb; pdb.Pdb().set_trace()
            print('hello')
        rrr�r�)�encodingu	Françaisr�r�r��win32znon-empty-string�PYTHONLEGACYWINDOWSSTDIOr�sc
siUnicodeEncodeError: 'ascii' codec can't encode character '\xe7' in position 21: ordinal not in range(128))r�r�r�r�rrrr�r�rr��platformr�r�r�r�r�)	rr�rr�r�r�r�r�r�s	         r�#test_read_pdbrc_with_ascii_encodingz/PdbTestCase.test_read_pdbrc_with_ascii_encoding�s�����"�
�
���J�N�N�6�4�0�0�	�	/��#�%�%�
b�
b��(�C�'�:�:�:�-�a��G�G�O�,�,�,�-�-�-�-�-�-�-�-�-�-�-����-�-�-�-��)�S�7�;�;�;�$�q��G�G�F�O�O�O�$�$�$�$�$�$�$�$�$�$�$����$�$�$�$��~�y�1��)�7�3���<�7�*�*�6H�C�2�3�!�'��%�?�$�/�%�?�-�2�:�-��-������b�b�%)�%5�%5�f�%=�%=�N�F�F��M�M�#Y�Z`�b�b�b�b�b�b�b�b�b�b�b�b�b�b����b�b�b�b�%
b�
b�
b�
b�
b�
b�
b�
b�
b�
b�
b����
b�
b�
b�
b�0�$�%.��
�6�"�"�"�%�$��y�$�%.��
�6�"�.�.�.�.s��F(�	F�A>�2F�>B	�F�B	�F�B=�1F�=C	�F�C	�A1F�6/E1�%F�1E5	�5F�8E5	�9F�<F(�F�F(�F�F(�(F;c��t��}d}t��5}|�td|����|�tjt
jd����tj|���ddd��n#1swxYwY|�|�	��|dz��dS)Nz"Nobody expects... blah, blah, blahz
sys.stdout�	set_trace)�headerr�)
rr�
enter_contextr	�objectrUrVrr��getvalue)rr�r�	resourcess    r�test_headerzPdbTestCase.test_header�s�������5��
�[�[�	)�I��#�#�E�,��$?�$?�@�@�@��#�#�E�L���+�$F�$F�G�G�G��M��(�(�(�(�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)�	)����	)�	)�	)�	)�	
������*�*�F�T�M�:�:�:�:�:s�A+B�B�Bc��d}d}|�||��\}}|�td�|���D����|��dS)Nzprint("SUCCESS")�/
            continue
            quit
        c3�K�|]}d|vV��	dS��SUCCESSNr#r�s  rr�z.PdbTestCase.test_run_module.<locals>.<genexpr>��&����H�H�q�I��N�H�H�H�H�H�Hr�r�r�r�r��rr�r�r�r�s     r�test_run_modulezPdbTestCase.test_run_module�sf��'�����,�,�V�X�>�>��������H�H�F�4E�4E�4G�4G�H�H�H�H�H�&�Q�Q�Q�Q�Qrc��d}d}|�||��\}}|�td�|���D����|��dS)NzQ
            if __name__ == '__main__':
                print("SUCCESS")
        rc3�K�|]}d|vV��	dSr!r#r�s  rr�z9PdbTestCase.test_module_is_run_as_main.<locals>.<genexpr>�r#rr$r%s     r�test_module_is_run_as_mainz&PdbTestCase.test_module_is_run_as_main�sh�������,�,�V�X�>�>��������H�H�F�4E�4E�4G�4G�H�H�H�H�H�&�Q�Q�Q�Q�Qrc�<�d}d}|�||��\}}|�td�|���D����|��|�t	d�|���D����|��dS)Nz{
            if __name__ == '__main__':
                pass
                print("SUCCESS")
                pass
        z*
            b 3
            quit
        c3�K�|]}d|vV��	dS)zBreakpoint 1 atNr#r�s  rr�z.PdbTestCase.test_breakpoint.<locals>.<genexpr>��(����P�P�q�-��2�P�P�P�P�P�Prc3�K�|]}d|vV��	dSr!r#r�s  rr�z.PdbTestCase.test_breakpoint.<locals>.<genexpr>�s'����L�L�1�I�Q�.�L�L�L�L�L�Lr)r�r�r�r��allr%s     r�test_breakpointzPdbTestCase.test_breakpoint�s��������,�,�V�X�>�>��������P�P�F�<M�<M�<O�<O�P�P�P�P�P�RX�Y�Y�Y�����L�L��8I�8I�8K�8K�L�L�L�L�L�f�U�U�U�U�Urc��d}|�ddg|��\}}|�tj|�dd����dS)Nz(
            c
            quit
        r�rU�
r�)r�r�rU�_usage�replace)rr�r�r�s    r�test_run_pdb_with_pdbz!PdbTestCase.test_run_pdb_with_pdb�s\��������e�}�h�?�?�����
�
��J��N�N�4��$�$�	
�	
�	
�	
�	
rc��d}tj|��|dz}tj|��t	|d��5	ddd��n#1swxYwY|�tj|��|�d|gdd���\}}|�d|�����dS)	Nr�r�r�r�r�r�r�z,ImportError: No module named t_main.__main__)	rr�r�r�r�r�r�r�r�)rr�r�r�r�s     r�test_module_without_a_mainz&PdbTestCase.test_module_without_a_mains
�������%�%�%��.�0�	�
������
�)�S�
!�
!�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����	�(�+�6�6�6����
�;����'�
�
����	
�
�
�D��'�'�)�)�	+�	+�	+�	+�	+s�A�A�Ac��d}d}tj|��|dz|z}tj|��t	|dzd��5	ddd��n#1swxYwY|�tj|��|�d|�dd��gdd	�
��\}}|�d|��dS)N�t_pkgr��/r�r�r��.r�r�r�z;'t_pkg.t_main' is a package and cannot be directly executed)	rr�r��makedirsr�r�r�r3r�)r�pkg_namer��modpathr�r�s      r�test_package_without_a_mainz'PdbTestCase.test_package_without_a_mains���������"�"�"��S�.�;�.��
��G����
�'�N�*�C�
0�
0�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����	�(�(�3�3�3����
�7�?�?�3��,�,�-�r�q�'�
�
����	
�
�
�I��	�	�	�	�	s�A�A�Ac��d}d}|�||��\}}|�td�|���D����|��dS)NzY
                #This is a comment, on line 2

                print("SUCCESS")
        z
            quit
        c3�K�|]}d|vV��	dS)z__main__.py(4)<module>()Nr#r�s  rr�z=PdbTestCase.test_blocks_at_first_code_line.<locals>.<genexpr>-s>����?�?�%&�7� �!�?�?�?�?�?�?rr$r%s     r�test_blocks_at_first_code_linez*PdbTestCase.test_blocks_at_first_code_line#s�����
���,�,�V�X�>�>��������?�?�*0�*;�*;�*=�*=�?�?�?�?�?�@F�	H�	H�	H�	H�	Hrc��d|_tj|j��|jdz}|jdz}|jdz}|�tj|j��t	j|j��t
|d��5}|�tj	d����ddd��n#1swxYwYt
|d��5}|�tj	d����ddd��n#1swxYwYt
|d��5}|�tj	d����ddd��n#1swxYwYd	}|�
d
|jg|��\}}|�td�|�
��D����|��|�td�|�
��D������|�td
�|�
��D������dS)Nr�r�r��
/module.pyr��6
                top_var = "VAR from top"
            z�
                from . import top_var
                from .module import var
                from . import module
                pass # We'll stop here and print the vars
            zY
                var = "VAR from module"
                var2 = "second var"
            zz
            b 5
            c
            p top_var
            p var
            p module.var2
            quit
        r�c3�K�|]}d|vV��	dS�zVAR from moduleNr#r�s  rr�z4PdbTestCase.test_relative_imports.<locals>.<genexpr>Qr,rc3�K�|]}d|vV��	dS)zVAR from topNr#r�s  rr�z4PdbTestCase.test_relative_imports.<locals>.<genexpr>Rs'����M�M�A�N�a�/�M�M�M�M�M�Mrc3�K�|]}d|vV��	dS)z
second varNr#r�s  rr�z4PdbTestCase.test_relative_imports.<locals>.<genexpr>Ss'����K�K�!�L�A�-�K�K�K�K�K�Kr�r�rr�r�r�r�r�r�r�r�r�r�r�r��rr�r��module_filer�r�r��_s        r�test_relative_importsz!PdbTestCase.test_relative_imports0s���#������)�*�*�*��$�~�5�	��$�~�5�	��&��5�����	�(�$�*:�;�;�;�
���!�"�"�"�
�)�S�
!�
!�	�Q�
�G�G�H�O�%���
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��)�S�
!�
!�	�Q�
�G�G�H�O�%���
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��+�s�
#�
#�	�q�
�G�G�H�O�%���
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
���M�M�4��)9�":�H�E�E�	�������P�P�F�<M�<M�<O�<O�P�P�P�P�P�RX�Y�Y�Y�����M�M��9J�9J�9L�9L�M�M�M�M�M�N�N�N�����K�K�v�7H�7H�7J�7J�K�K�K�K�K�L�L�L�L�L�6�
(C�C�C�(D�D�D�+(E�E#�&E#c��d|_tj|j��|jdz}|jdz}|jdz}|�tj|j��t	j|j��t
|d��5}|�tj	d����ddd��n#1swxYwYt
|d��5}|�tj	d����ddd��n#1swxYwYt
|d��5}|�tj	d����ddd��n#1swxYwYd	}|�
d
|jdzg|��\}}|�td�|�
��D����|��dS)
Nr�z	/runme.pyr�rCr�rDzl
                from . import module
                pass # We'll stop here and print the vars
            z5
                var = "VAR from module"
            zQ
            b 3
            c
            p module.var
            quit
        r�z.runmec3�K�|]}d|vV��	dSrFr#r�s  rr�zDPdbTestCase.test_relative_imports_on_plain_module.<locals>.<genexpr>rr,rrIrJs        r�%test_relative_imports_on_plain_modulez1PdbTestCase.test_relative_imports_on_plain_moduleUs���#������)�*�*�*��$�{�2�	��$�~�5�	��&��5�����	�(�$�*:�;�;�;�
���!�"�"�"�
�)�S�
!�
!�	�Q�
�G�G�H�O�%���
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��)�S�
!�
!�	�Q�
�G�G�H�O�%���
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�
�+�s�
#�
#�	�q�
�G�G�H�O�%���
�
�
�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	����M�M�4��)9�H�)D�"E�x�P�P�	�������P�P�F�<M�<M�<O�<O�P�P�P�P�P�RX�Y�Y�Y�Y�YrNc���d�gd���}|�d|dz��\}}|�|���dd�gd���dS)Nr�)zprint(zdebug print(zdebug doesnotexist�c�passr�)
�-> passz+(Pdb) *** SyntaxError: '(' was never closed�!(Pdb) ENTERING RECURSIVE DEBUGGERz%*** SyntaxError: '(' was never closed�LEAVING RECURSIVE DEBUGGERrVz> <string>(1)<module>()z9((Pdb)) *** NameError: name 'doesnotexist' is not definedrW�(Pdb) �r�r�r�r�)rr�r�rLs    r�test_errors_in_commandz"PdbTestCase.test_errors_in_commandts����9�9�
�
�
�����'�'���4��@�@�	�������*�*�,�,�Q�R�R�0�
3
�
3
�
3
�
	�
	�
	�
	�
	rc�D��	�fd�}|dd��|dd��dS)Nc����d�d|��dg��}��d|dz��\}}��|���dd�dd|�d|��d	g��dS)
Nr�zrun �qrTr�rUz(Pdb) *** Cannot run z: rXrY)�bad_arg�msgr�r�rLrs     �r�checkz*PdbTestCase.test_issue34266.<locals>.check�s�����y�y� �w� � ��"���H��+�+�F�H�t�O�D�D�I�F�A����V�.�.�0�0����4��8��8�8�3�8�8��7�
�
�
�
�
r�\zNo escaped character�"zNo closing quotationr#)rr`s` r�test_issue34266zPdbTestCase.test_issue34266�sM���<�
	�
	�
	�
	�
	�	��d�*�+�+�+�
��c�)�*�*�*�*�*rc��	tjd��}d}tj��5}dtj�|����}|�||��\}}|�|�	d��d�
d��|��ddd��dS#1swxYwYdS)N�Q
            import sys
            print('sys.path[0] is', sys.path[0])
        �c
q�(Pdb) sys.path[0] is r��r1)r�r�rrr�r
�realpathr�r��split�rstrip)rr�r��cwdr�r�r�s       r�test_issue42384zPdbTestCase.test_issue42384�s��y���"�
�
����
�
�
!�
!�	K�S�F�r�w�/?�/?��/D�/D�F�F�H�!�0�0���B�B�N�F�F����V�\�\�$�/�/��2�9�9�$�?�?��J�J�J�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	K�	Ks�A>B6�6B:�=B:c���	tjd��}d}tj��5}tj�|��}tj�|d��}tj�|d��}d|��}t	j|��ttj�|d��d��5}|�
|��ddd��n#1swxYwYt	j|��t	jtj�|d��tj�|d����|�tj�dd��g|��\}}	|�
|�d��d	�d
��|��ddd��dS#1swxYwYdS)Nrerf�dir_one�dir_tworg�foo.pyr�r�rhr1)r�r�rrr�r
rir�r�r�r��symlinkr�r�rjrk)
rr�r�rlrorpr�r�r�r�s
          r�test_issue42384_symlinkz#PdbTestCase.test_issue42384_symlink�s$��w���"�
�
����
�
�
!�
!�	K�S��'�"�"�3�'�'�C��g�l�l�3�	�2�2�G��g�l�l�3�	�2�2�G�8�w�8�8�H��H�W�����b�g�l�l�7�H�5�5�s�;�;�
 �q��������
 �
 �
 �
 �
 �
 �
 �
 �
 �
 �
 ����
 �
 �
 �
 ��H�W�����J�r�w�|�|�G�X�6�6�����W�h�8W�8W�X�X�X�!�]�]�B�G�L�L��H�,M�,M�+N�PX�Y�Y�N�F�F����V�\�\�$�/�/��2�9�9�$�?�?��J�J�J�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	K�	Ks7�B'G+�C4�(G+�4C8	�8G+�;C8	�<C"G+�+G/�2G/c�B�tj��5}tdd��5}tjd��}|�|��ddd��n#1swxYwYtj�|d��}t
j	|��t
j	tj�|d����tj�|d��}t|d��5}|�d��ddd��n#1swxYwY|�
dgd��\}}d}|�|�d��d	�
d
��|��ddd��dS#1swxYwYdS)Nrqr�z�
                    print('The correct file was executed')

                    import os
                    os.chdir("subdir")
                �subdirz$print("The wrong file was executed")zc
c
qz#(Pdb) The correct file was executedr��r1)rrr�r�r�r�r�r
r�r�r�r�rjrk)	rrlr��sru�
wrong_filer�r�r�s	         r�test_issue42383zPdbTestCase.test_issue42383�sD��
�
�
!�
!�	K�S��h��$�$�
���O�%��������
�
�
�
�
�
�
�
�
�
�
�
�
�
����
�
�
�
��W�\�\�#�x�0�0�F��H�V�����H�R�W�\�\�&�(�3�3�4�4�4�����f�h�7�7�J��j�#�&�&�
@�!����>�?�?�?�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@�
@����
@�
@�
@�
@�"�]�]�H�:�y�A�A�N�F�F�<�H����V�\�\�$�/�/��2�9�9�$�?�?��J�J�J�)	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	K�	KsZ�F�*A�F�A	�F�"A	�#BF�<D�F�D"	�"F�%D"	�&A!F�F�Fc��d}tjd��}|�||��\}}|�|��dS)Nz�            def func():
                def inner(v): pass
                inner(
                    42
                )
            func()
        zj
            break func
            continue
            next
            next
            jump 2
        )r�r�r��assertFalser%s     r�test_gh_94215_crashzPdbTestCase.test_gh_94215_crash�sV�����?�$�
�
���,�,�V�X�>�>�������� � � � � rc�0�d}d}d}tdd��5}|�tj|����ddd��n#1swxYwYtdd��5}|�tj|����ddd��n#1swxYwY|�t
jd��|�t
jd��|�dg|��\}}|�d|d��dS)	Nza
        def func():
            x = "Sentinel string for gh-93696"
            print(x)
        aL
        import os
        import sys

        def _create_fake_frozen_module():
            with open('gh93696.py') as f:
                src = f.read()

            # this function has a co_filename as if it were in a frozen module
            dummy_mod = compile(src, "<frozen gh93696>", "exec")
            func_code = dummy_mod.co_consts[0]

            mod = type(sys)("gh93696")
            mod.func = type(lambda: None)(func_code, mod.__dict__)
            mod.__file__ = 'gh93696.py'

            return mod

        mod = _create_fake_frozen_module()
        mod.func()
        zf
            break 20
            continue
            step
            list
            quit
        z
gh93696.pyr�zgh93696_host.pyz"x = "Sentinel string for gh-93696"zSentinel statement not found)	r�r�r�r�r�rr�r�r�)r�
frozen_src�host_programr�r�r�r�s       r�test_gh_93696_frozen_listz%PdbTestCase.test_gh_93696_frozen_list�s����
�
��*���,��
$�
$�	1��
�G�G�H�O�J�/�/�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1��#�S�
)�
)�	3�Q�
�G�G�H�O�L�1�1�2�2�2�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3�	3����	3�	3�	3�	3�	
���	�(�,�7�7�7����	�(�*;�<�<�<����(9�':�H�E�E�����
�
�:�F�Db�c�c�c�c�cs#�(A�A�A�&(B�B�!BN)r).r r!r"r��unittest�skipIfr�flags�	safe_pathr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr&r)r/r4r6r>rArMrQrZrcrmr�skip_unless_symlinkrsryr|r�r#rrrrys�������+�+�+��X�_�S�Y�(�>�@�@����@�@��(H�H�H�H�A�A�A�F�F�F�5�5�5�
�
�
� 
�
�
�"
�
�
�
M�
M�
M�V�V�V�*";�";�";�HG�G�G�8G�G�G�<'�'�'�F�F�F�/�/�/�@3�3�3� /� /� /�D;�;�;�R�R�R�
R�
R�
R�
V�
V�
V�	
�	
�	
�+�+�+���� H�H�H�#M�#M�#M�JZ�Z�Z�>���0+�+�+� 
K�
K�
K��"�K�K�#�"�K�0K�K�K�.!�!�!�&,d�,d�,d�,d�,drrc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�ChecklineTestsc�,�tj��dSr
)�	linecache�
clearcachers r�setUpzChecklineTests.setUp	s��������rc�B�tjtj��dSr
r�rs rr�zChecklineTests.tearDown 	r�rc�"�ttjd��5}|�d��ddd��n#1swxYwYt	j��}|�|�tjd��d��dS�Nr�z
print(123)r�)r�rr�r�rUrVr��	checkline�rr��dbs   r�test_checkline_before_debuggingz.ChecklineTests.test_checkline_before_debugging#	s���
�)�"�C�
(�
(�	"�A�
�G�G�L�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�
�W�Y�Y��������i�&6��:�:�A�>�>�>�>�>r�c�J�ttjd��5}|�d��ddd��n#1swxYwYt	j��}|���|�|�tjd��d��dSr�)	r�rr�r�rUrV�resetr�r�r�s   r�test_checkline_after_resetz)ChecklineTests.test_checkline_after_reset)	s���
�)�"�C�
(�
(�	"�A�
�G�G�L�!�!�!�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"�	"����	"�	"�	"�	"�
�W�Y�Y��
���
�
�
�������i�&6��:�:�A�>�>�>�>�>r�c��tjd��}ttjd��5}|�|��ddd��n#1swxYwYt
|�����dz}tt����5tj��}t|��D]5}|�
|�tj|�����6	ddd��dS#1swxYwYdS)Nz\
            # Comment
            """ docstring """
            ''' docstring '''

        r�rh)r�r�r�rr�r��lenr�rrrUrV�ranger{r�)rrwr��	num_linesr��linenos      r� test_checkline_is_not_executablez/ChecklineTests.test_checkline_is_not_executable0	s����O��

�

���)�"�C�
(�
(�	�A�
�G�G�A�J�J�J�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�������'�'�!�+�	�
�X�Z�Z�
(�
(�	I�	I�����B��	�*�*�
I�
I��� � ����i�.>��!G�!G�H�H�H�H�
I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I����	I�	I�	I�	I�	I�	Is$�A�A�A�AD�D�	DN)r r!r"r�r�r�r�r�r#rrr�r�	sd���������+�+�+�?�?�?�?�?�?�I�I�I�I�Irr�c�`�ddlm}|�tj|����|S)Nr)�test_pdb)�testr��addTest�doctest�DocTestSuite)�loader�tests�patternr�s    r�
load_testsr�A	s6��������	�M�M�'�&�x�0�0�1�1�1��Lr�__main__)Gr�r�rUr�typesr�r�r�r�r��
contextlibrr�iorr�r�test.supportr�test.test_doctestr�
unittest.mockr	rrr%r'r,r.r0r2r4r8r:r<r?rArDrGrJ�
ModuleType�mod�exec�__dict__rNrPrYr[r]r_rarcrergrirkrmrprrrtrvryr{r}�requires_subprocess�TestCaserr�r�r �mainr#rr�<module>r�s!������	�	�	�	�
�
�
�
�
�
�
�
�����
�
�
�
�����������������1�1�1�1�1�1�1�1�������������"�"�"�"�"�"�(�(�(�(�(�(�������*�*�*�*�*�6�*�*�*�"���:S�S�S�j&�&�&�s�s�s�jA�A�A�F���8	�	�	����]�]�]�~(�(�(�T0�0�0�d'�'�'�R9�9�9�v;�;�;�|���0�e��'�(�(����=�s�|�L�L�L�(�(�(�V'�'�'�T?�?�?�

�
�
� ���,>�>�>�@9�9�9�v6�6�6�p;�;�;�z5�5�5�n(�(�(�T*�*�*�X-�-�-�^(�(�(�T-�-�-�^���2���:+�+�+�Z@�@�@�D���<�����`
d�`
d�`
d�`
d�`
d�(�#�`
d�`
d���`
d�D"I�"I�"I�"I�"I�X�&�"I�"I�"I�J����z����H�M�O�O�O�O�O��r