Ñò
Ù2Rc           @   sZ   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 S(   iÿÿÿÿN(   t   Testt	   BuildTestc           B   sG   e  Z d  Z d Z d Z d Z d „  Z g  e d „ Z	 g  e d „ Z
 RS(   t   builds   build project using makei   c         C   s5   |  i  |  i d g ƒ |  i |  i ƒ |  i ƒ  d  S(   Ns   *.o(   t   cleant   targetst   maket   done(   t   self(    (    s:   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/build.pyt   run   s    c         C   s  t  ƒ  } |  i d ƒ |  i d g ƒ } | d j o | i d t | ƒ d ƒ n g  } xR | D]J } t i i |  i d | ƒ p& | i d | d ƒ | i | ƒ qa qa Wt	 | ƒ d j o |  i d g | ƒ } n | o" x | D] } |  i
 | ƒ qê Wn t	 | ƒ d j S(	   Ns"   Trying to build project using makeR   i    s   make failed (error t   )t   /s   required file 's   ' does not exist after make(   t   listt   logt   run_utilt   appendt   strt   ost   patht   existst   project_patht   lent   fail(   R   t   filest   requiredt   failurest   statust   missing_filest   ft   failure(    (    s:   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/build.pyR      s&    	  c   
      C   s1  t  ƒ  } t  ƒ  } |  i d ƒ |  i d d g ƒ } | d j o | i d t | ƒ d ƒ n xw | D]o } xf t i | ƒ D]U } t i i |  i	 d | ƒ o1 | i d | d	 ƒ t i
 |  i	 d | ƒ q} q} Wqg W| o@ x | D] } |  i | ƒ qè Wx | D] }	 |  i |	 ƒ qWn t | ƒ d j S(
   Ns(   Trying to clean project using make cleanR   R   i    s   make clean failed (error R	   R
   s   file 's#   ' exists after make clean, removing(   R   R   R   R   R   t   globR   R   R   R   t   removeR   t   warnR   (
   R   R   R   R   t   warningsR   t   patternR   R   t   warning(    (    s:   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/build.pyR   &   s,    		  $  N(   t   __name__t
   __module__t   namet   descriptiont   timeoutt   NoneR   R   t   TrueR   R   (    (    (    s:   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/build.pyR      s   	(   t
   subprocessR   R   t	   toolspatht   testingR    R   (    (    (    s:   /afs/cs.wisc.edu/p/course/cs537-remzi/ta/tests/1b/build.pyt   <module>   s   $