Your IP : 216.73.216.213


Current Path : /opt/alt/python36/lib64/python3.6/test/__pycache__/
Upload File :
Current File : //opt/alt/python36/lib64/python3.6/test/__pycache__/test_bdb.cpython-36.opt-2.pyc

3

��2aפ�@s�ddlZddlZddlZddlZddlZddlZddlZddlm	Z	ddl
mZmZddl
ZGdd�de�ZGdd�de�ZGdd	�d	e�ZGd
d�de�ZdZdd
�Zdd�ZGdd�dej�ZGdd�de�ZGdd�d�Zd4dd�Ze	dd��Zeddfdd�ZdZedZdd �Z d!d"�Z!d#d$�Z"d%d&�Z#Gd'd(�d(ej$�Z%Gd)d*�d*e%�Z&Gd+d,�d,e%�Z'Gd-d.�d.e%�Z(Gd/d0�d0e%�Z)d1d2�Z*e+d3k�r�e*�dS)5�N)�contextmanager)�islice�repeatc@seZdZdS)�BdbExceptionN)�__name__�
__module__�__qualname__�r	r	�-/opt/alt/python36/lib64/python3.6/test_bdb.pyr>src@seZdZdS)�BdbErrorN)rrrr	r	r	r
r?src@seZdZdS)�BdbSyntaxErrorN)rrrr	r	r	r
r@src@seZdZdS)�BdbNotExpectedErrorN)rrrr	r	r	r
r
Asr
cCsdtj_itj_dgtj_dS)N�)�_bdb�
Breakpoint�nextZbplist�
bpbynumberr	r	r	r
�reset_BreakpointIsrc
Cs�dd�tjjD�}|sdSd}x~|D]v}|s4d}d}|jr>dnd}|jrLd	nd
}|d|j|||j|jtj	j
|j�|jf7}|j
r�|d|j
f7}|d
7}q$W|S)NcSsg|]}|r|�qSr	r	)�.0�bpr	r	r
�
<listcomp>Osz$info_breakpoints.<locals>.<listcomp>�Fz!BpNum Temp Enb Hits Ignore Where
Tzyes zno  �yeszno z%-5d %s %s %-4d %-6d at %s:%dz
	stop only if %s�
)rrr�	temporary�enabledZnumber�hits�ignore�os�path�basename�file�line�cond)�bp_listZheader_addedr�infoZdispZenabr	r	r
�info_breakpointsNs"
r&csfeZdZ�fdd�Zd�fdd�	Z�fdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Z�ZS)�Bdbcsd|_t�j|||�S)N)�	currentbp�super�trace_dispatch)�self�frame�event�arg)�	__class__r	r
r*fszBdb.trace_dispatchFNcs�t|t�rT|tkrt�}ntj|dd��}|j}t||�}|j}	|	j	}|	j
}|	j}t�j
|||||d�}
t|
t�r|t|
��|
S)N�)rr#�funcname���)�
isinstance�str�__file__�globals�	importlib�
import_module�__dict__�eval�__code__�co_filename�co_firstlineno�co_namer)�	set_breakr)r+�filename�linenorr#r1�globals_�module�func�code�res)r/r	r
r?js



z
Bdb.set_breakcs4t�j||�\|_|_|j|jd|_|j|jfS)Nr)r)�	get_stack�stack�indexr,)r+�f�t)r/r	r
rG~sz
Bdb.get_stackcCs|j|�}|jd7_dS)Nr)�get_bpbynumberr)r+�bpnumrr	r	r
�
set_ignore�s
zBdb.set_ignorecCs|j|�}d|_dS)NT)rLr)r+rMrr	r	r
�
set_enable�s
zBdb.set_enablecCs|j|�}d|_dS)NF)rLr)r+rMrr	r	r
�set_disable�s
zBdb.set_disablecCs|j||�}|rt|��dS)N)Zclear_breakr)r+�fnamerA�errr	r	r
�	set_clear�sz
Bdb.set_clearcCs2|jstd��|jd8_|j|jd|_dS)NzOldest framerr)rIrrHr,)r+r	r	r
�set_up�sz
Bdb.set_upcCs@|jdt|j�krtd��|jd7_|j|jd|_dS)NrzNewest framer)rI�lenrHrr,)r+r	r	r
�set_down�szBdb.set_down)FNN)
rrrr*r?rGrNrOrPrSrTrV�
__classcell__r	r	)r/r
r'csr'cs�eZdZd+�fdd�	Zdd�Z�fdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd,d%d&�Zd'd(�Zd)d*�Z�ZS)-�TracerNFcs<t�j|d�||_||_|dk	r*d|nd|_|j�dS)N)�skipzDry-run results for %s:)r)�__init__�
expect_set�dry_run�header�	init_test)r+r[rYr\�	test_case)r/r	r
rZ�s
zTracer.__init__cCsBd|_d|_d|_tt|jddd��|_tt|jddd��|_dS)Nr�r)�
cur_except�
expect_set_no�breakpoint_hits�listrr[�
expected_list�set_list)r+r	r	r
r^�s
zTracer.init_testcsl|jdk	r|j�|dkrXyt�j|||�}|Stk
rT}z||_|jSd}~XqhXnt�j|||�SdS)N�	exception)rar)r*r)r+r,r-r.rF�e)r/r	r
r*�s
zTracer.trace_dispatchcCs(|j|�sdS|jd||�|j�dS)N�call)Z	stop_here�
process_event�next_set_method)r+r,Z
argument_listr	r	r
�	user_call�s
zTracer.user_callcCs^|jd|�|jrD|jrDt�jd�}x|jd�D]}td|�q0W|j�d|_|j�dS)Nr"rz  )	rjr\rcr&�strip�split�print�delete_temporariesrk)r+r,r%r"r	r	r
�	user_line�szTracer.user_linecCs|jd||�|j�dS)N�return)rjrk)r+r,Zreturn_valuer	r	r
�user_return�szTracer.user_returncCs||_|jd|�|j�dS)Nrg)�exc_inforjrk)r+r,rtr	r	r
�user_exception�szTracer.user_exceptioncCs|jg}||f|_dS)N)r(rc)r+r.r$r	r	r
�do_clear�szTracer.do_clearcCs(|jr$x|jdD]}|j|�qWdS)Nr)rcZclear_bpbynumber)r+�nr	r	r
rp�szTracer.delete_temporariescCsV|jd7_y|jjd�|_Wn"tk
rBtd|j��YnX|jjd�|_dS)Nrrz-expect_set list exhausted, cannot pop item %d)rbre�pop�expect�
IndexErrorr
rf�	set_tuple)r+r	r	r
�pop_next�szTracer.pop_nextcs�d}|dkr�jd}�j||��jdk	rF�jrF�jg}|gf�_|�_�j��jrj�j�j�dS�j	r��j
�j	d|d��j�|dkr��jd�n�t
�j	�dk�r�|dk�rH�j	d\�}t�j��}�js�jd	�j��j
|�jdd
��j
�fdd�|D��fd
d��jdD�d��j
t|��jdd�n8|dk�r�t�jd�j	d��s��jd�j�jf�dS)Nrgr`rzWrong event typerirrr0r"z(No breakpoints hit at expect_set item %dzBreakpoint numbers do not matchcsg|]}�|�qSr	r	)rrw)�bpsr	r
rsz(Tracer.process_event.<locals>.<listcomp>csg|]}�j|�j�qSr	)rLr)rrw)r+r	r
r szWrong breakpoint hit countrzWrong temporary breakpointsz/Wrong exception at expect_set item %d, got '%s')rirr)rtrGr(rcr-r|r\�print_stater]ry�check_equal�check_lno_name�check_expect_max_sizerU�sorted�keys�raise_not_expectedrbr3)r+r-r,�args�tbr$ZtemporariesZbpnumsr	)r}r+r
rj�sL





zTracer.process_eventcCs&||krdS|jd||j|f�dS)Nz"%s at expect_set item %d, got '%s')r�rb)r+Zexpected�result�msgr	r	r
r,szTracer.check_equalcCsTt|j�}|dkr.|j�}|j|jd|d�|dkrP|j|jd|jjjd�dS)NrzWrong line numberr`zWrong function name)rUry�lno_abs2relrr,�f_coder>)r+�srAr	r	r
r�2s
zTracer.check_lno_namecCs&t|j�|kr"td|j|jf��dS)Nz'Invalid size of the %s expect tuple: %s)rUryrr-)r+�sizer	r	r
r�<szTracer.check_expect_max_sizecCs<|j|jjj�}|jj}||jt�kr8||jjjdS|S)Nr)�canonicr,r�r<�f_linenor5r=)r+rQrAr	r	r
r�AszTracer.lno_abs2relcCs.|r*|j|�|jt�kr*|jjj|dS|S)Nr)r�r5r,r�r=)r+rQrAr	r	r
�lno_rel2absGs*zTracer.lno_rel2abscCs�|j�}|jjj}d|j||f}|jr�d}x:|jdD],}|dkrL|d7}|d||j|�jf7}q8W|d7}d|dt|jd�d	}|d|7}n|jd
kr�|d|j	dj
7}|d7}|jd�t|j�d
S)Nz('%s', %d, '%s'�{rz, z%s: %s�}�(r�)rgz), � �,)
r�r,r�r>r-rcrLrr4rtr�ljustr{)r+rAr>�stater}rwr	r	r
�	get_stateLs 

zTracer.get_statecCs:|dk	r |jdkr t�t|�td|j|j�f�dS)Nrz%d: %s)rbror�)r+r]r	r	r
r~^szTracer.print_statecCs6|d7}|dt|j�7}|d|j�7}t|��dS)Nrz  Expected: %s
z  Got:      )r4ryr�r
)r+r�r	r	r
r�dszTracer.raise_not_expectedcCs^|jd}t|j�dkr"|jdnd}t|d|�}|dkrF|�dS|dkr\||j�dS|d
kr�d}|r�|j|jjj|d�}||j|�dS|r�|dks�|dk�rL|dk�r�|^}}}|j||�}||g}|j|�||�n$|dk�r�||�n|dk�r|�d|_|j	�|j
�r(|j�n|j�r8|j
�|jd�|j�ntd|j��dS)Nrr`rZset_�step�continue�quitrrr�until�break�clearr�enable�disable�up�downr0z"%s" is an invalid set_tuple)r�r�r�)rrr)r�r�rr�r�)r�r�)r�r�)rr�r�)r�r�)r{rU�getattrr,r�r�r<�extendr-r|r\r~ryr�r�rkr)r+�set_typer�Z
set_methodrArQZremainr	r	r
rkjsL












zTracer.next_set_method)NFN)N)rrrrZr^r*rlrqrsrurvrpr|rjrr�r�r�r�r�r~r�rkrWr	r	)r/r
rX�s(	

2

rXc@s(eZdZddd�Zdd�Zd	dd�ZdS)
�	TracerRunNcCs2||_|j|_t|j||j|j�d�|_d|_dS)N)rYr\r_)r_r\rXr[�id�tracer�_original_tracer)r+r_rYr	r	r
rZ�s
zTracerRun.__init__cCst�tj�|_|jS)N)r�sys�gettracer�r�)r+r	r	r
�	__enter__�s
zTracerRun.__enter__cCs�t�tj|j�d}|jjr6|d7}|d|jj7}|dk	r�tt|�r�t	|t
�r�|jr�|jd}|rr|d|7}|jr�t
|�dS|jj|�n|r�|jr�t
|�n|jj|�dS)Nrz+All paired tuples have not been processed, zthe last one was number %drrT)rr��settracer�r�rfrb�
issubclassr
r3�
BaseExceptionr�r\ror_�fail)r+Ztype_�value�	tracebackZ	not_emptyZerr_msgr	r	r
�__exit__�s(

zTracerRun.__exit__)N)NNN)rrrrZr�r�r	r	r	r
r��s
r�cCs�dd�}d	d
g}|j|�t�}d|_dd�|_t|tf�t|���|_t|��(t	||d��}|j
t�WdQRXWdQRXdS)Ncss@y&x t|�}t|�}|V|VqWWntk
r:dSXdS)N)r�
StopIteration)�a�b�x�yr	r	r
�gen�szrun_test.<locals>.genrr�TcSsdS)Nr	r	r	r	r
�<lambda>szrun_test.<locals>.<lambda>)rY)r)r�)r��BaseTestCaser\r�rdr�iterr[�create_modulesr��runcall�tfunc_import)�modulesrfrYr��sl�testr�r	r	r
�run_test�s3


r�ccs�tjj���tjjtj��z\xH|D]@}|d}t|d��}|j	t
j||��WdQRXtj
|�q$Wtj�dVWdx|D]}tjj|�q�Wtjj�XWdQRXdS)Nz.py�w)r��supportZtemp_cwdr�r�appendr�getcwd�open�write�textwrap�dedent�	linecache�
checkcacher7�invalidate_cachesZforgetrx)r��mrQrJr	r	r
r�s


r�FcCsd|d|||ffS)Nr�r	)r1rQrr#r	r	r
�
break_in_func%sr��test_module_for_bdbz.pycCsddl}|j�dS)Nr)r��main)r�r	r	r
r�*sr�cCs d}t�t�d}d}d}dS)Nr`���)�tfunc_first�tfunc_second)�lnor	r	r
�
tfunc_main.sr�cCsd}d}d}dS)Nr`r0�r	)r�r	r	r
r�6sr�cCsd}dS)Nr`r	)r�r	r	r
r�;sr�c@seZdZeZddd�ZdS)r�NcCs|j|�d�dS)N)ZfailureException)r+r�r	r	r
r�CszBaseTestCase.fail)N)rrrr\r�r	r	r	r
r�>sr�c@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�
StateTestCasec	Cs8d
ddd
ddddg|_t|��}|jt�WdQRXdS)Nr"r`r�r�r0rirr�r�)r"r`r�)r�)r"r0r�)r�)rirr�)r�)r"r`r�)r�)r[r�r�r�)r+r�r	r	r
�	test_stepKs

zStateTestCase.test_stepcCs�xzdD]r}|j|d��\ddddddtdffddddd
d	d	igff|fddg|_t|��}|jt�WdQRXWdQRXqWdS)Nr�r)r�r"r`r�r0rirr�r��Noner�r�r�)r�r)r"r`r�)r�)r"r0r�)r�)rirr�)r�rr�)r�)r"r�r�)r�)�subTestr5r[r�r�r�)r+r�r�r	r	r
� test_step_next_on_last_statementUs


z.StateTestCase.test_step_next_on_last_statementcCs<dd
ddddddddg
|_t|��}|jt�WdQRXdS)Nr"r`r�r�r0rr�rirr�r�)r"r`r�)r�)r"r0r�)r)r"r�r�)r�)rirr�)r�)r"r`r�)r�)r[r�r�r�)r+r�r	r	r
�	test_nextcs

zStateTestCase.test_nextcCsPd}t|i}t|��2dd	d
dg|_t|��}|jt�WdQRXWdQRXdS)Nz9
            def main():
                lno = 3
        r"r`r�rr0r�)r"r`r�)r)r"r0r�)r�)�TEST_MODULEr�r[r�r�r�)r+rEr�r�r	r	r
�test_next_over_importns


z#StateTestCase.test_next_over_importc	Cs8ddd
dddddg|_t|��}|jt�WdQRXdS)Nr"r`r�r�r0rirr�rr�)r"r`r�)r�)r"r0r�)r�)rirr�)r)r"r`r�)r�)r[r�r�r�)r+r�r	r	r
�test_next_on_plain_statement|s

z*StateTestCase.test_next_on_plain_statementcCs<ddddddddddg
|_t|��}|jt�WdQRXdS)Nr"r`r�r�r0rirr�r�r�rr�r�)r"r`r�)r�)r"r0r�)r�)rirr�)r�)r�r0r�)r)r"r�r�)r�)r[r�r�r�)r+r�r	r	r
�test_next_in_caller_frame�s

z'StateTestCase.test_next_in_caller_framec
Cs@dd
ddddddddddg|_t|��}|jt�WdQRXdS)Nr"r`r�r�r0rirr�rrr�r�)r"r`r�)r�)r"r0r�)r�)rirr�)r�)r"r`r�)rr)rrr�r�)r�)r"r�r�)r�)r[r�r�r�)r+r�r	r	r
�test_return�s

zStateTestCase.test_returncCs<ddddddddddg
|_t|��}|jt�WdQRXdS)Nr"r`r�r�r0rirr�r�r�rrr�r�)r"r`r�)r�)r"r0r�)r�)rirr�)r�)r�r0r�)rr)rrr�r�)r�)r[r�r�r�)r+r�r	r	r
�test_return_in_caller_frame�s

z)StateTestCase.test_return_in_caller_framecCs<dd
ddddddddg
|_t|��}|jt�WdQRXdS)Nr"r`r�r�r0rirr�r�r�r�)r"r`r�)r�)r"r0r�)r�)rirr�)r�)r"r`r��r�)r�r�)r"r�r�)r�)r[r�r�r�)r+r�r	r	r
�
test_until�s

zStateTestCase.test_untilc	CsLd
td�dddddddigffdddg|_t|��}|jt�WdQRXdS)Nr"r`r�r�r�r�rr��'rrr�r�)r"r`r�)r�r`r�)r��r�)r�r�)rrr�r�)r�)r�r[r�r�r�)r+r�r	r	r
�test_until_with_too_large_count�s

z-StateTestCase.test_until_with_too_large_countcCs<ddddddddddg
|_t|��}|jt�WdQRXdS)Nr"r`r�r�r0rirr�r�r�r�r�r�)r"r`r�)r�)r"r0r�)r�)rirr�)r�)r�r0r��r�)r�r�)r"r�r�)r�)r[r�r�r�)r+r�r	r	r
�test_until_in_caller_frame�s

z(StateTestCase.test_until_in_caller_framecCs\d}t|i}t|��>d
ddd
g|_dtf}t||d	��}|jt�WdQRXWdQRXdS)Nz9
            def main():
                lno = 3
        r"r`r�r�r0r�z
importlib*)rY)r"r`r�)r�)r"r0r�)r�)r�r�r[r�r�r�)r+rEr�rYr�r	r	r
�	test_skip�s

zStateTestCase.test_skipcCs2ddg|_t|��}|jt|jt�WdQRXdS)Nr"r`r�r�)r"r`r�)r�)r[r��assertRaisesrr�r�)r+r�r	r	r
�	test_down�s

zStateTestCase.test_downc	Cs8dd
ddddddg|_t|��}|jt�WdQRXdS)Nr"r`r�r�r0rirr�r�r�r�)r"r`r�)r�)r"r0r�)r�)rirr�)r�)r�r0r�)r�)r[r�r�r�)r+r�r	r	r
�test_up�s

zStateTestCase.test_upN)rrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r	r	r	r
r�Hs


r�c@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�BreakpointTestCasecCs2dd	g|_t|��}|jt|jt�WdQRXdS)
Nr"r`r�r��/non/existent/module.pyr)r"r`r��r�r)r�r�)r[r�r�rr�r�)r+r�r	r	r
�test_bp_on_non_existent_module�s

z1BreakpointTestCase.test_bp_on_non_existent_modulecCsZd}t|i}t|��<ddtdffg|_t|��}|jt|jt�WdQRXWdQRXdS)Nz9
            def main():
                lno = 3
        r"r`r�r�r�)r"r`r�)	r�r��TEST_MODULE_FNAMEr[r�r�rr�r�)r+rEr�r�r	r	r
�test_bp_after_last_statement�s

z/BreakpointTestCase.test_bp_after_last_statementcCs�d}t|i}t|��rdtdtd�d
tdtd�dddd	dd
d
id
gffddd	ddd
idgffdg
|_t|��}|jt�WdQRXWdQRXdS)Nz�
            def func():
                lno = 3

            def main():
                for i in range(2):
                    func()
        r"r`r�rDTr�r�r0rr�)r"r`r�)r�r`r�)r�r`r�)r�)r�)r�)r�r�r�r�r[r�r�r�)r+rEr�r�r	r	r
�test_temporary_bps



z$BreakpointTestCase.test_temporary_bpcCs�d}t|i}t|���dtdt�dtdtd�dddddd
dddigffddddddd
dddidgffddddd
dddigffd g|_t|��}|jt�WdQRXWdQRXdS)!Nz�
            def func():
                lno = 3

            def main():
                for i in range(3):
                    func()
        r"r`r�rDr�Tr�r�r0rr�r�)r"r`r�)r�r`r�)r�r`r��r`)r�r�)r�r`r�)r��r`)r�r�)r�r0rD�r)r�r�)r�r0rD)r��r)r�r�)r�r0rD)r�)r�)r�r�r�r�r[r�r�r�)r+rEr�r�r	r	r
�test_disabled_temporary_bps"


z-BreakpointTestCase.test_disabled_temporary_bpcCsnd}t|i}t|��Pd
tdtdd�dddd
ddd
igffdg|_t|��}|jt�WdQRXWdQRXdS)Nz�
            def func(a):
                lno = 3

            def main():
                for i in range(3):
                    func(i)
        r"r`r�rDFza == 2r�r�r0rr�)r"r`r�)r�r`r�)r�)r�)r�r�r�r�r[r�r�r�)r+rEr�r�r	r	r
�test_bp_condition9s

z$BreakpointTestCase.test_bp_conditioncCsnd}t|i}t|��Pd
tdtdd�dddd
dddigffdg|_t|��}|jt�WdQRXWdQRXdS)Nzk
            def func(a):
                lno = 3

            def main():
                func(0)
        r"r`r�rDFz1 / 0r�r�r0rr�)r"r`r�)r�r`r�)r�)r�)r�r�r�r�r[r�r�r�)r+rEr�r�r	r	r
�)test_bp_exception_on_condition_evaluationMs

z<BreakpointTestCase.test_bp_exception_on_condition_evaluationcCsnd}t|i}t|��Pdtdt�d
ddddd
dddigffdg|_t|��}|jt�WdQRXWdQRXdS)Nz�
            def func():
                lno = 3

            def main():
                for i in range(2):
                    func()
        r"r`r�rDr�rrr�r0r�)r"r`r�)r�r`r��r)rr)r�r`r�)r�)r�)r�r�r�r�r[r�r�r�)r+rEr�r�r	r	r
�test_bp_ignore_count`s

z'BreakpointTestCase.test_bp_ignore_countcCs�d}t|i}t|���dtdt�dtdt�dddddddddddigffddddddddigffddddddigffdg|_t|��}|jt�WdQRXWdQRXdS)Nz�
            def func():
                lno = 3

            def main():
                for i in range(3):
                    func()
        r"r`r�rDr�rrr�r�r0r�r�)r"r`r�)r�r`r�)r�r`r��r)rr)r�r`r��r)r�r)r�r`r�)r��r)r�r)r�r0rD)r�)r�)r�)r�r�r�r�r[r�r�r�)r+rEr�r�r	r	r
� test_ignore_count_on_disabled_bpus 

z3BreakpointTestCase.test_ignore_count_on_disabled_bpcCs�d}t|i}t|���ddtdffddtdffddtdffddddd
ddigffdddd
ddigffdtdffddddd
ddigffdg|_t|��}|jt�WdQRXWdQRXdS)Nz�
            def func():
                lno = 3
                lno = 4

            def main():
                for i in range(3):
                    func()
        r"r`r�r�r0r�r�r�rDrr�r�)r"r`r�)r�r`r�)r�r`r�)r�r`r�)r�)r�)r�r�rD)r�)r�)r�r�r�r[r�r�r�)r+rEr�r�r	r	r
�test_clear_two_bp_on_same_line�s	

z1BreakpointTestCase.test_clear_two_bp_on_same_linecCs:ddtdffg|_t|��}|jt|jt�WdQRXdS)Nr"r`r�r�r)r"r`r�)r5r[r�r�rr�r�)r+r�r	r	r
�test_clear_at_no_bp�s
z&BreakpointTestCase.test_clear_at_no_bpN)
rrrr�r�r�r�r�r�rrrrr	r	r	r
r��s
r�c@seZdZdd�Zdd�ZdS)�RunTestCasecCsBd}d
ddd
g|_t|��}|jttj|�dd	��WdQRXdS)Nz
            lno = 2
        r"r`�<module>r�rrr�z<string>�exec)r"r`r	)r�)rrr`r	)r�)r[r�Zrun�compiler�r�)r+rEr�r	r	r
�
test_run_step�s


zRunTestCase.test_run_stepcCsld}t|i}t|��Nddddddddddg
|_ddl}t|��}|jd
t�t��WdQRXWdQRXdS)Nz9
            def main():
                lno = 3
        r"r�<module>r�rir`r�r0rrr�rztest_module_for_bdb.main())r"rr
)r�)rir`r�)r�)r"r0r�)r�)rrr0r�)r�)rrrr
)r�)r�r�r[r�r�Zrunevalr6�locals)r+rEr�r�r�r	r	r
�test_runeval_step�s


zRunTestCase.test_runeval_stepN)rrrrrr	r	r	r
r�src@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�IssuesTestCasecCszd}d}t|d|i}t|��Tdtdd�dddddddigffdddddg
|_t|��}|jt�WdQRXWdQRXdS)Nz�
            from test_module_for_bdb_2 import func
            def main():
                func()
                lno = 5
        z9
            def func():
                lno = 3
        Ztest_module_for_bdb_2r"r`r�rDztest_module_for_bdb_2.pyr�r�r0rr�rrr�r�r�)r"r`r�)r�r`r�)r�)r�)rrr0rD)r�)r"r�r�)r�)r�r�r�r[r�r�r�)r+Zcode_1Zcode_2r�r�r	r	r
�+test_step_at_return_with_no_trace_in_caller�s	


z:IssuesTestCase.test_step_at_return_with_no_trace_in_callercCs�d}t|i}x�dD]�}|j|d���t|���dtd	t�ddddd	d
d
igff|fg|_|dkr~|jjdddtfdddg�n|jjddg�t|��}|j	t
�WdQRXWdQRXWdQRXqWdS)Nz�
            def test_gen():
                yield 0
                lno = 4
                return 123

            def main():
                it = test_gen()
                next(it)
                next(it)
                lno = 11
        rr�rr)r�r"r`r��test_genr�r�r0rrg�
r�r�r�r�)rr�rr)r"r`r�)r�r`r�)r�)r�)rrrr�)r�)r"r�r)r�)r�r�r�r�r�r[r�r�r�r�r�)r+rEr�r�r�r	r	r
�#test_next_until_return_in_generator�s"



z2IssuesTestCase.test_next_until_return_in_generatorcCs�d}t|i}t|��hdtdt�dddddd	d	igffddddddddddtfddd g|_t|��}|jt�WdQRXWdQRXdS)!Nz�
            def test_gen():
                yield 0
                lno = 4
                yield 1
                return 123

            def main():
                for i in test_gen():
                    lno = 10
                lno = 11
        r"r`r�rr�r�r0rrr�r�r�rg�	r�r��r�)r"r`r�)r�r`r�)r�)r)r"r�r)r)r"r�r)r)r"r�r)r)r�)r"rr�)r�)	r�r�r�r�r�r[r�r�r�)r+rEr�r�r	r	r
�'test_next_command_in_generator_for_loops



z6IssuesTestCase.test_next_command_in_generator_for_loopcCs~d}t|i}t|��`dtdt�dddddd	d	igffddddd
dtfdddg|_t|��}|jt�WdQRXWdQRXdS)Na4
            def test_subgen():
                yield 0
                return 123

            def test_gen():
                x = yield from test_subgen()
                return 456

            def main():
                for i in test_gen():
                    lno = 12
                lno = 13
        r"r`r�rr�r�r�rr�rgrr�r��
r�)r"r`r�)r�r`r�)r�)r)r"rr)r)r�)r"rr�)r�)	r�r�r�r�r�r[r�r�r�)r+rEr�r�r	r	r
�/test_next_command_in_generator_with_subiterator;s


z>IssuesTestCase.test_next_command_in_generator_with_subiteratorcCs�d}t|i}t|��hdtdt�dddddd	d	igffdddd
tfddddtfdddg|_t|��}|jt�WdQRXWdQRXdS)Na4
            def test_subgen():
                yield 0
                return 123

            def test_gen():
                x = yield from test_subgen()
                return 456

            def main():
                for i in test_gen():
                    lno = 12
                lno = 13
        r"r`r�Ztest_subgenr�r�r0rrrrgr�rrr�r�rr�)r"r`r�)r�r`r�)r�)rr)rr)r�)r"rr�)r�)	r�r�r�r�r�r[r�r�r�)r+rEr�r�r	r	r
�1test_return_command_in_generator_with_subiteratorZs


z@IssuesTestCase.test_return_command_in_generator_with_subiteratorN)rrrrrrrrr	r	r	r
r�s
)rcCstjjtttt�dS)N)r�r�Zrun_unittestr�rr�rr	r	r	r
�	test_mainys
r�__main__)N),Zbdbrr�rZunittestr�r7r��
contextlibr�	itertoolsrrZtest.supportr��	Exceptionrrrr
r\rr&r'rXr�r�r�r5r�r�r�r�r�r�r�ZTestCaser�r�r�rrrrr	r	r	r
�<module>3sP@z.
J
(B"(