Ñò
Òõ0Rc        
   @   s    d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k Z d  d k Z d  d k l Z d e f d „  ƒ  YZ d „  Z	 d „  Z
 d d
 d „  ƒ  YZ d	 „  Z d S(   iÿÿÿÿN(   t   timet   Failurec           B   s   e  Z d d  „ Z d „  Z RS(   c         C   s   | |  _  | |  _ d  S(   N(   t   valuet   detail(   t   selfR   R   (    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyt   __init__   s    	c         C   s@   |  i  d  j	 o t |  i ƒ d t |  i  ƒ St |  i ƒ Sd  S(   Ns   
(   R   t   Nonet   strR   (   R   (    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyt   __str__   s    N(   t   __name__t
   __module__R   R   R   (    (    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyR      s   c         C   s³   h d d 6d d 6d d 6d d 6d	 d
 6d d 6d d 6d d 6} d } xh |  D]` } | | j o | | | 7} qK | t  i j o | | 7} qK | d d i t | ƒ ƒ 7} qK W| S(   Ns   \as   s   \rs   s   \fs   s   \ns   
s   \ts   	s   \vs   s   \"s   "s   \\s   \t    s   {0:o}(   t   stringt	   printablet   formatt   ord(   t   st   specialt   rt   char(    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyt   addcslashes   s$    
 !c         C   s:   d } | d t  |  ƒ d 7} | d t  | ƒ d 7} | S(   NR   s   Expected: "s   "
s   Got:      "s   "(   R   (   t   expectedt   gotR   (    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyt   diff#   s    t   Testc           B   sÔ   e  Z d  Z d Z d Z d Z d Z d Z d d d e	 e	 d „ Z
 d „  Z d „  Z d d „ Z d „  Z d „  Z d	 „  Z d d d d d d d
 „ Z d d d d d d „ Z d „  Z d „  Z d „  Z d „  Z RS(   i   i   i   c         C   sI   | |  _  | |  _ t i |  _ t ƒ  |  _ | |  _ | |  _ | |  _	 d  S(   N(
   t   project_patht   logfdR   t   IN_PROGRESSt   statet   listt   noticest   use_gdbt   use_valgrindt	   test_path(   R   R   R!   t   logR   R    (    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyR   3   s    				c         C   s   |  i  t i j S(   N(   R   R   t   FAILED(   R   (    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyt	   is_failed=   s    c         C   s   |  i  t i j S(   N(   R   R   t   PASSED(   R   (    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyt	   is_passed@   s    c         C   sI   t  i |  _ | d  j	 o |  i i | ƒ n |  i d |  i d ƒ d  S(   Ns   test s    FAILED(   R   R#   R   R   R   t   appendR"   t   name(   R   t   reason(    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyt   failC   s    c         C   s   |  i  i | ƒ d  S(   N(   R   R'   (   R   R)   (    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyt   warnI   s    c         C   s.   |  i  i ƒ  |  i ƒ  p t i |  _ n d  S(   N(   R   t   flushR$   R   R%   R   (   R   (    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyt   doneL   s    c         C   s   d |  i  d } |  i ƒ  o | d 7} n |  i ƒ  o | d 7} n | d 7} | d |  i d 7} x# |  i D] } | d | d 7} qp W| S(   Ns   test t    R#   R%   s   
s    (s   )
(   R(   R$   R&   t   descriptionR   (   R   R   t   note(    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyR   Q   s    

 c      
   C   s™  | d } d  }	 d  }
 d  } | d  j	 o t i }	 n | d  j	 o t i }
 n | d  j	 o t i } n t ƒ  } |  i | | | d |	 d |
 d | ƒ} | i | ƒ \ } } t ƒ  | | _ | d  j	 oI | | i j o9 t t	 | ƒ d d t	 | ƒ d t	 | i ƒ ƒ ‚ n | d  j	 o3 | | j o& t t	 | ƒ d t
 | | ƒ ƒ ‚ n | d  j	 o3 | | j o& t t	 | ƒ d	 t
 | | ƒ ƒ ‚ n | S(
   Ni    t   stdint   stdoutt   stderrs!    returned incorrect status code. s	   Expected s    got s     gave incorrect standard output.s    gave incorrect standard error.(   R   t
   subprocesst   PIPER    t   startexet   communicatet   wallclock_timet
   returncodeR   R   R   (   R   t   argst   libst   pathR1   R2   R3   t   statusR(   t   infdt   outfdt   errfdt   startt   childt   outdatat   errdata(    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyt   runexe]   s2    
	6c      
   C   s  | d } | d  j o |  i } n | d  j o |  i } n | d  j o t i i |  i | ƒ } n | d  j	 o | t i d <n | | d <|  i d i | ƒ ƒ |  i oP t	 i
 d d d d i | ƒ d d d d	 g | d
 |  i d | d | d | ƒS|  i o0 t	 i
 d g | d | d | d | d
 |  i ƒSt	 i
 | d
 |  i d | d | d | ƒS| d  j	 o d t i d <t i d =n d  S(   Ni    t
   LD_PRELOADR.   t   xterms   -titles   "s   -et   gdbs   --argst   cwdR1   R2   R3   t   valgrindR   (   R   R   t   osR<   t   joinR   t   environR"   R   R4   t   PopenR    (   R   R:   R;   R<   R1   R2   R3   R(   (    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyR6   y   s4    


		
c         C   sP   |  i  d i | ƒ ƒ t i | d |  i d |  i d |  i ƒ} | i ƒ  } | S(   NR.   RI   R2   R3   (   R"   RL   R4   RN   R   R   t   wait(   R   R:   RB   R=   (    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyt   run_util˜   s
    c         C   sž   |  i  d i | ƒ ƒ t i | d |  i d t i d d  ƒ} | i ƒ  d } | i d j o= t	 | d d d t
 | i ƒ d d i | ƒ d	 ƒ ‚ n | S(
   NR.   RI   R2   R3   i    s    faileds   Got error code s    from running 't   '(   R"   RL   R4   RN   R   R5   R   R7   R9   R   R   (   R   R:   RB   t
   stdoutdata(    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyt
   run_filter    s    /c         C   s   d  S(   N(    (   R   (    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyt   after«   s    c         C   s%   |  i  i | d ƒ |  i  i ƒ  d  S(   Ns   
(   R   t   writeR,   (   R   t   msg(    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyR"   ®   s    N(   R	   R
   R   R%   R#   R   R(   R/   t   timeoutt   FalseR   R$   R&   R*   R+   R-   R   RE   R6   RP   RS   RT   R"   (    (    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyR   )   s,   										c      	   C   sì   t  i ƒ  zÍ y |  i ƒ  Wn¸ t j
 oP } |  i t | i ƒ ƒ t i ƒ  \ } } } t	 i
 | | | d t i ƒn^ t j
 oQ } |  i d t | ƒ ƒ t i ƒ  \ } } } t	 i
 | | | d t i ƒn XWd  | i |  ƒ Xd  S(   Nt   files   Unexcpected exception (   RK   t   setpgrpt   runR   R*   R   R   t   syst   exc_infot	   tracebackt   print_exceptionR2   t	   Exceptiont   put(   t   testt   queuet   ft   typeR   t   tbt   e(    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyt   run_test³   s    
  %(    (   R4   RK   t   QueueR\   R^   R   R    R`   R   R   R   R   Rh   (    (    (    s9   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/test.pyt   <module>   s   H
		Š