ó
¾?TE  c           @   s(  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
 rs d d l m	 Z	 n Xd d l m Z d d l m Z m Z d e f d „  ƒ  YZ d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d S(   s   Debugger TestsiÿÿÿÿN(   t   StringIO(   t   Debugger(   t   Eventt	   Componentt   testc           B   s   e  Z d  Z RS(   s
   test Event(   t   __name__t
   __module__t   __doc__(    (    (    s8   /home/prologic/work/circuits/tests/core/test_debugger.pyR      s   t   Appc           B   s   e  Z e d  „ Z RS(   c         C   s   | r t  ƒ  ‚ n  d  S(   N(   t	   Exception(   t   selft   raiseException(    (    s8   /home/prologic/work/circuits/tests/core/test_debugger.pyR      s    (   R   R   t   FalseR   (    (    (    s8   /home/prologic/work/circuits/tests/core/test_debugger.pyR      s   t   Loggerc           B   s&   e  Z d Z d Z d  „  Z d „  Z RS(   c         C   s   | |  _  d  S(   N(   t	   error_msg(   R
   t   msg(    (    s8   /home/prologic/work/circuits/tests/core/test_debugger.pyt   error$   s    c         C   s   | |  _  d  S(   N(   t	   debug_msg(   R
   R   (    (    s8   /home/prologic/work/circuits/tests/core/test_debugger.pyt   debug'   s    N(   R   R   t   NoneR   R   R   R   (    (    (    s8   /home/prologic/work/circuits/tests/core/test_debugger.pyR      s   	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  d  } t ƒ  } |  j | ƒ |  j ƒ  | j d ƒ | 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 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 6t j	 | ƒ d 6} d i | d 6}	 t t j |	 ƒ ƒ ‚ n  d  } } | j d ƒ | j ƒ  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  d  } }
 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  d  } } | j d ƒ | j ƒ  d  S(   Nt   filei    t    s+   assert %(py2)s
{%(py2)s = %(py0)s._events
}t   py2t   debuggert   py0s   ==s0   %(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}t   et   py3t   strt   st   py5s   assert %(py7)st   py7s/   assert not %(py2)s
{%(py2)s = %(py0)s._events
}s   %(py0)s == %(py3)ss   assert %(py5)s(   s   ==(   s0   %(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}s   assert %(py7)s(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)s(   R   R    R   t   registert   flusht   seekt   truncatet   _eventst
   @pytest_art	   _safereprt   @py_builtinst   localst   _should_repr_global_namet   AssertionErrort   _format_explanationR   R   t   firet   readt   stripR   t   _call_reprcompareR   (   t   appt   stderrR   t   @py_assert1t   @py_format3R   R   t   @py_assert4t   @py_format6t   @py_format8t   @py_assert3t   @py_format4t   @py_assert2(    (    s8   /home/prologic/work/circuits/tests/core/test_debugger.pyt	   test_main+   s^    			
	  U  	
   Ú   

		   U  
	   l   
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  d  } t ƒ  } | j | ƒ | j ƒ  | j d ƒ | j ƒ  j ƒ  } t  | ƒ }	 | |	 k } | sYt
 j d | f d | |	 f ƒ i d t j ƒ  k s˜t
 j | ƒ r§t
 j | ƒ n d 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	 6t
 j |	 ƒ d 6}
 d i |
 d 6} t t
 j | ƒ ƒ ‚ n  d  } }	 | j d ƒ | j ƒ  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  d  } } 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  d  } } | j d ƒ | j ƒ  d  S(   Ns	   debug.logs   w+R   i    R   s+   assert %(py2)s
{%(py2)s = %(py0)s._events
}R   R   R   s   ==s0   %(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}R   R   R   R   R   s   assert %(py7)sR   s/   assert not %(py2)s
{%(py2)s = %(py0)s._events
}s   %(py0)s == %(py3)ss   assert %(py5)s(   s   ==(   s0   %(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}s   assert %(py7)s(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)s(   R   t   ensuret   openR   R   R   R    R!   R"   R#   R$   R%   R&   R'   R(   R)   R*   R   R   R+   R,   R-   R.   R   (   t   tmpdirt   logfileR0   R/   R   R1   R2   R   R   R3   R4   R5   R6   R7   R8   (    (    s8   /home/prologic/work/circuits/tests/core/test_debugger.pyt	   test_fileM   s`    		
	  U  	
   Ú   

		   U  
	   l   
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  d  } t ƒ  } | j | ƒ | j
 ƒ  | j d ƒ | j ƒ  j ƒ  } t | ƒ }	 | |	 k } | sxt j d | f d | |	 f ƒ i d t j ƒ  k s·t j | ƒ rÆt j | ƒ n d d 6d t j ƒ  k sît j t ƒ rýt j t ƒ n d d	 6d t j ƒ  k s%t j | ƒ r4t j | ƒ n d d 6t j |	 ƒ d 6}
 d i |
 d 6} t t j | ƒ ƒ ‚ n  d  } }	 | j d ƒ | j ƒ  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  d  } } 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  d  } } | j d ƒ | j ƒ  d  S(   Nt   __pypy__s   Broken on pypys	   debug.logs   r+R   i    R   s+   assert %(py2)s
{%(py2)s = %(py0)s._events
}R   R   R   s   ==s0   %(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}R   R   R   R   R   s   assert %(py7)sR   s/   assert not %(py2)s
{%(py2)s = %(py0)s._events
}s   %(py0)s == %(py3)ss   assert %(py5)s(   s   ==(   s0   %(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}s   assert %(py7)s(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)s(   t   syst   modulest   pytestt   skipR   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=   R0   R/   R   R1   R2   R   R   R3   R4   R5   R6   R7   R8   (    (    s8   /home/prologic/work/circuits/tests/core/test_debugger.pyt   test_filenamer   sd    		
	  U  	
   Ú   

		   U  
	   l   
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  d  } | 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  d  } t d	 t ƒ } |  j | ƒ |  j ƒ  | j d ƒ | 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 6d t
 j ƒ  k s<t j t ƒ rKt j	 t ƒ n d d 6d t
 j ƒ  k sst j | ƒ r‚t j	 | ƒ n d d 6t j	 | ƒ d 6} d i | d 6}	 t t j |	 ƒ ƒ ‚ n  d  } } | j d ƒ | j ƒ  |  j ƒ  | j d ƒ | j ƒ  j ƒ  } | j } d }
 | |
 ƒ } | s¾d d i t j	 | ƒ d 6d t
 j ƒ  k slt j | ƒ r{t j	 | ƒ n d d 6t j	 | ƒ d 6t j	 |
 ƒ d 6} t t j | ƒ ƒ ‚ n  d  } }
 } | j d ƒ | j ƒ  t | _ t | _ | 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  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  d  } }
 t d	 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  d  } } | 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  d  } } d  S($   NR   i    R   s+   assert %(py2)s
{%(py2)s = %(py0)s._events
}R   R   R   s+   assert %(py2)s
{%(py2)s = %(py0)s._errors
}R   s   ==s0   %(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}R   R   R   R   R   s   assert %(py7)sR   s   <exception[*]sL   assert %(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.startswith
}(%(py4)s)
}t   py6t   py4s/   assert not %(py2)s
{%(py2)s = %(py0)s._events
}s/   assert not %(py2)s
{%(py2)s = %(py0)s._errors
}s   %(py0)s == %(py3)ss   assert %(py5)s(   s   ==(   s0   %(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}s   assert %(py7)s(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)s(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)s(   R   R    R   R   R    R!   R"   R#   R$   R%   R&   R'   R(   R)   R*   R   t   _errorsR   t   TrueR+   R,   R-   R   R.   t
   startswithR   (   R/   R0   R   R1   R2   R   R   R3   R4   R5   R6   t   @py_assert5t   @py_format7R7   R8   (    (    s8   /home/prologic/work/circuits/tests/core/test_debugger.pyt   test_exceptionsš   s¤    			
	  U  	  U  
   Ú   


	    u  
			   U  
	   U  

   l   


   l   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  d  } | j j d g ƒ t ƒ  } |  j | ƒ |  j ƒ  | j d ƒ | j ƒ  j ƒ  } t | ƒ } | | k } | sQt j d | f d | | f ƒ i d t
 j ƒ  k st j | ƒ rŸt j	 | ƒ n d 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 6t j	 | ƒ d 6} d i | d 6}	 t t j |	 ƒ ƒ ‚ n  d  } } | 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  d  } }
 | j d ƒ | j ƒ  d  S(   NR   i    R   s+   assert %(py2)s
{%(py2)s = %(py0)s._events
}R   R   R   R   s   ==s0   %(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}R   R   R   R   R   s   assert %(py7)sR   s   %(py0)s == %(py3)ss   assert %(py5)s(   s   ==(   s0   %(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}s   assert %(py7)s(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)s(   R   R    R   R   R    R!   R"   R#   R$   R%   R&   R'   R(   R)   R*   R   t   IgnoreEventst   extendR   R+   R,   R-   R   R.   R   (   R/   R0   R   R1   R2   R   R   R3   R4   R5   R8   R7   (    (    s8   /home/prologic/work/circuits/tests/core/test_debugger.pyt   test_IgnoreEventsÎ   sT    			
	  U  	
   Ú   

	
   l   
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  d  } | j j d g ƒ t ƒ  } |  j | ƒ |  j ƒ  | j d ƒ | j ƒ  j ƒ  } t | ƒ } | | k } | sQt j d | f d | | f ƒ i d t
 j ƒ  k st j | ƒ rŸt j	 | ƒ n d 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 6t j	 | ƒ d 6} d i | d 6}	 t t j |	 ƒ ƒ ‚ n  d  } } | 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  d  } }
 | j d ƒ | j ƒ  d  S(   NR   i    R   s+   assert %(py2)s
{%(py2)s = %(py0)s._events
}R   R   R   t   *R   s   ==s0   %(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}R   R   R   R   R   s   assert %(py7)sR   s   %(py0)s == %(py3)ss   assert %(py5)s(   RP   s   test(   s   ==(   s0   %(py0)s == %(py5)s
{%(py5)s = %(py2)s(%(py3)s)
}s   assert %(py7)s(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)s(   R   R    R   R   R    R!   R"   R#   R$   R%   R&   R'   R(   R)   R*   R   t   IgnoreChannelsRN   R   R+   R,   R-   R   R.   R   (   R/   R0   R   R1   R2   R   R   R3   R4   R5   R8   R7   (    (    s8   /home/prologic/work/circuits/tests/core/test_debugger.pyt   test_IgnoreChannelsñ   sT    			
	  U  	
   Ú   

	
   l   
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 t	 j | ƒ d 6d t j ƒ  k sÞ t	 j | ƒ rí t	 j | ƒ n d 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  d  } } } d  S(   Nt   loggers   ==sO   %(py2)s
{%(py2)s = %(py0)s.debug_msg
} == %(py7)s
{%(py7)s = %(py4)s(%(py5)s)
}R   R   R   R   R   t   reprRF   R   s   assert %(py9)st   py9(   s   ==(   sO   %(py2)s
{%(py2)s = %(py0)s.debug_msg
} == %(py7)s
{%(py7)s = %(py4)s(%(py5)s)
}s   assert %(py9)s(   R   R   R   R   R    R   R+   R   RT   R$   R.   R%   R&   R'   R(   R)   R*   R   (	   R/   RS   R   R   R1   t   @py_assert6R6   R5   t   @py_format10(    (    s8   /home/prologic/work/circuits/tests/core/test_debugger.pyt   test_Logger_debug  s"    				
	    ê   c    	      C   sU  t  ƒ  }  t ƒ  } t d | ƒ } | j |  ƒ x |  rD |  j ƒ  q1 Wt d t ƒ } |  j | ƒ x |  rw |  j ƒ  qd W| j } | j	 } d } | | ƒ } | s?d d i t
 j | ƒ d 6d t j ƒ  k sÝ t
 j | ƒ rì t
 j | ƒ n d d 6t
 j | ƒ d 6t
 j | ƒ d	 6t
 j | ƒ d
 6} t t
 j | ƒ ƒ ‚ n  d  } } } } d  S(   NRS   R   s$   ERROR <handler[*.test] (App.test)> (R   sk   assert %(py8)s
{%(py8)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.error_msg
}.startswith
}(%(py6)s)
}R   R   RE   t   py8RF   (   R   R   R   R   R    R   RH   R+   R   RI   R$   R%   R&   R'   R(   R)   R*   R   (	   R/   RS   R   R   R1   R6   RJ   t   @py_assert7t   @py_format9(    (    s8   /home/prologic/work/circuits/tests/core/test_debugger.pyt   test_Logger_error"  s$    					 	    …  (   R   t   __builtin__R&   t   _pytest.assertion.rewritet	   assertiont   rewriteR$   R@   RB   R    t   ImportErrort   iot   circuitsR   t   circuits.coreR   R   R   R   t   objectR   R9   R>   RD   RL   RO   RR   RX   R\   (    (    (    s8   /home/prologic/work/circuits/tests/core/test_debugger.pyt   <module>   s*     	"	%	(	4	#	"	