
?TE                 @   sA  d  Z  d d l Z d d l j j Z d d l Z d d l Z y d d l	 m	 Z	 Wn" e
 k
 rt d d l m	 Z	 Yn Xd d l m Z d d l m Z m Z Gd d   d e  Z Gd d	   d	 e  Z Gd
 d   d e  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)zDebugger Tests    N)StringIO)Debugger)Event	Componentc               @   s   e  Z d  Z d Z d S)testz
test EventN)__name__
__module____qualname____doc__ r   r   8/home/prologic/work/circuits/tests/core/test_debugger.pyr      s   r   c               @   s   e  Z d  Z d d d  Z d S)AppFc             C   s   | r t     n  d  S)N)	Exception)selfraiseExceptionr   r   r   r      s    zApp.testN)r   r   r	   r   r   r   r   r   r      s   r   c               @   s4   e  Z d  Z d Z d Z d d   Z d d   Z d S)LoggerNc             C   s   | |  _  d  S)N)	error_msg)r   msgr   r   r   error$   s    zLogger.errorc             C   s   | |  _  d  S)N)	debug_msg)r   r   r   r   r   debug'   s    zLogger.debug)r   r   r	   r   r   r   r   r   r   r   r   r      s   r   c              C   s  t    }  t   } t d |  } | j |   x |  rD |  j   q1 W| j d  | j   | j } | s d d i t j	 |  d 6d t
 j   k s t j |  r t j	 |  n d d 6} t t j |    n  t } t   } |  j |  |  j   | j d  | j   j   } t |  } | | k } | s>t j d | f d | | f  i t j	 |  d
 6d t
 j   k st j t  rt j	 t  n d d 6d t
 j   k st j |  rt j	 |  n d d 6d t
 j   k st j |  r
t j	 |  n d d 6} d i | d 6}	 t t j |	    n  t } } | j d  | j   d | _ | j } | }
 |
 sd d i t j	 |  d 6d t
 j   k st j |  rt j	 |  n d d 6} t t j |    n  t } }
 t   } |  j |  | j d  | j   j   } d } | | k } | st j d | f d | | f  i t j	 |  d 6d t
 j   k st j |  rt j	 |  n d d 6} d i | d
 6} t t j |    n  t } } | j d  | j   d  S)Nfiler    z+assert %(py2)s
{%(py2)s = %(py0)s._events
}py2debuggerpy0==0%(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}py5strepy3sassert %(py7)spy7Fz/assert not %(py2)s
{%(py2)s = %(py0)s._events
}%(py0)s == %(py3)sassert %(py5)s)r   )r   r#   )r   )r%   r&   )r   r   r   registerflushseektruncate_events
@pytest_ar	_saferepr@py_builtinslocals_should_repr_global_nameAssertionError_format_explanationNoner   firereadstripr   _call_reprcompare)appstderrr   @py_assert1@py_format3r    r"   @py_assert4@py_format6@py_format8@py_assert3@py_format4@py_assert2r   r   r   	test_main+   s^    			
	  U  	
      

		   U  
	   l   
rB   c             C   s  t  |  j d   } t | d  } t   } t d |  } | j |  x | r_ | j   qL W| j d  | j   | j	 } | s d d i t
 j |  d 6d t j   k s t
 j |  r t
 j |  n d d	 6} t t
 j |    n  t } t   } | j |  | j   | j d  | j   j   } t  |  }	 | |	 k } | sYt
 j d | f d | |	 f  i t
 j |	  d 6d t j   k st
 j t   rt
 j t   n d d 6d t j   k st
 j |  rt
 j |  n d d 6d t j   k st
 j |  r%t
 j |  n d d	 6}
 d i |
 d 6} t t
 j |    n  t } }	 | j d  | j   d | _	 | j	 } | } | sd d i t
 j |  d 6d t j   k st
 j |  rt
 j |  n d d	 6} t t
 j |    n  t } } t   } | j |  | j d  | j   j   } d } | | k } | st
 j d | f d | | f  i t
 j |  d 6d t j   k st
 j |  rt
 j |  n d d	 6} d i | d 6}
 t t
 j |
    n  t } } | j d  | j   d  S)Nz	debug.logzw+r   r   r   z+assert %(py2)s
{%(py2)s = %(py0)s._events
}r   r   r   r   0%(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}r   r   r    r!   r"   assert %(py7)sr$   Fz/assert not %(py2)s
{%(py2)s = %(py0)s._events
}%(py0)s == %(py3)sassert %(py5)s)r   )rC   rD   )r   )rE   rF   )r   ensureopenr   r   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   )tmpdirlogfiler9   r8   r   r:   r;   r    r"   r<   r=   r>   r?   r@   rA   r   r   r   	test_fileM   s`    		
	  U  	
      

		   U  
	   l   
rK   c             C   s6  d t  j k r t j d  n  t |  j d   } t | d  } t   } t d |  } | j	 |  x | r~ | j
   qk W| j d  | j   | j } | sd d i t j |  d	 6d
 t j   k s t j |  r t j |  n d
 d 6} t t j |    n  t } t   } | j |  | j
   | j d  | j   j   } t |  }	 | |	 k } | sxt j d | f d | |	 f  i t j |	  d 6d t j   k st j t  rt j t  n d d	 6d t j   k st j |  rt j |  n d d 6d t j   k s5t j |  rDt j |  n d d 6}
 d i |
 d 6} t t j |    n  t } }	 | j d  | j   d | _ | j } | } | s%d d i t j |  d	 6d
 t j   k st j |  rt j |  n d
 d 6} t t j |    n  t } } t   } | j |  | j d  | j   j   } d } | | k } | st j d | f d | | f  i t j |  d 6d t j   k st j |  rt j |  n d d 6} d i | d 6}
 t t j |
    n  t } } | j d  | j   d  S)NZ__pypy__zBroken on pypyz	debug.logzr+r   r   r   z+assert %(py2)s
{%(py2)s = %(py0)s._events
}r   r   r   r   0%(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}r   r   r    r!   r"   assert %(py7)sr$   Fz/assert not %(py2)s
{%(py2)s = %(py0)s._events
}%(py0)s == %(py3)sassert %(py5)s)r   )rL   rM   )r   )rN   rO   )sysmodulespytestskipr   rG   rH   r   r   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r   r4   r5   r6   r7   )rI   rJ   r9   r8   r   r:   r;   r    r"   r<   r=   r>   r?   r@   rA   r   r   r   test_filenamer   sd    		
	  U  	
      

		   U  
	   l   
rT   c              C   s  t    }  t   } t d |  } | j |   x |  rD |  j   q1 W| j d  | j   | j } | s d d i t j	 |  d 6d t
 j   k s t j |  r t j	 |  n d d 6} t t j |    n  t } | j } | sZd d i t j	 |  d 6d t
 j   k s(t j |  r7t j	 |  n d d 6} t t j |    n  t } t d	 d
  } |  j |  |  j   | j d  | j   j   } t |  } | | k } | st j d | f d | | f  i t j	 |  d 6d t
 j   k st j t  r$t j	 t  n d d 6d t
 j   k sLt j |  r[t j	 |  n d d 6d t
 j   k st j |  rt j	 |  n d d 6} d i | d 6}	 t t j |	    n  t } } | j d  | j   |  j   | j d  | j   j   } | j } d }
 | |
  } | sd d i t j	 |  d 6t j	 |  d 6d t
 j   k s|t j |  rt j	 |  n d d 6t j	 |
  d 6} t t j |    n  t } }
 } | j d  | j   d | _ d | _ | j } | }
 |
 sxd d i t j	 |  d 6d t
 j   k sFt j |  rUt j	 |  n d d 6} t t j |    n  t } }
 | j } | }
 |
 sd d i t j	 |  d 6d t
 j   k st j |  rt j	 |  n d d 6} t t j |    n  t } }
 t d	 d
  } |  j |  |  j   | j d  | j   j   } d } | | k } | st j d  | f d! | | f  i t j	 |  d 6d t
 j   k st j |  rt j	 |  n d d 6} d" i | d 6} t t j |    n  t } } | j d  | j   |  j   | j d  | j   j   } d } | | k } | st j d# | f d$ | | f  i t j	 |  d 6d t
 j   k st j |  rt j	 |  n d d 6} d% i | d 6} t t j |    n  t } } d  S)&Nr   r   r   z+assert %(py2)s
{%(py2)s = %(py0)s._events
}r   r   r   z+assert %(py2)s
{%(py2)s = %(py0)s._errors
}r   Tr   0%(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}r   r   r    r!   r"   assert %(py7)sr$   z<exception[*]zLassert %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.startswith
}(%(py4)s)
}py6py4Fz/assert not %(py2)s
{%(py2)s = %(py0)s._events
}z/assert not %(py2)s
{%(py2)s = %(py0)s._errors
}%(py0)s == %(py3)sassert %(py5)s)r   )rU   rV   )r   )rY   rZ   )r   )rY   rZ   )r   r   r   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   _errorsr   r4   r5   r6   r   r7   
startswith)r8   r9   r   r:   r;   r    r"   r<   r=   r>   r?   @py_assert5@py_format7r@   rA   r   r   r   test_exceptions   s    			
	  U  	  U  
      


	    u  
			   U  
	   U  

   l   


   l   r_   c           
   C   s  t    }  t   } t d |  } | j |   x |  rD |  j   q1 W| j d  | j   | j } | s d d i t j	 |  d 6d t
 j   k s t j |  r t j	 |  n d d 6} t t j |    n  t } | j j d g  t   } |  j |  |  j   | j d  | j   j   } t |  } | | k } | sQt j d | f d | | f  i t j	 |  d 6d t
 j   k st j t  rt j	 t  n d d 6d t
 j   k st j |  rt j	 |  n d d 6d t
 j   k st j |  rt j	 |  n d d 6} d i | d 6}	 t t j |	    n  t } } | j d  | j   t   } |  j |  |  j   | j d  | j   j   } d }
 | |
 k } | s^t j d | f d | |
 f  i t j	 |
  d 6d t
 j   k st j |  r*t j	 |  n d d 6} d i | d 6} t t j |    n  t } }
 | j d  | j   d  S)Nr   r   r   z+assert %(py2)s
{%(py2)s = %(py0)s._events
}r   r   r   r   r   0%(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}r   r   r    r!   r"   assert %(py7)sr$   %(py0)s == %(py3)sassert %(py5)s)r   )r`   ra   )r   )rb   rc   )r   r   r   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   IgnoreEventsextendr   r4   r5   r6   r   r7   r   )r8   r9   r   r:   r;   r    r"   r<   r=   r>   rA   r@   r   r   r   test_IgnoreEvents   sT    			
	  U  	
      

	
   l   
rf   c           
   C   s  t    }  t   } t d |  } | j |   x |  rD |  j   q1 W| j d  | j   | j } | s d d i t j	 |  d 6d t
 j   k s t j |  r t j	 |  n d d 6} t t j |    n  t } | j j d g  t   } |  j |  |  j   | j d  | j   j   } t |  } | | k } | sQt j d | f d | | f  i t j	 |  d 6d t
 j   k st j t  rt j	 t  n d d 6d t
 j   k st j |  rt j	 |  n d d 6d t
 j   k st j |  rt j	 |  n d d 6} d i | d 6}	 t t j |	    n  t } } | j d  | j   t   } |  j |  |  j   | j d  | j   j   } d }
 | |
 k } | s^t j d | f d | |
 f  i t j	 |
  d 6d t
 j   k st j |  r*t j	 |  n d d 6} d i | d 6} t t j |    n  t } }
 | j d  | j   d  S)Nr   r   r   z+assert %(py2)s
{%(py2)s = %(py0)s._events
}r   r   r   *r   r   0%(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}r   r   r    r!   r"   assert %(py7)sr$   %(py0)s == %(py3)sassert %(py5)s)rg   ztest)r   )rh   ri   )r   )rj   rk   )r   r   r   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   IgnoreChannelsre   r   r4   r5   r6   r   r7   r   )r8   r9   r   r:   r;   r    r"   r<   r=   r>   rA   r@   r   r   r   test_IgnoreChannels   sT    			
	  U  	
      

	
   l   
rm   c        	      C   s  t    }  t   } t d |  } | j |   x |  rD |  j   q1 Wt   } |  j |  |  j   | j } t |  } | | k } | st	 j
 d | f d | | f  i d t j   k s t	 j |  r t	 j |  n d d 6t	 j |  d 6t	 j |  d 6d t j   k s%t	 j |  r4t	 j |  n d d 6d	 t j   k s\t	 j t  rkt	 j t  n d	 d
 6} d i | d 6} t t	 j |    n  t } } } d  S)Nloggerr   O%(py2)s
{%(py2)s = %(py0)s.debug_msg
} == %(py7)s
{%(py7)s = %(py4)s(%(py5)s)
}r    r   r   r$   r   reprrX   r   assert %(py9)spy9)r   )ro   rq   )r   r   r   r'   r(   r   r4   r   rp   r,   r7   r.   r/   r0   r-   r1   r2   r3   )	r8   rn   r   r    r:   @py_assert6r?   r>   Z@py_format10r   r   r   test_Logger_debug  s"    				
	       rt   c        	      C   sU  t    }  t   } t d |  } | j |   x |  rD |  j   q1 Wt d d  } |  j |  x |  rw |  j   qd W| j } | j } d } | |  } | s?d d i t	 j
 |  d 6t	 j
 |  d 6t	 j
 |  d	 6d t j   k s t	 j |  rt	 j
 |  n d d
 6t	 j
 |  d 6} t t	 j |    n  t } } } } d  S)Nrn   r   Tz$ERROR <handler[*.test] (App.test)> (r   zkassert %(py8)s
{%(py8)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.error_msg
}.startswith
}(%(py6)s)
}r   rW   py8r   rX   )r   r   r   r'   r(   r   r4   r   r\   r,   r-   r.   r/   r0   r1   r2   r3   )	r8   rn   r   r    r:   r?   r]   @py_assert7@py_format9r   r   r   test_Logger_error"  s$    					 	      rx   )r
   builtinsr.   _pytest.assertion.rewrite	assertionrewriter,   rP   rR   r   ImportErroriocircuitsr   Zcircuits.corer   r   r   r   objectr   rB   rK   rT   r_   rf   rm   rt   rx   r   r   r   r   <module>   s*     "%(4#"