a
    Rh                     @   s  d dl Zd dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
mZmZ d dlZG dd deZG dd deZG dd	 d	eZG d
d deZd Zdd Zdd ZG dd dejZG dd deZG dd dZd2ddZe	dd ZeddfddZdZed Zdd  Z d!d" Z!d#d$ Z"d%d& Z#G d'd( d(ej$Z%G d)d* d*e%Z&G d+d, d,e%Z'G d-d. d.e%Z(G d/d0 d0e%Z)e*d1kre+  dS )3    N)contextmanager)islicerepeatc                   @   s   e Zd ZdS )BdbExceptionN__name__
__module____qualname__ r
   r
   5/opt/python-3.9.24/usr/lib/python3.9/test/test_bdb.pyr   >       r   c                   @   s   e Zd ZdS )BdbErrorNr   r
   r
   r
   r   r   ?   r   r   c                   @   s   e Zd ZdS )BdbSyntaxErrorNr   r
   r
   r
   r   r   @   r   r   c                   @   s   e Zd ZdS )BdbNotExpectedErrorNr   r
   r
   r
   r   r   A   r   r   c                   C   s   dt j_i t j_d gt j_d S N   )_bdb
BreakpointnextZbplist
bpbynumberr
   r
   r
   r   reset_BreakpointI   s    r   c                  C   s   dd t jjD } | sdS d}| D ]v}|s2d}d}|jr<dnd}|jrJd	nd
}|d|j|||j|jtj	
|j|jf 7 }|jr|d|jf 7 }|d7 }q"|S )Nc                 S   s   g | ]}|r|qS r
   r
   ).0bpr
   r
   r   
<listcomp>O   r   z$info_breakpoints.<locals>.<listcomp> Fz!BpNum Temp Enb Hits Ignore Where
Tzyes zno  Zyeszno z%-5d %s %s %-4d %-6d at %s:%dz
	stop only if %s
)r   r   r   	temporaryenablednumberhitsignoreospathbasenamefilelinecond)bp_listZheader_addedr   infoZdispZenabr
   r
   r   info_breakpointsN   s&    
r)   c                       sf   e Zd Z fddZd fdd	Z fddZd	d
 Zdd Zdd Zdd Z	dd Z
dd Z  ZS )Bdbc                    s   d | _ t |||S N)	currentbpsupertrace_dispatch)selfframeeventarg	__class__r
   r   r.   f   s    zBdb.trace_dispatchFNc                    s   t |trT|tkrt }nt|d d }|j}t||}|j}	|	j	}|	j
}|	j}t j|||||d}
t |
tr|t|
|
S )N)r   r&   funcname)
isinstancestr__file__globals	importlibimport_module__dict__eval__code__co_filenameco_firstlinenoco_namer-   	set_breakr   )r/   filenamelinenor   r&   r6   globals_modulefunccoderesr3   r
   r   rC   j   s     


zBdb.set_breakc                    s4   t  ||\| _| _| j| j d | _| j| jfS Nr   )r-   	get_stackstackindexr0   )r/   ftr3   r
   r   rL   ~   s    zBdb.get_stackc                 C   s   |  |}| jd7  _d S r   )get_bpbynumberr    r/   Zbpnumr   r
   r
   r   
set_ignore   s    
zBdb.set_ignorec                 C   s   |  |}d|_d S )NTrQ   r   rR   r
   r
   r   
set_enable   s    
zBdb.set_enablec                 C   s   |  |}d|_d S )NFrT   rR   r
   r
   r   set_disable   s    
zBdb.set_disablec                 C   s   |  ||}|rt|d S r+   )Zclear_breakr   )r/   fnamerE   errr
   r
   r   	set_clear   s    zBdb.set_clearc                 C   s2   | j std|  j d8  _ | j| j  d | _d S )NzOldest framer   r   )rN   r   rM   r0   r/   r
   r
   r   set_up   s    z
Bdb.set_upc                 C   s@   | j d t| jkrtd|  j d7  _ | j| j  d | _d S )Nr   zNewest framer   )rN   lenrM   r   r0   rZ   r
   r
   r   set_down   s    zBdb.set_down)FNN)r   r   r	   r.   rC   rL   rS   rU   rV   rY   r[   r]   __classcell__r
   r
   r3   r   r*   c   s     r*   c                       s   e Zd Zd+ fdd	Zdd Z fddZd	d
 Zdd Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd,d%d&Zd'd( Zd)d* Z  ZS )-TracerNFc                    s<   t  j|d || _|| _|d ur*d| nd | _|   d S )NskipzDry-run results for %s:)r-   __init__
expect_setdry_runheader	init_test)r/   rc   ra   rd   	test_caser3   r
   r   rb      s    
zTracer.__init__c                 C   sB   d | _ d| _d | _tt| jdd d| _tt| jdd d| _d S )Nr      r   )
cur_exceptexpect_set_nobreakpoint_hitslistr   rc   expected_listset_listrZ   r
   r
   r   rf      s
    zTracer.init_testc              
      sv   | j d ur| j |dkrbzt |||}|W S  ty^ } z|| _ | jW  Y d }~S d }~0 0 nt |||S d S N	exception)ri   r-   r.   r   )r/   r0   r1   r2   rJ   er3   r
   r   r.      s    
zTracer.trace_dispatchc                 C   s(   |  |sd S | d|| |   d S )Ncall)Z	stop_hereprocess_eventnext_set_method)r/   r0   Zargument_listr
   r
   r   	user_call   s    
zTracer.user_callc                 C   sZ   |  d| | jr@| jr@t d}|dD ]}td|  q.|   d | _|   d S )Nr%   r   z  )	rs   rd   rk   r)   stripsplitprintdelete_temporariesrt   )r/   r0   r(   r%   r
   r
   r   	user_line   s    zTracer.user_linec                 C   s   |  d|| |   d S )Nreturn)rs   rt   )r/   r0   Zreturn_valuer
   r
   r   user_return   s    zTracer.user_returnc                 C   s   || _ | d| |   d S ro   )exc_infors   rt   )r/   r0   r}   r
   r
   r   user_exception   s    zTracer.user_exceptionc                 C   s   | j g}||f| _d S r+   )r,   rk   )r/   r2   r'   r
   r
   r   do_clear   s    zTracer.do_clearc                 C   s$   | j r | j d D ]}| | qd S r   )rk   Zclear_bpbynumber)r/   nr
   r
   r   ry      s    zTracer.delete_temporariesc                 C   sT   |  j d7  _ z| jd| _W n  ty@   td| j  Y n0 | jd| _d S )Nr   r   z-expect_set list exhausted, cannot pop item %d)rj   rm   popexpect
IndexErrorr   rn   	set_tuplerZ   r
   r
   r   pop_next   s    
zTracer.pop_nextc                    s  d }|dkrj d }|| jd urDjsDjg}|g f_|_  jrhj d S j	r
j	d |d   |dv rd ntj	dkr~|dkrFj	d \ }t  }jsdj  
|jd d	 
 fd
d|D fddjd D d 
t|jd d n8|dkr~tj d j	d s~djj f  d S )Nrp   rh   r   zWrong event type)rr   r{      r%   z(No breakpoints hit at expect_set item %dzBreakpoint numbers do not matchc                    s   g | ]} | qS r
   r
   r   r   )bpsr
   r   r     r   z(Tracer.process_event.<locals>.<listcomp>c                    s   g | ]}  |jqS r
   )rQ   r   r   rZ   r
   r   r      s   zWrong breakpoint hit countr   zWrong temporary breakpointsz/Wrong exception at expect_set item %d, got '%s')r}   rL   r,   rk   r1   r   rd   print_statere   r   check_equalcheck_lno_namecheck_expect_max_sizer\   sortedkeysraise_not_expectedrj   r7   )r/   r1   r0   argstbr'   ZtemporariesZbpnumsr
   )r   r/   r   rs      s\    





zTracer.process_eventc                 C   s&   ||krd S |  d|| j|f  d S )Nz"%s at expect_set item %d, got '%s')r   rj   )r/   Zexpectedresultmsgr
   r
   r   r   ,  s
    
zTracer.check_equalc                 C   sT   t | j}|dkr.|  }| | jd |d |dkrP| | jd | jjjd d S )Nr   zWrong line numberrh   zWrong function name)r\   r   lno_abs2relr   r0   f_coderB   )r/   srE   r
   r
   r   r   2  s    
zTracer.check_lno_namec                 C   s&   t | j|kr"td| j| jf d S )Nz'Invalid size of the %s expect tuple: %s)r\   r   r   r1   )r/   sizer
   r
   r   r   <  s    
zTracer.check_expect_max_sizec                 C   s<   |  | jjj}| jj}||  tkr8|| jjj d S |S r   )canonicr0   r   r@   f_linenor9   rA   r/   rW   rE   r
   r
   r   r   A  s    zTracer.lno_abs2relc                 C   s.   |r*|  ||  tkr*| jjj| d S |S r   )r   r9   r0   r   rA   r   r
   r
   r   lno_rel2absG  s    zTracer.lno_rel2absc                 C   s   |   }| jjj}d| j||f }| jrd}| jd D ],}|dkrJ|d7 }|d|| |jf 7 }q6|d7 }d| d t| jd  d	 }|d| 7 }n| jd
kr|d| j	d j
 7 }|d7 }|dt| j d S )Nz('%s', %d, '%s'{r   z, z%s: %s}(r   )rp   z),     ,)r   r0   r   rB   r1   rk   rQ   r   r8   r}   r   ljustr   )r/   rE   rB   stater   r   r
   r
   r   	get_stateL  s     

zTracer.get_statec                 C   s:   |d ur | j dkr t  t| td| j |  f  d S )Nr   z%d: %s)rj   rx   r   )r/   re   r
   r
   r   r   ^  s    zTracer.print_statec                 C   s6   |d7 }|dt | j 7 }|d|   7 }t|d S )Nr   z  Expected: %s
z  Got:      )r8   r   r   r   r/   r   r
   r
   r   r   d  s    zTracer.raise_not_expectedc                 C   sZ  | j d }t| j dkr"| j d nd }t| d| }|dv rF|  d S |dv r\|| j d S |dkrd }|r| | jjj|d }|| j| d S |r|dv s|d	v rH|d
v r|^}}}| ||}||g}|| ||  n"|dv r||  n|d	v r|  d | _| 	  | j
r$|   n| jr4|   | d |   ntd| j  d S )Nr   rh   r   Zset_)stepcontinuequit)r   r{   until)breakclearr    enabledisable)updown)r   r   )r    r   r   r   z"%s" is an invalid set_tuple)r   r\   getattrr0   r   r   r@   extendr1   r   rd   r   r   r   r   rt   r   )r/   set_typer   Z
set_methodrE   rW   Zremainr
   r
   r   rt   j  sR    









zTracer.next_set_method)NFN)N)r   r   r	   rb   rf   r.   ru   rz   r|   r~   r   ry   r   rs   r   r   r   r   r   r   r   r   rt   r^   r
   r
   r3   r   r_      s(   	
2

r_   c                   @   s(   e Zd ZdddZdd Zd	ddZdS )
	TracerRunNc                 C   s2   || _ |j| _t|j|| j| d| _d | _d S )N)ra   rd   rg   )rg   rd   r_   rc   idtracer_original_tracer)r/   rg   ra   r
   r
   r   rb     s    
zTracerRun.__init__c                 C   s   t   t | _| jS r+   )r   sysgettracer   r   rZ   r
   r
   r   	__enter__  s    
zTracerRun.__enter__c                 C   s   t   t| j d}| jjr6|d7 }|d| jj 7 }|d urtt|rt	|t
r|jr|jd }|rr|d| 7 }| jrt| dS | j| n |r| jrt| n| j| d S )Nr   z+All paired tuples have not been processed, zthe last one was number %dr   r   T)r   r   settracer   r   rn   rj   
issubclassr   r7   BaseExceptionr   rd   rx   rg   fail)r/   type_value	traceback	not_emptyerr_msgr
   r
   r   __exit__  s*    

zTracerRun.__exit__)N)NNN)r   r   r	   rb   r   r   r
   r
   r
   r   r     s   
r   c              	   C   s   dd }ddg}| | t }d|_dd |_t|tdt||_t| F t	||d	}|
t W d    n1 s~0    Y  W d    n1 s0    Y  d S )
Nc                 s   s<   z"t | }t |}|V  |V  qW n ty6   Y d S 0 d S r+   )r   StopIteration)abxyr
   r
   r   gen  s    zrun_test.<locals>.genr   r   Tc                   S   s   d S r+   r
   r
   r
   r
   r   <lambda>  r   zrun_test.<locals>.<lambda>r
   r`   )r   BaseTestCaserd   r   rl   r   iterrc   create_modulesr   runcalltfunc_import)modulesrn   ra   r   sltestr   r
   r
   r   run_test  s    3


r   c                 c   s   t j  tjt  z| D ]T}|d }t|d$}|	t
| |  W d    n1 sb0    Y  t| q"t  d V  W | D ]}t j| qtj  n"| D ]}t j| qtj  0 W d    n1 s0    Y  d S )N.pyw)r   supportZtemp_cwdr   r"   appendr!   getcwdopenwritetextwrapdedent	linecache
checkcacher;   invalidate_cachesZforgetr   )r   mrW   rO   r
   r
   r   r     s     2r   Fc                 C   s   d|d ||| ffS )Nr   r
   )r6   rW   r   r&   r
   r
   r   break_in_func%  s    r   test_module_for_bdbr   c                  C   s   dd l } |   d S rK   )r   main)r   r
   r
   r   r   *  s    r   c                  C   s    d} t   t  d} d} d} d S )Nrh            )tfunc_firsttfunc_secondlnor
   r
   r   
tfunc_main.  s    r   c                  C   s   d} d} d} d S )Nrh   r      r
   r   r
   r
   r   r   6  s    r   c                  C   s   d} d S )Nrh   r
   r   r
   r
   r   r   ;  s    r   c                   @   s   e Zd ZeZdddZdS )r   Nc                 C   s   |  |d d S r+   )ZfailureExceptionr   r
   r
   r   r   C  s    zBaseTestCase.fail)N)r   r   r	   rd   r   r
   r
   r
   r   r   >  s   r   c                   @   s   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd Zdd Zdd Zdd Zdd ZdS ) StateTestCasec                 C   s@   g d| _ t| }|t W d    n1 s20    Y  d S )N)r%   rh   r   r   r%   r   r   r   rr   r   r   r   r%   rh   r   r   rc   r   r   r   r/   r   r
   r
   r   	test_stepK  s    

zStateTestCase.test_stepc                 C   s   dD ]}| j |dz ddddddtdffd	d
dddddig ff|fddg| _t| }|t W d    n1 sv0    Y  W d    q1 s0    Y  qd S )N)r   r   r   r   r   r   r   r   r   )Noner   r   r   r%   r   r   r%   r   r   r   )subTestr9   rc   r   r   r   )r/   r   r   r
   r
   r    test_step_next_on_last_statementU  s    
z.StateTestCase.test_step_next_on_last_statementc                 C   s@   g d| _ t| }|t W d    n1 s20    Y  d S )N)
r   r   r   r   r%   r   r   r   )rr   r   r   r   )r%   rh   r   r   r   r   r
   r
   r   	test_nextc  s    

zStateTestCase.test_nextc              	   C   st   d}t |i}t|L g d| _t| }|t W d    n1 sH0    Y  W d    n1 sf0    Y  d S )N9
            def main():
                lno = 3
        )r%   rh   r   r   r%   r   r   r   TEST_MODULEr   rc   r   r   r   r/   rI   r   r   r
   r
   r   test_next_over_importn  s    


z#StateTestCase.test_next_over_importc                 C   s@   g d| _ t| }|t W d    n1 s20    Y  d S )N)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_statementc                 C   s@   g d| _ t| }|t W d    n1 s20    Y  d S )N)
r   r   r   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                 C   s@   g d| _ t| }|t W d    n1 s20    Y  d S )N)r   r   r   r   r   r   r   r{   r{   r   r   r   r   r   r   r   r
   r
   r   test_return  s    

zStateTestCase.test_returnc                 C   s@   g d| _ t| }|t W d    n1 s20    Y  d S )N)
r   r   r   r   r   r  r	  r  )r{   r   r   r   r   r   r
   r
   r   test_return_in_caller_frame  s    

z)StateTestCase.test_return_in_caller_framec                 C   s@   g d| _ t| }|t W d    n1 s20    Y  d S )N)
r   r   r   r   r   r   r   )r   )r   r   r   r   r   r
   r
   r   
test_until  s    

zStateTestCase.test_untilc              	   C   s`   dt ddddddddig ffdd	d
g| _t| }|t W d    n1 sR0    Y  d S )Nr   r   )r   rh   r   r   r%   rh   r   )r   )i'  r  r   )r   rc   r   r   r   r   r
   r
   r   test_until_with_too_large_count  s    
z-StateTestCase.test_until_with_too_large_countc                 C   s@   g d| _ t| }|t W d    n1 s20    Y  d S )N)
r   r   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_framec              	   C   s   d}t |i}t|\ g d| _dddt f}t| |d}|t W d    n1 sX0    Y  W d    n1 sv0    Y  d S )Nr   )r  r   r  r   z
importlib*Z	zipimportzencodings.*r`   r  )r/   rI   r   ra   r   r
   r
   r   	test_skip  s    

zStateTestCase.test_skipc                 C   s"   t dgd}| |d d d S )Nz	anything*r`   F)r*   ZassertIsZis_skipped_module)r/   bdbr
   r
   r   test_skip_with_no_name_module  s    z+StateTestCase.test_skip_with_no_name_modulec                 C   sF   ddg| _ t|  }| t|jt W d    n1 s80    Y  d S )Nr   )r   )rc   r   assertRaisesr   r   r   r   r
   r
   r   	test_down  s    
zStateTestCase.test_downc                 C   s@   g d| _ t| }|t W d    n1 s20    Y  d S )N)r   r   r   r   r   r  r	  r   r   r   r
   r
   r   test_up  s    

zStateTestCase.test_upN)r   r   r	   r   r   r   r  r  r
  r  r  r  r  r  r  r  r  r  r
   r
   r
   r   r   H  s   

r   c                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )BreakpointTestCasec                 C   sF   ddg| _ t|  }| t|jt W d    n1 s80    Y  d S )Nr  )r   )z/non/existent/module.pyr   )rc   r   r  r   r   r   r   r
   r
   r   test_bp_on_non_existent_module  s    
z1BreakpointTestCase.test_bp_on_non_existent_modulec              	   C   s   d}t |i}t|Z ddtdffg| _t|  }| t|jt W d    n1 sV0    Y  W d    n1 st0    Y  d S )Nr   r  r   r   )	r  r   TEST_MODULE_FNAMErc   r   r  r   r   r   r  r
   r
   r   test_bp_after_last_statement   s    

z/BreakpointTestCase.test_bp_after_last_statementc                 C   s   d}t |i}t| dtdtddtdtddddddd	d	id	gffddddd
d	id
gffdg
| _t| }|t W d    n1 s0    Y  W d    n1 s0    Y  d S )N
            def func():
                lno = 3

            def main():
                for i in range(2):
                    func()
        r  rH   Tr   rh   r   r   r%   r   r   rh   r   r  r   r   r  rc   r   r   r   r  r
   r
   r   test_temporary_bp  s    


	
z$BreakpointTestCase.test_temporary_bpc                 C   s   d}t |i}t| dtdtdtdtddddddd	dd
d
ig ffddddddd	ddd
idgffddddd	dd
dig ffdg| _t| }|t W d    n1 s0    Y  W d    n1 s0    Y  d S )N
            def func():
                lno = 3

            def main():
                for i in range(3):
                    func()
        r  rH   r  T)r   rh   r   r%   r   r   )r   r!  r   r   rH   r   r   rh   r   r$  r   r  r  r
   r
   r   test_disabled_temporary_bp$  s$    


z-BreakpointTestCase.test_disabled_temporary_bpc              
   C   s   d}t |i}t|n dtdtdddddd	dd
d	ig ffdg| _t| }|t W d    n1 sj0    Y  W d    n1 s0    Y  d S )Nz
            def func(a):
                lno = 3

            def main():
                for i in range(3):
                    func(i)
        r  rH   Fza == 2r  r   r%   r   r   r   r  r  r
   r
   r   test_bp_condition@  s    

z$BreakpointTestCase.test_bp_conditionc              
   C   s   d}t |i}t|n dtdtdddddd	dd
d
ig ffdg| _t| }|t W d    n1 sj0    Y  W d    n1 s0    Y  d S )Nzk
            def func(a):
                lno = 3

            def main():
                func(0)
        r  rH   Fz1 / 0r  r   r%   r   r   r   r  r  r
   r
   r   )test_bp_exception_on_condition_evaluationT  s    

z<BreakpointTestCase.test_bp_exception_on_condition_evaluationc                 C   s   d}t |i}t|n dtdtdddddddd	d
ig ffdg| _t| }|t W d    n1 sj0    Y  W d    n1 s0    Y  d S )Nr  r  rH   r  r    r$  r   r%   r   r   rh   r   r  r  r
   r
   r   test_bp_ignore_countg  s    

z'BreakpointTestCase.test_bp_ignore_countc                 C   s   d}t |i}t| dtdtdtdtdddddddd	dd
dig ffddddd	dd
d
ig ffddd	ddd
ig ffdg| _t| }|t W d    n1 s0    Y  W d    n1 s0    Y  d S )Nr   r  rH   r  r)  r#  r   r%   r   rh   r   r%  r"  r   r  r  r
   r
   r    test_ignore_count_on_disabled_bp|  s"    

z3BreakpointTestCase.test_ignore_count_on_disabled_bpc                 C   s   d}t |i}t| ddtdffddtdffddtdffddddd	d
d
ig ffdddd	dd
ig ffdtdffddddd	ddig ffdg| _t| }|t W d    n1 s0    Y  W d    n1 s0    Y  d S )Nz
            def func():
                lno = 3
                lno = 4

            def main():
                for i in range(3):
                    func()
        r  r   r   r  r   r   r%   rH   r   r   )r   r   rH   rh   r   )r  r   r  rc   r   r   r   r  r
   r
   r   test_clear_two_bp_on_same_line  s    	


z1BreakpointTestCase.test_clear_two_bp_on_same_linec                 C   sN   ddt dffg| _t|  }| t|jt W d    n1 s@0    Y  d S )Nr  r   r   )r9   rc   r   r  r   r   r   r   r
   r
   r   test_clear_at_no_bp  s    
z&BreakpointTestCase.test_clear_at_no_bpN)r   r   r	   r  r  r  r&  r'  r(  r*  r+  r,  r-  r
   r
   r
   r   r    s   r  c                   @   s   e Zd Zdd Zdd ZdS )RunTestCasec                 C   sR   d}g d| _ t| (}|tt|dd W d    n1 sD0    Y  d S )Nz
            lno = 2
        ))r%   rh   <module>r   )r{   rh   r/  r   z<string>exec)rc   r   runcompiler   r   )r/   rI   r   r
   r
   r   test_run_step  s    

zRunTestCase.test_run_stepc              	   C   s   d}t |i}t|\ g d| _dd l}t| "}|dt t  W d    n1 sX0    Y  W d    n1 sv0    Y  d S )Nr   )
)r%   r   r/  r   )rr   rh   r   r   )r%   r   r   r   )r{   r   r   r   )r{   r   r/  r   r   ztest_module_for_bdb.main())r  r   rc   r   r   Zrunevalr:   locals)r/   rI   r   r   r   r
   r
   r   test_runeval_step  s    


zRunTestCase.test_runeval_stepN)r   r   r	   r3  r5  r
   r
   r
   r   r.    s   r.  c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )IssuesTestCasec                 C   s   d}d}t |d|i}t|r dtddddd	d
dddig ffdddddg
| _t| }|t W d    n1 sv0    Y  W d    n1 s0    Y  d S )Nz
            from test_module_for_bdb_2 import func
            def main():
                func()
                lno = 5
        z9
            def func():
                lno = 3
        Ztest_module_for_bdb_2r  rH   ztest_module_for_bdb_2.pyr  r   r%   r   r   r   )r{   r   rH   )r%   r   r   r   )r  r   r   rc   r   r   r   )r/   Zcode_1Zcode_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_callerc                 C   s   d}t |i}dD ]}| j|d t| dtdtdddd	dd
d
ig ff|fg| _|dkr|| jdddtfdddg n| jddg t| }|	t
 W d    n1 s0    Y  W d    n1 s0    Y  W d    q1 s0    Y  qd S )Nz
            def test_gen():
                yield 0
                lno = 4
                return 123

            def main():
                it = test_gen()
                next(it)
                next(it)
                lno = 11
        )r   r   r{   r   r  test_genr  r   r%   r   r   r{   rp   
   r   r   )r{   r9  r   r   r%   r   r8  )r  r   r   r   r  rc   r   r   r   r   r   )r/   rI   r   r   r   r
   r
   r   #test_next_until_return_in_generator  s*    

z2IssuesTestCase.test_next_until_return_in_generatorc                 C   s   d}t |i}t| dtdtdddddddig ffd	d
d	dd	dd	dddtfdddg| _t| }|t W d    n1 s0    Y  W d    n1 s0    Y  d S )Nz
            def test_gen():
                yield 0
                lno = 4
                yield 1
                return 123

            def main():
                for i in test_gen():
                    lno = 10
                lno = 11
        r  r8  r  r   r%   r   r   r   r:  )r%   r   r8  )r%   r   r8  rp   	   r   r   )r%      r   r   	r  r   r   r  r   rc   r   r   r   r  r
   r
   r   'test_next_command_in_generator_for_loop#  s    

z6IssuesTestCase.test_next_command_in_generator_for_loopc                 C   s   d}t |i}t|~ dtdtdddddddig ffd	d
d	dddtfdddg| _t| }|t W d    n1 sz0    Y  W d    n1 s0    Y  d S )N4  
            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  r8  r  r   r%   r   r   r   )r%      r8  rp   r=  r   r   r%      r   r   r>  r  r
   r
   r   /test_next_command_in_generator_with_subiteratorB  s    


z>IssuesTestCase.test_next_command_in_generator_with_subiteratorc                 C   s   d}t |i}t| dtdtdddddddig ffd	d
ddtfd	d
ddtfdddg| _t| }|t W d    n1 s0    Y  W d    n1 s0    Y  d S )Nr@  r  Ztest_subgenr  r   r%   r   r   r  rp   r   r8  r=  r   r   rB  r   r>  r  r
   r
   r   1test_return_command_in_generator_with_subiteratora  s    


z@IssuesTestCase.test_return_command_in_generator_with_subiteratorN)r   r   r	   r7  r;  r?  rD  rE  r
   r
   r
   r   r6    s
   )r6  __main__)N),r  r   r   r!   Zunittestr   r;   r   
contextlibr   	itertoolsr   r   Ztest.supportr   	Exceptionr   r   r   r   rd   r   r)   r*   r_   r   r   r   r9   r   r  r  r   r   r   r   ZTestCaser   r   r  r.  r6  r   r   r
   r
   r
   r   <module>3   sP   @ z.
J

 / B" )
