HEX
Server: Apache
System: Linux bd12.noc223.com 4.18.0-553.121.1.lve.el8.x86_64 #1 SMP Thu Apr 30 16:40:41 UTC 2026 x86_64
User: handcraf (1693)
PHP: 8.1.28
Disabled: NONE
Upload Files
File: //proc/self/root/opt/alt/python312/lib64/python3.12/test/__pycache__/test_pdb.cpython-312.opt-2.pyc
�

�h�eV��.�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZmZddl
mZddlmZddlmZddlmZddlmZmZddlmZej4ZGd	�d
e�Zd�Zd�Zd
�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,d�Z-ej\d�Z/e0de/jb�d�Z2d�Z3d�Z4d �Z5d!�Z6d"�Z7d#�Z8esd$�Z9d%�Z:d&�Z;esd'�Z<d(�Z=esd)�Z>d*�Z?d+�Z@d,�ZAd-�ZBd.�ZCd/�ZDd0�ZEd1�ZFd2�ZGd3�ZHd4�ZId5�ZJej��Gd6�d7ej���ZMGd8�d9ej��ZNej��Gd:�d;ej���ZOd<�ZPeQd=k(rej��yy)>�N)�	ExitStack�redirect_stdout)�StringIO)�support)�	os_helper)�
import_module)�run_pty�	FakeInput)�patchc� �eZdZ	d�Zd�Zd�Zy)�PdbTestInputc��||_y�N)�input)�selfrs  �4/opt/alt/python312/lib64/python3.12/test/test_pdb.py�__init__zPdbTestInput.__init__s	����
�c���tj|_t|j�t_ttd�rtj�|_yd|_y)N�gettrace)�sys�stdin�
real_stdinr
r�hasattrr�
orig_trace�rs r�	__enter__zPdbTestInput.__enter__ s9���)�)����d�j�j�)��	�,3�C��,D�#�,�,�.���$��rc��|jt_|jr tj|j�yyr)rrrr�settrace)r�excs  r�__exit__zPdbTestInput.__exit__%s)���O�O��	��?�?��L�L����)�rN)�__name__�
__module__�__qualname__rrr!�rrr
r
s��D��O�
*rr
c��yrr%r%rr�test_pdb_displayhookr'+s��rc��yrr%r%rr�test_pdb_basic_commandsr)Hs��Rrc�@�ddl}|jj�y)Nr)�bdb�
Breakpoint�clearBreakpoints)r+s r�reset_Breakpointr.�s����N�N�#�#�%rc��yrr%r%rr�test_pdb_breakpoint_commandsr0�s��rc��yrr%r%rr�:test_pdb_breakpoints_preserved_across_interactive_sessionsr2cs��@rc��yrr%r%rr�test_pdb_pp_repr_excr4�s��rc��yrr%r%rr�
do_nothingr6�s��rc��td�y)N�*)�printr%rr�do_somethingr:�s	��	�"�Irc��yrr%r%rr�test_list_commandsr<�s��\rc��yrr%r%rr�test_pdb_whatis_commandr>'���'rc��yrr%r%rr�test_pdb_display_commandrAQ���8rc��yrr%r%rr�test_pdb_alias_commandrD����,rc��yrr%r%rr�test_pdb_where_commandrG�rBrc��yrr%r%rr�test_convenience_variablesrI�s��Trc��yrr%r%rr�test_post_mortemrKMs��:rc��yrr%r%rr�test_pdb_skip_modulesrM����r�module_to_skipz6def foo_pony(callback): x = 1; callback(); return Nonec��yrr%r%rr�#test_pdb_skip_modules_with_callbackrQ�r?rc��yrr%r%rr� test_pdb_continue_in_bottomframerS�s��&rc�T�	ttjdd��|�|�y)NTF)�nosigint�readrc)�getattr�pdb�Pdb)�method�args  r�
pdb_invoker\�s!���9�G�C�G�G�T�%�0�&�9�#�>rc��yrr%r%rr�$test_pdb_run_with_incorrect_argumentr^s��rc��yrr%r%rr�test_pdb_run_with_code_objectr`rNrc��yrr%r%rr�&test_next_until_return_at_return_eventrb's��=rc��yrr%r%rr�#test_pdb_next_command_for_generatorrdgrBrc��yrr%r%rr�#test_pdb_next_command_for_coroutinerf�s��5	rc��yrr%r%rr�"test_pdb_next_command_for_asyncgenrh�s��:	rc��yrr%r%rr�%test_pdb_return_command_for_generatorrjs��4rc��yrr%r%rr�%test_pdb_return_command_for_coroutinerlPs��'	rc��yrr%r%rr�$test_pdb_until_command_for_generatorrnzs��)rc��yrr%r%rr�$test_pdb_until_command_for_coroutinerp�s��,	rc��yrr%r%rr�+test_pdb_next_command_in_generator_for_looprr�r?rc��yrr%r%rr�!test_pdb_next_command_subiteratorrtrErc��yrr%r%rr�test_pdb_issue_20766rv/���rc��yrr%r%rr�test_pdb_issue_43318ryH���rc��yrr%r%rr�test_pdb_issue_gh_91742r|es��*rc��yrr%r%rr�test_pdb_issue_gh_94215r~�s��?rc��yrr%r%rr�test_pdb_issue_gh_101673r��rzrc��yrr%r%rr�test_pdb_issue_gh_103225r��rwrc��yrr%r%rr�test_pdb_issue_gh_101517r�
s��rc��yrr%r%rr�test_pdb_issue_gh_108976r�s��rc��yrr%r%rr�test_pdb_ambiguous_statementsr�1s��rc��yrr%r%rr�test_pdb_issue_gh_65052r�HrErc�r�eZdZd�Zej
ejjd�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'd"�Z(d#�Z)d$�Z*e+jXd%��Z-d&�Z.d'�Z/d(�Z0d)�Z1y*),�PdbTestCasec�J�tjtj�yr�r�unlink�TESTFNrs r�tearDownzPdbTestCase.tearDownz�������)�)�*rz'PYTHONSAFEPATH changes default sys.pathc	�H�|jtjd�tjddg|z}tj|t
jt
jt
jitj�ddi���5}|jtj|��\}}ddd�xrtj|�}xrtj|�}|j!j"|d|�d|���||fS#1swY�bxYw)	N�__pycache__�-mrX�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}s��	
���	�(�(�-�8��~�~�t�U�+�h�6��
�
�
��!��� �o�o�!�(�(�A����A�%7��A�
�	D��!�-�-�c�j�j��.B�C�N�F�F�	D��0�E�L�L��0���0�E�L�L��0������O�O��.�v�h�j���I�	
�
�v�~��	D�	D�s�(D�D!c��	d}t|d�5}|jtj|��ddd�|j	t
j|�|j|g||�S#1swY�=xYw)N�main.py�w)�open�write�textwrap�dedentr�rr�r�)r�scriptr�r��filename�fs      r�run_pdb_scriptzPdbTestCase.run_pdb_script�sj��A���
�(�C�
 �	-�A�
�G�G�H�O�O�F�+�,�	-����	�(�(�(�3��}�}�h�Z��3F�G�G�	-�	-�s�%A1�1A:c�(�	d|_tj|j�|jdz}|jdz}tj|j�t|d�5}	ddd�t|d�5}|j
tj|��ddd�|jtj|j�|jd|jg|�S#1swY��xYw#1swY�]xYw)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�s���6�#�������)�)�*��$�$�~�5�	��$�$�~�5�	�
����!�!�"�
�)�S�
!�	�Q��	�
�)�S�
!�	-�Q�
�G�G�H�O�O�F�+�,�	-����	�(�(�$�*:�*:�;��}�}�d�D�$4�$4�5�x�@�@�	�	��	-�	-�s�1C<�%D�<D�Dc�&�ttjd�5}|j|�ddd�|sdn|dtj|df}|j	|tj|tj��y#1swY�[xYw)N�wbr�)r�rr�r�r�rX�
find_function)r�file_content�	func_name�expectedr�s     r�_assert_find_functionz!PdbTestCase._assert_find_function�s��
�)�"�"�D�
)�	"�Q�
�G�G�L�!�	"� (�4��Q�K��)�)�8�A�;�.8������c�'�'�	�9�3C�3C�D�	F�	"�	"�s�B�Bc�*�|jddd�y)Nr�foo)r�rs r�test_find_function_empty_filez)PdbTestCase.test_find_function_empty_file�s���"�"�3��t�4rc�F�|jdj�dd�y)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���
	
rc�H�|jdjd�dd�y)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�h�|jtjdj�zdd�y)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�s2���"�"��O�O���F�H�

�
��
	
rc���ttjd�5}|jd�ddd�tj
ddtjg}t
j|tjtjtj��}|j|jj�|jd�\}}|jd|d�y#1swY��xYw)	Nr�sprint("testing my pdb")
r�rX�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�	4��~�~�t�U�I�,<�,<�=�������?�?��/�/��$�$���
	
������)�)�*��)�)�)�4���������K�	M�	4�	4�s�C'�'C0c��d}d}|j||�\}}|xsd|xsdz}|jd|d�|jd|d�y)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�sg�������,�,�V�X�>�����,�B�6�<�R�0�����)�6�^�	`��
�
�S�U[�T�	Vrc�d�d}d}d}tdd�5}|jtj|��ddd�|j	t
jd�|j||�\}}|jtd�|j�D��d�y#1swY�oxYw)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|v���
y�w)zmain.py(5)foo()->NoneNr%��.0�ls  r�	<genexpr>z.PdbTestCase.test_issue13183.<locals>.<genexpr>%s����J��'�1�,�J���z+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�O�C�(�)�	*����	�(�(�(�3��,�,�V�X�>��������J�f�6G�6G�6I�J�J�9�	;�		*�	*�s�%B&�&B/c	�R�ttjd�5}|jt	j
d�j
d��ddd�tjdtjg}tj|tjtjtjitj�ddi���}|j|j j"�|j%d�\}}|j'd	|d
�y#1swY��xYw)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(s����)�"�"�D�
)�	/�Q�
�G�G�H�O�O�
%�
�%�f�W�o�

/�	/��~�~�t�Y�%5�%5�6�������?�?��/�/��$�$�;�2�:�:�;�1�7�;�	��	
������)�)�*��)�)�)�4��������6�E�	G�+	/�	/���4D�D&c	�R�ttjd�5}|jt	j
d�j
d��ddd�tjdtjg}tj|tjtjtjitj�ddi���}|j|j j"�|j%d�\}}|j'd	|d
�y#1swY��xYw)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_issue36250Ds���
�)�"�"�D�
)�	.�Q�
�G�G�H�O�O�%��$�V�G�_�
.�	.� �~�~�t�Y�%5�%5�6�������?�?��/�/��$�$�=�R�Z�Z�=�!3�W�=�	��	
������)�)�*��)�)�/�:��������6�E�	G�3	.�	.�r�c��d}d}d}|j||d��\}}|j||dj||��y)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_issue16180bsT�� ����!���,�,��H�!�-�
����	
�
�
�h��
=�
�V�H�f�
%�	'rc��d}d}|j||�\}}dj|j�D�cgc]}|j���c}�}|j	|d�|j	|d�ycc}w)Nzprint('hello')z[
            continue
            run a b c
            run d e f
            quit
        �
z#Restarting .* with arguments:
a b cz#Restarting .* with arguments:
d e f)r��joinr��strip�assertRegex)rr�r�r�r��x�ress       r�test_issue26053zPdbTestCase.test_issue26053osv��!�����,�,�V�X�>�����i�i�F�,=�,=�,?�@�q�����@�A������D�E�����D�E��As�A:c��tjd�}tjj	dd�}	tj�5tdd�5}|jd�ddd�tdd�5}|j|�ddd�tjdg}tj|tjtjtj��}|5|jd�\}}|jd	|�ddd�ddd�|�|tjd<yy#1swY��xYw#1swY��xYw#1swY�@xYw#1swY�DxYw#|�|tjd<wwxYw)
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�J�N�N�6�4�0�	�	/��#�#�%�
*��(�C�(�)�A��G�G�K�(�)��)�S�)�$�Q��G�G�F�O�$��~�~�y�1��!�'�'��%�?�?�$�/�/�%�?�?�	���*�%)�%5�%5�f�%=�N�F�F��$�$�%P�"(�*�*�
*�(�$�%.��
�
�6�"�%�')�)��$�$��*�*��
*�
*��(�$�%.��
�
�6�"�%�sl�E-�
E!�D=�*E!�>E	�AE!�/'E�E!�E-�=E	�E!�	E	�E!�E	�E!�!E*�&E-�-Fc�~�tjjdd�}tj�5}td�5tjj|d�}|tjj_		t|d�5}|jd�ddd�|jtj�jdd�|�|tjd<	ddd�ddd�y#1swY�axYw#|�|tjd<wwxYw#1swY�9xYw#1swYyxYw)Nrzos.path.expanduserr
r��invalidr)r�r�rr�temp_dirr�pathr�
expanduser�return_valuer�r�r�rXrY�rcLines)rrr�rc_pathr�s     r�test_readrc_homedirzPdbTestCase.test_readrc_homedir�s���J�J�N�N�6�4�0�	�
�
�
�
!�		3�X�u�5I�/J�		3��g�g�l�l�8�X�6�G�.5�B�G�G���+�
3��'�3�'�'�1��G�G�I�&�'�� � �����!2�!2�1�!5�y�A��(�)2�B�J�J�v�&�		3�		3�		3�'�'���(�)2�B�J�J�v�&�)��		3�		3��		3�		3�sT�D3�AD'�D�D� 9D�D'�/D3�D	�D�D$�$D'�'D0	�,D3�3D<c	�x�tjd�}tjj	dd�}	tj�5tddd��5}|jd�ddd�tddd��5}|j|�ddd�tjdg}d	d
i}tjdk(rd|d
<tj|tjtjtjitj�|���}|5|jd�\}}|j!d|�ddd�ddd�|�|tjd<yy#1swY��xYw#1swY��xYw#1swY�AxYw#1swY�ExYw#|�|tjd<wwxYw)NzR
            import pdb; pdb.Pdb().set_trace()
            print('hello')
        rr
r�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�J�N�N�6�4�0�	�	/��#�#�%�
b��(�C�'�:�-�a��G�G�O�,�-��)�S�7�;�$�q��G�G�F�O�$��~�~�y�1��)�7�3���<�<�7�*�6H�C�2�3�!�'�'��%�?�?�$�/�/�%�?�?�-�2�:�:�-��-����b�%)�%5�%5�f�%=�N�F�F��M�M�#Y�Z`�b�b�%
b�0�$�%.��
�
�6�"�%�/-�-��$�$��b�b��%
b�
b��0�$�%.��
�
�6�"�%�sl�F!�F�E0�,F�E=�BF�"'F	�	F�F!�0E:	�5F�=F	�F�	F	�F�F�F!�!F9c�h�t�}d}t�5}|jtd|��|jtjt
jd��tj|��ddd�|j|j�|dz�y#1swY�-xYw)Nz"Nobody expects... blah, blah, blahz
sys.stdout�	set_trace)�headerr)
rr�
enter_contextr�objectrXrYr"r��getvalue)rr�r#�	resourcess    r�test_headerzPdbTestCase.test_header�s������5��
�[�	)�I��#�#�E�,��$?�@��#�#�E�L�L����+�$F�G��M�M��(�	)�	
������*�F�T�M�:�		)�	)�s�A%B(�(B1c��d}d}|j||�\}}|jtd�|j�D��|�y)Nzprint("SUCCESS")�/
            continue
            quit
        c3�$K�|]}d|v���
y�w��SUCCESSNr%r�s  rr�z.PdbTestCase.test_run_module.<locals>.<genexpr>������H�q�I��N�H�r��r�r�r�r��rr�r�r�r�s     r�test_run_modulezPdbTestCase.test_run_module�sH��'�����,�,�V�X�>��������H�F�4E�4E�4G�H�H�&�Qrc��d}d}|j||�\}}|jtd�|j�D��|�y)NzQ
            if __name__ == '__main__':
                print("SUCCESS")
        r*c3�$K�|]}d|v���
y�wr,r%r�s  rr�z9PdbTestCase.test_module_is_run_as_main.<locals>.<genexpr>�r.r�r/r0s     r�test_module_is_run_as_mainz&PdbTestCase.test_module_is_run_as_main�sJ�������,�,�V�X�>��������H�F�4E�4E�4G�H�H�&�Qrc��d}d}|j||�\}}|jtd�|j�D��|�|jt	d�|j�D��|�y)Nz{
            if __name__ == '__main__':
                pass
                print("SUCCESS")
                pass
        z*
            b 3
            quit
        c3�$K�|]}d|v���
y�w)zBreakpoint 1 atNr%r�s  rr�z.PdbTestCase.test_breakpoint.<locals>.<genexpr>������P�q�-��2�P�r�c3�$K�|]}d|v���
y�wr,r%r�s  rr�z.PdbTestCase.test_breakpoint.<locals>.<genexpr>�s����L�1�I�Q�.�L�r�)r�r�r�r��allr0s     r�test_breakpointzPdbTestCase.test_breakpoint�sm�������,�,�V�X�>��������P�F�<M�<M�<O�P�P�RX�Y�����L��8I�8I�8K�L�L�f�Urc��d}|jddg|�\}}|jtj|j	dd��y)Nz(
            c
            quit
        r�rX�
r�)r�r�rX�_usage�replace)rr�r�r�s    r�test_run_pdb_with_pdbz!PdbTestCase.test_run_pdb_with_pdb�sD��������e�}�h�?�����
�
��J�J��N�N�4��$�	
rc�@�d}tj|�|dz}tj|�t	|d�5	ddd�|jtj|�|j
d|gdd��\}}|jd|�y#1swY�UxYw)	Nr�r�r�r�r�r�rz-ImportError: No module named t_main.__main__;)rr�r�r�r�r�r�r�)rr�r�r�r�s     r�test_module_without_a_mainz&PdbTestCase.test_module_without_a_main	s���������%��.�0�	�
�����
�)�S�
!�	��	����	�(�(�+�6����
�;����'�
����	
�
�
�E�v�N�
	�	�s�B�Bc�p�d}d}tj|�|dz|z}tj|�t	|dzd�5	ddd�|jtj|�|j
d|jdd�gdd	�
�\}}|jd|�y#1swY�exYw)N�t_pkgr��/r�r�r��.r�r�rz;'t_pkg.t_main' is a package and cannot be directly executed)	rr�r��makedirsr�r�r�r>r�)r�pkg_namer��modpathr�r�s      r�test_package_without_a_mainz'PdbTestCase.test_package_without_a_main	s�����������"��S�.�;�.��
���G��
�'�N�*�C�
0�	��	����	�(�(�(�3����
�7�?�?�3��,�-�r�q�'�
����	
�
�
�I��	�
	�	�s�B,�,B5c��|jdtjgdd��\}}|jdtj��|�y)Nr�r�r�rzImportError: No module named )r�rr�r��rr�r�s   r�test_nonexistent_modulez#PdbTestCase.test_nonexistent_module!	sC������i�.>�.>�'?��YZ��[�����
�
�5�i�6F�6F�5G�H�&�Qrc��tj�5}|j|gdd��\}}|jd|�d�|�ddd�y#1swYyxYw)Nr�r�rzError: z is a directory)rrr�r�)rrr�r�s    r�test_dir_as_scriptzPdbTestCase.test_dir_as_script&	sZ��
�
�
�
!�	G�X�!�]�]�H�:�r�q�]�Q�N�F�F��M�M�G�H�:�_�=�v�F�	G�	G�	G�s�/A
�
Ac��|jdgdd��\}}|jd|�|jdgdd��\}}|jd|�y)Nz-cr�r�rz"Error: option -c requires argumentz--spamz#Error: option --spam not recognized)r�r�rKs   r�test_invalid_cmd_line_optionsz)PdbTestCase.test_invalid_cmd_line_options+	sT������v�r�q��I�����
�
�:�V�D�����z�2�1��M�����
�
�;�f�Erc��d}d}|j||�\}}|jtd�|j�D��|�y)NzY
                #This is a comment, on line 2

                print("SUCCESS")
        z
            quit
        c3�$K�|]}d|v���
y�w)z__main__.py(4)<module>()Nr%r�s  rr�z=PdbTestCase.test_blocks_at_first_code_line.<locals>.<genexpr>;	s ����?�%&�7� �!�?�r�r/r0s     r�test_blocks_at_first_code_linez*PdbTestCase.test_blocks_at_first_code_line1	sU����
���,�,�V�X�>��������?�*0�*;�*;�*=�?�?�@F�	Hrc�@�d|_tj|j�|jdz}|jdz}|jdz}|jtj|j�t	j
|j�t
|d�5}|jtjd��ddd�t
|d�5}|jtjd��ddd�t
|d�5}|jtjd��ddd�d	}|jd
|jg|�\}}|jtd�|j�D��|�|jtd�|j�D���|jtd
�|j�D���y#1swY��.xYw#1swY��xYw#1swY��xYw)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|v���
y�w�zVAR from moduleNr%r�s  rr�z4PdbTestCase.test_relative_imports.<locals>.<genexpr>_	r7r�c3�$K�|]}d|v���
y�w)zVAR from topNr%r�s  rr�z4PdbTestCase.test_relative_imports.<locals>.<genexpr>`	s����M�A�N�a�/�M�r�c3�$K�|]}d|v���
y�w)z
second varNr%r�s  rr�z4PdbTestCase.test_relative_imports.<locals>.<genexpr>a	s����K�!�L�A�-�K�r��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_imports>	s���#�������)�)�*��$�$�~�5�	��$�$�~�5�	��&�&��5�����	�(�(�$�*:�*:�;�
����!�!�"�
�)�S�
!�	�Q�
�G�G�H�O�O�%��
�	��)�S�
!�	�Q�
�G�G�H�O�O�%��
�	��+�s�
#�	�q�
�G�G�H�O�O�%��
�	�
���M�M�4��)9�)9�":�H�E�	�������P�F�<M�<M�<O�P�P�RX�Y�����M��9J�9J�9L�M�M�N�����K�v�7H�7H�7J�K�K�L�7	�	��	�	��	�	�s$�)%G:�"%H�%H�:H�H�Hc��d|_tj|j�|jdz}|jdz}|jdz}|jtj|j�t	j
|j�t
|d�5}|jtjd��ddd�t
|d�5}|jtjd��ddd�t
|d�5}|jtjd��ddd�d	}|jd
|jdzg|�\}}|jtd�|j�D��|�y#1swY��xYw#1swY��xYw#1swY�xxYw)
Nr�z	/runme.pyr�rUr�rVzl
                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|v���
y�wrXr%r�s  rr�zDPdbTestCase.test_relative_imports_on_plain_module.<locals>.<genexpr>�	r7r�r[r\s        r�%test_relative_imports_on_plain_modulez1PdbTestCase.test_relative_imports_on_plain_modulec	s���#�������)�)�*��$�$�{�2�	��$�$�~�5�	��&�&��5�����	�(�(�$�*:�*:�;�
����!�!�"�
�)�S�
!�	�Q�
�G�G�H�O�O�%��
�	��)�S�
!�	�Q�
�G�G�H�O�O�%��
�	�
�+�s�
#�	�q�
�G�G�H�O�O�%��
�	����M�M�4��)9�)9�H�)D�"E�x�P�	�������P�F�<M�<M�<O�P�P�RX�Y�)	�	��	�	��
	�	�s$�)%F�"%F+�%F7�F(�+F4�7Gc��djgd��}|jd|dz�\}}|j|j�ddgd��y)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 DEBUGGERrgz> <string>(1)<module>()z9((Pdb)) *** NameError: name 'doesnotexist' is not definedrh�(Pdb) �rr�r�r�)rr�r�r^s    r�test_errors_in_commandz"PdbTestCase.test_errors_in_command�	sV���9�9�
����'�'���4��@�	�������*�*�,�Q�R�0�
3
�
	rc�6��	�fd�}|dd�|dd�y)Nc���djd|��dg�}�jd|dz�\}}�j|j�dddd|�d|��d	g�y)
Nrzrun �qrer�rfz(Pdb) *** Cannot run z: rirj)�bad_arg�msgr�r�r^rs     �r�checkz*PdbTestCase.test_issue34266.<locals>.check�	sz����y�y��w�i� ��"��H��+�+�F�H�t�O�D�I�F�A����V�.�.�0���4��'��y��3�%�8��7�
r�\zNo escaped character�"zNo closing quotationr%)rrqs` r�test_issue34266zPdbTestCase.test_issue34266�	s#���<�
	�	�d�*�+�
�c�)�*rc�Z�	tjd�}d}tj�5}dtj
j
|���}|j||�\}}|j|jd�djd�|�ddd�y#1swYyxYw)N�Q
            import sys
            print('sys.path[0] is', sys.path[0])
        �c
q�(Pdb) sys.path[0] is r�r<)r�r�rrr�r�realpathr�r��split�rstrip)rr�r��cwdr�r�r�s       r�test_issue42384zPdbTestCase.test_issue42384�	s���y����"�
����
�
�
�
!�	K�S�.�r�w�w�/?�/?��/D�.E�F�H�!�0�0���B�N�F�F����V�\�\�$�/��2�9�9�$�?��J�	K�	K�	K�s�A+B!�!B*c��	tjd�}d}tj�5}tj
j
|�}tj
j|d�}tj
j|d�}d|��}t	j|�ttj
j|d�d�5}|j|�ddd�t	j|�t	jtj
j|d�tj
j|d��|jtj
jdd�g|�\}}	|j|jd�d	jd
�|�ddd�y#1swY��xYw#1swYyxYw)Nrvrw�dir_one�dir_tworx�foo.pyr�rryr<)r�r�rrr�rrzrr�r�r��symlinkr�r�r{r|)
rr�r�r}r�r�r�r�r�r�s
          r�test_issue42384_symlinkz#PdbTestCase.test_issue42384_symlink�	sc��w����"�
����
�
�
�
!�	K�S��'�'�"�"�3�'�C��g�g�l�l�3�	�2�G��g�g�l�l�3�	�2�G�.�w�i�8�H��H�H�W���b�g�g�l�l�7�H�5�s�;�
 �q������
 ��H�H�W���J�J�r�w�w�|�|�G�X�6������W�h�8W�X�!�]�]�B�G�G�L�L��H�,M�+N�PX�Y�N�F�F����V�\�\�$�/��2�9�9�$�?��J�	K�	K�
 �
 ��	K�	K�s%�B$G�G�#CG�G	�G�Gc���tj�5}tdd�5}tjd�}|j|�ddd�tjj|d�}t
j|�t
jtjj|d��tjj|d�}t|d�5}|jd�ddd�|jdgd�\}}d}|j|jd�d	jd
�|�ddd�y#1swY��xYw#1swY�jxYw#1swYyxYw)Nr�r�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�r<)rrr�r�r�r�r�rrr�r�r�r{r|)	rr}r��sr��
wrong_filer�r�r�s	         r�test_issue42383zPdbTestCase.test_issue42383�	s9��
�
�
�
!�	K�S��h��$�
���O�O�%�������
�
��W�W�\�\�#�x�0�F��H�H�V���H�H�R�W�W�\�\�&�(�3�4������f�h�7�J��j�#�&�
@�!����>�?�
@�"�]�]�H�:�y�A�N�F�F�<�H����V�\�\�$�/��2�9�9�$�?��J�)	K�	K�
�
��
@�
@��	K�	K�s<�
E,�'E�	BE,�%E �7AE,�E	�E,� E)	�%E,�,E5c�~�d}tjd�}|j||�\}}|j|�y)Nz�            def func():
                def inner(v): pass
                inner(
                    42
                )
            func()
        zj
            break func
            continue
            next
            next
            jump 2
        )r�r�r��assertFalser0s     r�test_gh_94215_crashzPdbTestCase.test_gh_94215_crash�	sD�����?�?�$�
���,�,�V�X�>�������� rc��d}d}d}tdd�5}|jtj|��ddd�tdd�5}|jtj|��ddd�|j	t
jd�|j	t
jd�|jdg|�\}}|jd|d�y#1swY��xYw#1swY�xYw)	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�O�J�/�0�	1��#�S�
)�	3�Q�
�G�G�H�O�O�L�1�2�	3�	
���	�(�(�,�7����	�(�(�*;�<����(9�':�H�E�����
�
�:�F�Db�c�	1�	1��	3�	3�s�%C#�%C/�#C,�/C8c�@�tjjtjjt�d�}tj
|�D]E}|j
d�s�|jtjj||�gd��Gy)N�encoded_modulesz.pyrn)r�rr�dirname�__file__�listdir�endswithr�)r�
script_dirr�s   r�test_non_utf8_encodingz"PdbTestCase.test_non_utf8_encoding*
sl���W�W�\�\�"�'�'�/�/�(�";�=N�O�
��
�
�:�.�	I�H�� � ��'��
�
�r�w�w�|�|�J��A�B�C�H�	IrN)r)2r"r#r$r��unittest�skipIfr�flags�	safe_pathr�r�r�r�r�r�r�r�r�r�r�r�r�rr
rrr r(r1r4r:r?rArIrLrNrPrSr_rbrkrtr~r�skip_unless_symlinkr�r�r�r�r�r%rrr�r�xs'��+��X�_�_�S�Y�Y�(�(�>�@��@��(H�A�F�5�
� 
�"
�
M�V�*";�HG�8G�<'�F�/�@3� /�D;�R�
R�
V�	
�O�� R�
G�
F�H�#M�JZ�>�0+� 
K��"�"�K�#�K�0K�.!�&,d�\Irr�c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�ChecklineTestsc�,�tj�yr)�	linecache�
clearcachers r�setUpzChecklineTests.setUp1
s�����rc�J�tjtj�yrr�rs rr�zChecklineTests.tearDown4
r�rc��ttjd�5}|jd�ddd�t	j
�}|j
|jtjd�d�y#1swY�NxYw�Nr�z
print(123)r�)r�rr�r�rXrYr��	checkline�rr��dbs   r�test_checkline_before_debuggingz.ChecklineTests.test_checkline_before_debugging7
sa��
�)�"�"�C�
(�	"�A�
�G�G�L�!�	"�
�W�W�Y��������i�&6�&6��:�A�>�	"�	"�s�A:�:Bc�,�ttjd�5}|jd�ddd�t	j
�}|j
�|j|jtjd�d�y#1swY�^xYwr�)	r�rr�r�rXrY�resetr�r�r�s   r�test_checkline_after_resetz)ChecklineTests.test_checkline_after_reset=
sj��
�)�"�"�C�
(�	"�A�
�G�G�L�!�	"�
�W�W�Y��
���
�������i�&6�&6��:�A�>�		"�	"�s�B
�
Bc���tjd�}ttjd�5}|j|�ddd�t
|j��dz}tt��5tj�}t|�D]1}|j|jtj|���3	ddd�y#1swY��xYw#1swYyxYw)Nz\
            # Comment
            """ docstring """
            ''' docstring '''

        r�ry)r�r�r�rr�r��lenr�rrrXrY�ranger�r�)rr�r��	num_linesr��linenos      r� test_checkline_is_not_executablez/ChecklineTests.test_checkline_is_not_executableD
s����O�O��

���)�"�"�C�
(�	�A�
�G�G�A�J�	������'�!�+�	�
�X�Z�
(�	I�����B��	�*�
I��� � ����i�.>�.>��!G�H�
I�	I�	I�	�	��	I�	I�s�C�9AC#�C �#C,N)r"r#r$r�r�r�r�r�r%rrr�r�0
s���+�?�?�Irr�c��eZdZd�Zd�Zy)�PdbTestReadlinec�z�td�}|jr$d|jvrtjd��yy)N�readline�libeditz)libedit readline is not supported for pdb)r�__doc__r��SkipTest)r�s r�
setUpClasszPdbTestReadline.setUpClassW
s>��!��,�����	�X�-=�-=� =��#�#�$O�P�P�!>�rc���tjd�}d}t||�}|jd|�|jd|�|jd|�|jd|�y)Nz�
            import pdb; pdb.Pdb().set_trace()
            # Concatenate strings so that the output doesn't appear in the source
            print('hello' + '!')
        s
co		ntin	
scommandss	conditionscontinueshello!)r�r�r	r�)rr�rr�s    r�test_basic_completionz%PdbTestReadline.test_basic_completion^
s`�����"�
��"�����'���
�
�k�6�*��
�
�l�F�+��
�
�k�6�*��
�
�i��(rN)r"r#r$r�r�r%rrr�r�U
s
��Q�)rr�c�Z�ddlm}|jtj|��|S)Nr)�test_pdb)�testr��addTest�doctest�DocTestSuite)�loader�tests�patternr�s    r�
load_testsr�q
s!���	�M�M�'�&�&�x�0�1��Lr�__main__)Sr�r�rXr�typesr�r�r�r�r��
contextlibrr�iorr�r�test.supportr�test.support.import_helperr�test.support.pty_helperr	r
�
unittest.mockr�has_socket_support�SKIP_ASYNCIO_TESTSr%r
r'r)r.r0r2r4r6r:r<r>rArDrGrIrKrM�
ModuleType�mod�exec�__dict__rQrSr\r^r`rbrdrfrhrjrlrnrprrrtrvryr|r~r�r�r�r�r�r��requires_subprocess�TestCaser�r�r�r�r"�mainr%rr�<module>r�s	���	�
�
��
�����1���"�4�6��"�4�4�4��*�6�*�"�:S�j&�@�DA�F�8	��]�~(�T9�v-�^9�vU�n;�|�0�e���'�(���=�s�|�|�L�(�V'�T?�

� �,>�@9�v�6�p;�z5�n�(�T*�X�-�^(�T-�^�2�:+�Z@�D�:�2�*�$�.-�`�����u
I�(�#�#�u
I��u
I�n"I�X�&�&�"I�J�����)�h�'�'�)��)�6��z���H�M�M�O�r