HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/test/__pycache__/test_pdb.cpython-37.opt-2.pyc
B

��g���@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZddlm
Z
ddlmZddlmZGdd�de�Zd	d
�Zdd�Zd
d�Zdd�Zdd�Zdd�Zdd�Zdd�Ze�d�Zedej�dd�Z dd�Z!dd �Z"d!d"�Z#d#d$�Z$d%d&�Z%d'd(�Z&d)d*�Z'd+d,�Z(d-d.�Z)d/d0�Z*d1d2�Z+d3d4�Z,d5d6�Z-d7d8�Z.d9d:�Z/Gd;d<�d<ej0�Z1d=d>�Z2e3d?k�r�e�4�dS)@�N)�	ExitStack)�StringIO)�support)�
_FakeInput)�patchc@s$eZdZdd�Zdd�Zdd�ZdS)�PdbTestInputcCs
||_dS)N)�input)�selfr�r
�)/usr/local/lib/python3.7/test/test_pdb.py�__init__szPdbTestInput.__init__cCs0tj|_t|j�t_ttd�r&t��nd|_dS)N�gettrace)�sys�stdin�
real_stdinrr�hasattrr
�
orig_trace)r	r
r
r�	__enter__szPdbTestInput.__enter__cGs|jt_|jrt�|j�dS)N)rrrr�settrace)r	�excr
r
r�__exit__szPdbTestInput.__exit__N)�__name__�
__module__�__qualname__rrrr
r
r
rrsrcCsdS)Nr
r
r
r
r�test_pdb_displayhook%srcCsdS)Nr
r
r
r
r�test_pdb_basic_commandsBs|rcCsdS)Nr
r
r
r
r�test_pdb_breakpoint_commands�skrcCsdS)Nr
r
r
r
r�
do_nothing/srcCstd�dS)N�*)�printr
r
r
r�do_something2sr cCsdS)Nr
r
r
r
r�test_list_commands5s]r!cCsdS)Nr
r
r
r
r�test_post_mortem�s;r"cCsdS)Nr
r
r
r
r�test_pdb_skip_modules�sr#Zmodule_to_skipz6def foo_pony(callback): x = 1; callback(); return NonecCsdS)Nr
r
r
r
r�#test_pdb_skip_modules_with_callback�s(r$cCsdS)Nr
r
r
r
r� test_pdb_continue_in_bottomframes'r%cCsttjddd�|�|�dS)NTF)ZnosigintZreadrc)�getattr�pdb�Pdb)�method�argr
r
r�
pdb_invokeDsr+cCsdS)Nr
r
r
r
r�$test_pdb_run_with_incorrect_argumentIs
r,cCsdS)Nr
r
r
r
r�test_pdb_run_with_code_objectYsr-cCsdS)Nr
r
r
r
r�&test_next_until_return_at_return_eventos?r.cCsdS)Nr
r
r
r
r�#test_pdb_next_command_for_generator�s9r/cCsdS)Nr
r
r
r
r�#test_pdb_next_command_for_coroutine�s5r0cCsdS)Nr
r
r
r
r�"test_pdb_next_command_for_asyncgen"s:r1cCsdS)Nr
r
r
r
r�%test_pdb_return_command_for_generator^s5r2cCsdS)Nr
r
r
r
r�%test_pdb_return_command_for_coroutine�s'r3cCsdS)Nr
r
r
r
r�$test_pdb_until_command_for_generator�s*r4cCsdS)Nr
r
r
r
r�$test_pdb_until_command_for_coroutine�s,r5cCsdS)Nr
r
r
r
r�+test_pdb_next_command_in_generator_for_loops'r6cCsdS)Nr
r
r
r
r�!test_pdb_next_command_subiteratorAs-r7cCsdS)Nr
r
r
r
r�test_pdb_issue_20766psr8c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/S)0�PdbTestCasecCst�tj�dS)N)r�unlink�TESTFN)r	r
r
r�tearDown�szPdbTestCase.tearDownc	Csz|�tjd�tjddg|}tj|tjtjtjd��}|�	t
�|��\}}WdQRX|obt�
|�}|opt�
|�}||fS)N�__pycache__z-mr')�stdoutr�stderr)�
addCleanupr�rmtreer�
executable�
subprocess�Popen�PIPE�STDOUT�communicate�str�encode�bytes�decode)r	Zpdb_args�commands�cmd�procr>r?r
r
r�_run_pdb�s
zPdbTestCase._run_pdbc	CsFd}t|d��}|�t�|��WdQRX|�tj|�|�|g|�S)Nzmain.py�w)�open�write�textwrap�dedentr@rr:rO)r	�scriptrL�filename�fr
r
r�run_pdb_script�s
zPdbTestCase.run_pdb_scriptc	Cs�d|_t�|j�|jd}|jd}t�|j�t|d��}WdQRXt|d��}|�t�|��WdQRX|�	tj|j�|�
d|jg|�S)N�t_mainz/__main__.pyz/__init__.pyrPz-m)�module_namerrA�os�mkdirrQrRrSrTr@rO)r	rUrL�	main_file�	init_filerWr
r
r�run_pdb_module�s


zPdbTestCase.run_pdb_modulec	Csbt�|�}ttjd��}|�|�WdQRX|s4dn|dtj|df}|�|t�|tj��dS)NrPr�)	rSrTrQrr;rR�assertEqualr'Z
find_function)r	Zfile_contentZ	func_name�expectedrWr
r
r�_assert_find_function�s
z!PdbTestCase._assert_find_functioncCs|�ddd�dS)N�Zfoo)rc)r	r
r
r�test_find_function_empty_file�sz)PdbTestCase.test_find_function_empty_filecCs|�ddd�dS)Nz�            def foo():
                pass

            def bar():
                pass

            def quux():
                pass
            �bar)rf�)rc)r	r
r
r�test_find_function_found�s
z$PdbTestCase.test_find_function_foundc	Csxttjd��}|�d�WdQRXtjddtjg}tj|tjtjtj	d�}|�
|jj�|�
d�\}}|�d|d�dS)	N�wbsprint("testing my pdb")
z-mr')r>rr?squit
sSyntaxErrorz0Got a syntax error running test script under PDB)rQrr;rRrrBrCrDrErFr@r>�closerG�assertNotIn)r	rWrMrNr>r?r
r
r�test_issue7964�s
zPdbTestCase.test_issue7964c	Csrd}d}d}tdd��}|�t�|��WdQRX|�tjd�|�||�\}}|�t	dd�|�
�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.pyrPcss|]}d|kVqdS)zmain.py(5)foo()->NoneNr
)�.0�lr
r
r�	<genexpr>�sz.PdbTestCase.test_issue13183.<locals>.<genexpr>z+Fail to step into the caller after a return)rQrRrSrTr@rr:rX�
assertTrue�any�
splitlines)r	rUrLrfrWr>r?r
r
r�test_issue13183�szPdbTestCase.test_issue13183c	Cs�ttjd��}|�t�d��d��WdQRXtjdtjg}t	j
|t	jt	jt	jd�}|�
|jj�|�d�\}}|�d|��d�dS)	Nria
                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()�asciiz-u)r>rr?scont
�Errorz*Got an error running test script under PDB)rQrr;rRrSrTrIrrBrCrDrErFr@r>rjrGrkrK)r	rWrMrNr>r?r
r
r�test_issue13120s

zPdbTestCase.test_issue13120cCs6d}d}d}|�||�\}}|�||d�||��dS)Nzdef f: pass
rdzSyntaxError:zE

Expected:
{}
Got:
{}
Fail to handle a syntax error in the debuggee.)rX�assertIn�format)r	rUrLrbr>r?r
r
r�test_issue16180szPdbTestCase.test_issue16180c
Cs�t�d�}tj�dd�}z�t����tdd��}|�d�WdQRXtdd��}|�|�WdQRXt	j
dg}tj|tj
tj
tj
d�}|�$|�d�\}}|�d	|���WdQRXWdQRXWd|dk	r�|tjd<XdS)
Nz_
            import pdb; pdb.Pdb(readrc=False).set_trace()

            print('hello')
        �HOMEz.pdbrcrPzinvalid
zmain.py)r>rr?sq
z(NameError: name 'invalid' is not defined)rSrTr[�environ�poprZtemp_cwdrQrRrrBrCrDrErGrkrK)r	rU�	save_homerWrMrNr>r?r
r
r�test_readrc_kwarg)s*


"zPdbTestCase.test_readrc_kwargcCs�tj�dd�}t����}td��ntj�|d�}|tjj_	z:t
|d��}|�d�WdQRX|�t
��jdd�Wd|dk	r�|tjd<XWdQRXWdQRXdS)Nrzzos.path.expanduserz.pdbrcrPZinvalidr)r[r{r|r�temp_dirr�path�join�
expanduserZreturn_valuerQrRrar'r(ZrcLines)r	r}rZrc_pathrWr
r
r�test_readrc_homedirIs
zPdbTestCase.test_readrc_homedirc	Csdt�}d}t��6}|�td|��|�t�tjd��tj|d�WdQRX|�|�	�|d�dS)Nz"Nobody expects... blah, blah, blahz
sys.stdout�	set_trace)�header�
)
rr�
enter_contextr�objectr'r(r�ra�getvalue)r	r>r�Z	resourcesr
r
r�test_headerVszPdbTestCase.test_headercCs:d}d}|�||�\}}|�tdd�|��D��|�dS)Nzprint("SUCCESS")z/
            continue
            quit
        css|]}d|kVqdS)�SUCCESSNr
)rmrnr
r
rrofsz.PdbTestCase.test_run_module.<locals>.<genexpr>)r_rprqrr)r	rUrLr>r?r
r
r�test_run_module_szPdbTestCase.test_run_modulecCs:d}d}|�||�\}}|�tdd�|��D��|�dS)NzQ
            if __name__ == '__main__':
                print("SUCCESS")
        z/
            continue
            quit
        css|]}d|kVqdS)r�Nr
)rmrnr
r
rrorsz9PdbTestCase.test_module_is_run_as_main.<locals>.<genexpr>)r_rprqrr)r	rUrLr>r?r
r
r�test_module_is_run_as_mainhsz&PdbTestCase.test_module_is_run_as_maincCsXd}d}|�||�\}}|�tdd�|��D��|�|�tdd�|��D��|�dS)Nz{
            if __name__ == '__main__':
                pass
                print("SUCCESS")
                pass
        z*
            b 3
            quit
        css|]}d|kVqdS)zBreakpoint 1 atNr
)rmrnr
r
rro�sz.PdbTestCase.test_breakpoint.<locals>.<genexpr>css|]}d|kVqdS)r�Nr
)rmrnr
r
rro�s)r_rprqrr�all)r	rUrLr>r?r
r
r�test_breakpointts
zPdbTestCase.test_breakpointcCs2d}|�ddg|�\}}|�tj|�dd��dS)Nz(
            c
            quit
        z-mr'�
rd)rOrwr'Z_usage�replace)r	rLr>r?r
r
r�test_run_pdb_with_pdb�s
z!PdbTestCase.test_run_pdb_with_pdbc	Csld}t�|�|d}t�|�t|d��}WdQRX|�tj|�|�d|gd�\}}|�d|���dS)NrYz/__init__.pyrPz-mrdz,ImportError: No module named t_main.__main__)	rrAr[r\rQr@rOrwrr)r	rZr^rWr>r?r
r
r�test_module_without_a_main�s


z&PdbTestCase.test_module_without_a_maincCs:d}d}|�||�\}}|�tdd�|��D��|�dS)NzY
                #This is a comment, on line 2

                print("SUCCESS")
        z
            quit
        css|]}d|kVqdS)z__main__.py(4)<module>()Nr
)rmrnr
r
rro�sz=PdbTestCase.test_blocks_at_first_code_line.<locals>.<genexpr>)r_rprqrr)r	rUrLr>r?r
r
r�test_blocks_at_first_code_line�s
z*PdbTestCase.test_blocks_at_first_code_linec	Cs2d|_t�|j�|jd}|jd}|jd}|�tj|j�t�|j�t|d��}|�t�	d��WdQRXt|d��}|�t�	d��WdQRXt|d��}|�t�	d��WdQRXd	}|�
d
|jg|�\}}|�tdd�|�
�D��|�|�td
d�|�
�D���|�tdd�|�
�D���dS)NrYz/__main__.pyz/__init__.pyz
/module.pyrPz6
                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
        z-mcss|]}d|kVqdS)zVAR from moduleNr
)rmrnr
r
rro�sz4PdbTestCase.test_relative_imports.<locals>.<genexpr>css|]}d|kVqdS)zVAR from topNr
)rmrnr
r
rro�scss|]}d|kVqdS)z
second varNr
)rmrnr
r
rro�s)rZrrAr@r[r\rQrRrSrTrOrprqrr)r	r]r^�module_filerWrLr>�_r
r
r�test_relative_imports�s*


z!PdbTestCase.test_relative_importsc	Cs�d|_t�|j�|jd}|jd}|jd}|�tj|j�t�|j�t|d��}|�t�	d��WdQRXt|d��}|�t�	d��WdQRXt|d��}|�t�	d��WdQRXd	}|�
d
|jdg|�\}}|�tdd
�|�
�D��|�dS)NrYz	/runme.pyz/__init__.pyz
/module.pyrPz6
                top_var = "VAR from top"
            zl
                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
        z-mz.runmecss|]}d|kVqdS)zVAR from moduleNr
)rmrnr
r
rro�szDPdbTestCase.test_relative_imports_on_plain_module.<locals>.<genexpr>)rZrrAr@r[r\rQrRrSrTrOrprqrr)r	r]r^r�rWrLr>r�r
r
r�%test_relative_imports_on_plain_module�s&


z1PdbTestCase.test_relative_imports_on_plain_modulecCsTd�ddddg�}|�d|d�\}}|�|��dd�dd	d
dd	dd
ddg	�dS)Nr�zprint(zdebug print(zdebug doesnotexist�crdr`z3(Pdb) *** SyntaxError: unexpected EOF while parsingz!(Pdb) ENTERING RECURSIVE DEBUGGERz-*** SyntaxError: unexpected EOF while parsingzLEAVING RECURSIVE DEBUGGERz> <string>(1)<module>()z9((Pdb)) *** NameError: name 'doesnotexist' is not definedz(Pdb) )r�rXrarr)r	rLr>r�r
r
r�test_errors_in_command�s z"PdbTestCase.test_errors_in_commandN)rrrr<rOrXr_rcrerhrlrsrvryr~r�r�r�r�r�r�r�r�r�r�r�r
r
r
rr9�s.$ 
		
%r9cGs*ddlm}t�t�t�|�g}t�|�S)Nr)�test_pdb)�testr��unittestZ	makeSuiter9�doctestZDocTestSuiteZ	TestSuite)�argsr�Zsuitesr
r
r�
load_testssr��__main__)5r�r[r'r�typesr�rCrS�
contextlibr�iorr�rZtest.test_doctestrZ
unittest.mockrr�rrrrrr r!r"r#�
ModuleType�mod�exec�__dict__r$r%r+r,r-r.r/r0r1r2r3r4r5r6r7r8ZTestCaser9r�r�mainr
r
r
r�<module>sZn`>
+*A;7<7),.)/{