ó
®/íXe6  c           @   s  d  d l  Z d  d l j j Z d  d l Z d  d l Z d  d l m	 Z
 d  d l m Z d  d l m Z d  d l m Z d  d l Z d Z d Z d „  Z d	 „  Z d
 „  Z d d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  d „  Z! d „  Z" d „  Z# d „  Z$ d „  Z% d „  Z& d „  Z' d „  Z( d „  Z) d  „  Z* d! „  Z+ d" „  Z, d# „  Z- d$ „  Z. d% „  Z/ d& „  Z0 d' „  Z1 d( „  Z2 d) „  Z3 d* „  Z4 d+ „  Z5 d, „  Z6 d- „  Z7 d. „  Z8 d/ „  Z9 d0 „  Z: d1 „  Z; d2 „  Z< d S(3   iÿÿÿÿN(   t
   exceptions(   t   fstree(   t	   get_rules(   t   startups   tests/data/no_such_config.inis   tests/data/bad_config.inic         C   sø   t  j ƒ  } | j t j d d d d ƒ ƒ |  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(   s&   Does the error manager send to stdout?s
   samp errors
   samp descrs   samp details	   samp hintt    s   !=s   %(py0)s != %(py3)st   py3t   errt   py0s   assert %(py5)st   py5N(   s   !=(   s   %(py0)s != %(py3)ss   assert %(py5)s(   R   t   ErrorManagert   expresst   ext   Errort
   readouterrt
   @pytest_art   _call_reprcomparet	   _safereprt   @py_builtinst   localst   _should_repr_global_namet   AssertionErrort   _format_explanationt   None(   t   capsyst   emt   outR   t   @py_assert2t   @py_assert1t   @py_format4t   @py_format6(    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt    test_errormanager_express_stderr&   s       l   c          C   sF   t  j ƒ  }  |  j t j d ƒ ƒ t j t ƒ  |  j ƒ  Wd QXd S(   s+   Does the error manager exit early on error?s   sample errorN(	   R   R	   R
   R   R   t   pytestt   raisest
   SystemExitt   exit_if_errored(   R   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt&   test_errormanager_exit_if_errored_exit/   s    c          C   s   t  j ƒ  }  |  j t j d ƒ ƒ |  j ƒ  t s‹ d i d t j ƒ  k sY t	 j
 t ƒ rh t	 j t ƒ n d d 6} t t	 j | ƒ ƒ ‚ n  d S(   s+   Does the error manager continue on warning?s   sample warningR   s   assert %(py0)st   TrueR   Ns   assert %(py0)s(   R   R	   R
   R   t   WarningR"   R$   R   R   R   R   R   R   R   (   R   t   @py_format1(    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt(   test_errormanager_exit_if_errored_noexit7   s    
 A c         C   s   t  j |  | | | ƒ d  S(   N(   R   t    check_missing_config_declaration(   t   cfgt   unused_keyst   cfilet   keyt   hint(    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   mock_require_configE   s    c         C   s#   t  j ƒ  } |  j t  d | ƒ d  S(   NR   (   R   R	   t   setattr(   t   monkeypatchR   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   monkeypatch_errormanagerI   s    c        	   C   s:   t  j t j ƒ " t j i d d 6d d d ƒ Wd QXd S(   s5   Missing required config directives raise an exceptiont   valuet   foos
   sample.init   missingN(   R   R    R   t   MissingConfigDeclarationErrorR   R(   R   (    (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt%   test_check_missing_config_declarationU   s    c           C   sG   t  j i d d 6d g d d ƒ t j t ƒ  t  j j ƒ  Wd QXd S(   s*   Missing config directives result in errorsR2   R3   R4   s
   sample.iniN(   R   t   require_configR   R    R!   R   R"   (    (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_require_config_fail^   s    c          C   s   t  j i d d 6d g d d ƒ t  j j ƒ  t sŒ d	 i d t j ƒ  k sZ t j t ƒ ri t j	 t ƒ n d d 6}  t
 t j |  ƒ ƒ ‚ n  d S(
   s)   Existing config directives raise no errorR2   R3   s
   sample.iniR   s   assert %(py0)sR$   R   Ns   assert %(py0)s(   R   R7   R   R"   R$   R   R   R   R   R   R   R   (   R&   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_require_config_successf   s
      A c           C   s-   t  j t j ƒ  t j d d ƒ Wd QXd S(   s7   Non-integral max_depth config values raise an exceptionR3   s
   sample.iniN(   R   R    R   t   BadMaxDepthErrorR   t   check_bad_max_depth(    (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_check_bad_max_depth_no_into   s    c           C   s-   t  j t j ƒ  t j d d ƒ Wd QXd S(   s2   max_depth config values below 1 raise an exceptiont   0s
   sample.iniN(   R   R    R   R:   R   R;   (    (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt!   test_check_bad_max_depth_toosmallu   s    c          C   s/  t  j }  d } d } |  | | ƒ } d } | | 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 6t j | ƒ d	 6t j | ƒ d
 6t j | ƒ d 6t j | ƒ d 6} d i | d 6} t t j	 | ƒ ƒ ‚ n  d }  } } } } } d S(   s8   String max_depth values that are integers convert to intt   3s
   sample.inii   s   ==sc   %(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.check_bad_max_depth
}(%(py4)s, %(py6)s)
} == %(py11)st   py2R   R   t   py6t   py4t   py8t   py11R   s   assert %(py13)st   py13N(   s   ==(   sc   %(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.check_bad_max_depth
}(%(py4)s, %(py6)s)
} == %(py11)ss   assert %(py13)s(   R   R;   R   R   R   R   R   R   R   R   R   (   R   t   @py_assert3t   @py_assert5t   @py_assert7t   @py_assert10t   @py_assert9t   @py_format12t   @py_format14(    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_check_bad_max_depth{   s    	       ¬   c           C   s7   t  j d d ƒ t j t ƒ  t  j j ƒ  Wd QXd S(   s.   Bad max_depth config values result in an errorR3   s
   sample.iniN(   R   t   convert_max_depthR   R    R!   R   R"   (    (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_convert_max_depth_fail‚   s    c          C   s<  t  j j ƒ  t  j }  d } d } |  | | ƒ } d } | | 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 6t j | ƒ d	 6t j | ƒ d
 6t j | ƒ d 6t j | ƒ d 6} d i | d 6} t
 t j | ƒ ƒ ‚ n  d }  } } } } } d S(   s8   String max_depth values that are integers convert to intR?   s
   sample.inii   s   ==sa   %(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.convert_max_depth
}(%(py4)s, %(py6)s)
} == %(py11)sR@   R   R   RA   RB   RC   RD   R   s   assert %(py13)sRE   N(   s   ==(   sa   %(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.convert_max_depth
}(%(py4)s, %(py6)s)
} == %(py11)ss   assert %(py13)s(   R   R   R"   RN   R   R   R   R   R   R   R   R   R   (   R   RF   RG   RH   RI   RJ   RK   RL   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_convert_max_depth_succeed‰   s    	       ¬   c          C   ss   t  j g  d ƒ t so d i d t j ƒ  k s= t j t ƒ rL t j t ƒ n d d 6}  t t j	 |  ƒ ƒ ‚ n  d S(   s(   When the declaration is used, no warningt   somecfgR   s   assert %(py0)sR$   R   Ns   assert %(py0)s(
   R   t   warn_extra_declarationR$   R   R   R   R   R   R   R   (   R&   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt#   test_warn_extra_declaration_no_warn‘   s     A c           C   s0   t  j t j ƒ  t j d g d ƒ Wd QXd S(   s2   When the declaration is unused a warning is raisedRQ   N(   R   R    R   t   UnusedDeclarationWarningR   RR   (    (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt    test_warn_extra_declaration_warn—   s    c         C   s”  t  j g  d ƒ |  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 } | | k } | s†t j d | f d | | f ƒ i t j | ƒ d 6d
 t j ƒ  k sCt j | ƒ rRt j | ƒ n d
 d 6} d i | d	 6} t	 t j
 | ƒ ƒ ‚ n  d } } d S(   s)   When there's no warning there's no outputRQ   R   s   ==s   %(py0)s == %(py3)sR   R   R   s   assert %(py5)sR   R   N(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)s(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)s(   R   t   report_extra_declarationR   R   R   R   R   R   R   R   R   R   (   R   R   R   R   R   R   R   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt%   test_report_extra_declaration_no_warnŸ   s        l   
   l   c         C   s?  t  j d g d ƒ |  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 } } | s;d i d t j ƒ  k s	t j | ƒ rt j | ƒ n d d 6} t	 t j
 | ƒ ƒ ‚ n  d S(   s/   When there's a warning there's output on stderrRQ   R   s   ==s   %(py0)s == %(py3)sR   R   R   s   assert %(py5)sR   s   assert %(py0)sR   N(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)ss   assert %(py0)s(   R   RV   R   R   R   R   R   R   R   R   R   R   (   R   R   R   R   R   R   R   R&   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt"   test_report_extra_declaration_warn§   s       l   
 A c           C   s*   t  j t j ƒ  t j d ƒ Wd QXd S(   s   Raises an errort   unk_declN(   R   R    R   t   UnknownDeclarationErrorR   t   raise_unknown_declaration(    (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_raise_unknown_declaration±   s    c   	      C   sC  t  | ƒ t j d ƒ |  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 } } | s?d i d t j ƒ  k st j	 | ƒ rt j | ƒ n d d 6} t
 t j | ƒ ƒ ‚ n  d S(   s$   When there's an error there's outputRQ   R   s   ==s   %(py0)s == %(py3)sR   R   R   s   assert %(py5)sR   s   assert %(py0)sR   N(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)ss   assert %(py0)s(   R1   R   t   report_unknown_declarationR   R   R   R   R   R   R   R   R   R   (	   R   R0   R   R   R   R   R   R   R&   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_report_unknown_declaration¹   s    
   l   
 A c         C   s—  t  j g  t 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 } | | k } | s‰t j d | f d | | f ƒ i t j | ƒ d 6d	 t j	 ƒ  k sFt j
 | ƒ rUt j | ƒ n d	 d 6} d i | d 6} t t j | ƒ ƒ ‚ n  d
 } } d
 S(   s:   When there are no extra declarations nothing gets reportedR   s   ==s   %(py0)s == %(py3)sR   R   R   s   assert %(py5)sR   R   N(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)s(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)s(   R   t   report_extra_declarationsR   t   FILE_SOURCER   R   R   R   R   R   R   R   R   R   (   R   R   R   R   R   R   R   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt(   test_report_extra_declarations_no_extrasÅ   s        l   
   l   c   	      C   sL  t  | ƒ t j d g t 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 } } | sHd i d t	 j
 ƒ  k st j | ƒ r%t j | ƒ n d d 6} t t j | ƒ ƒ ‚ n  d S(   sE   google_credentials declaration reports error when rules are in a filet   google_credentialsR   s   ==s   %(py0)s == %(py3)sR   R   R   s   assert %(py5)sR   s   assert %(py0)sR   N(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)ss   assert %(py0)s(   R1   R   R_   R   R`   R   R   R   R   R   R   R   R   R   R   (	   R   R0   R   R   R   R   R   R   R&   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt)   test_report_extra_declarations_file_credsÍ   s    
   l   
 A c   	      C   sL  t  | ƒ t j d g t 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 } } | sHd i d t	 j
 ƒ  k st j | ƒ r%t j | ƒ n d d 6} t t j | ƒ ƒ ‚ n  d S(   sC   spreadsheet_name declaration reports error when rules are in a filet   spreadsheet_nameR   s   ==s   %(py0)s == %(py3)sR   R   R   s   assert %(py5)sR   s   assert %(py0)sR   N(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)ss   assert %(py0)s(   R1   R   R_   R   R`   R   R   R   R   R   R   R   R   R   R   (	   R   R0   R   R   R   R   R   R   R&   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt(   test_report_extra_declarations_file_nameØ   s    
   l   
 A c   	      C   sL  t  | ƒ t j d g t 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 } } | sHd i d t	 j
 ƒ  k st j | ƒ r%t j | ƒ n d d 6} t t j | ƒ ƒ ‚ n  d S(   s@   File related declarations report errors when rules are at googlet
   rules_pathR   s   ==s   %(py0)s == %(py3)sR   R   R   s   assert %(py5)sR   s   assert %(py0)sR   N(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)ss   assert %(py0)s(   R1   R   R_   R   t   GOOGLE_SOURCER   R   R   R   R   R   R   R   R   R   (	   R   R0   R   R   R   R   R   R   R&   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt%   test_report_extra_declarations_googleã   s    
   l   
 A c   	      C   sO  t  | ƒ t j d d g t 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 } } | sKd i d t	 j
 ƒ  k st j | ƒ r(t j | ƒ n d d 6} t t j | ƒ ƒ ‚ n  d S(   s2   There are errors when there are extra declarationst   unknown1t   unknown2R   s   ==s   %(py0)s == %(py3)sR   R   R   s   assert %(py5)sR   s   assert %(py0)sR   N(   s   ==(   s   %(py0)s == %(py3)ss   assert %(py5)ss   assert %(py0)s(   R1   R   R_   R   R`   R   R   R   R   R   R   R   R   R   R   (	   R   R0   R   R   R   R   R   R   R&   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt&   test_report_extra_declarations_unknowní   s    
   l   
 A c            s8  d d d „  ƒ  Y} | ƒ  ‰  d ˆ  _  ‡  f d †  } |  j t d | ƒ t j d d g t 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 6t j | ƒ d 6} d i | d 6} t t j | ƒ ƒ ‚ n  d } } } d S(   sK   Multiple errors are reported when there are multiple extra
    declarationst	   Namespacec           B   s   e  Z RS(    (   t   __name__t
   __module__(    (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyRl   ü   s   i    c            s   ˆ  j  d 7_  d  S(   Ni   (   t   count(   R,   (   t   ns(    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   mock_raise_unknown_declaration  s    R[   Ri   Rj   i   s   ==s-   %(py2)s
{%(py2)s = %(py0)s.count
} == %(py5)sR@   Rp   R   R   R   s   assert %(py7)st   py7N(    (   s   ==(   s-   %(py2)s
{%(py2)s = %(py0)s.count
} == %(py5)ss   assert %(py7)s(   Ro   R/   R   R_   R   R`   R   R   R   R   R   R   R   R   R   (   R0   Rl   Rq   R   t   @py_assert4RF   R   t   @py_format8(    (   Rp   sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt$   test_report_extra_declarations_multiø   s     			    |   c          C   s+  d g }  t  j |  d ƒ t |  ƒ } 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 6d t j ƒ  k sÆ t j t ƒ rÕ t j t ƒ n d d	 6t j | ƒ d
 6} d i | d 6} t	 t j
 | ƒ ƒ ‚ n  d } } } d S(   s%   Unused keys are removed from key listt   key1i    s   ==s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sR   t   keyst   py1t   lenR   RA   R   s   assert %(py8)sRC   N(   s   ==(   s0   %(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)ss   assert %(py8)s(   R   t   optional_keyRy   R   R   R   R   R   R   R   R   R   (   Rw   R   RG   Rs   t   @py_format7t   @py_format9(    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_optional_key  s    	    ³   c           C   s*   t  j t j ƒ  t j d ƒ Wd QXd S(   s,   Non-existant config files raise an exceptions   no_such.iniN(   R   R    R   t   NoConfigFileErrorR   t   read_config(    (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_read_config_existance  s    c          C   s±   t  j d ƒ }  |  d } d } | | k } | sŸ t j d | f d | | f ƒ i t j | ƒ d 6t j | ƒ d 6} d i | d
 6} t t j | ƒ ƒ ‚ n  d } } } d S(   s   Config declartions can be reads   sample_config.iniRf   s   ../enforcer/my_conventions.csvs   ==s   %(py1)s == %(py4)sRx   RB   R   s   assert %(py6)sRA   N(   s   ==(   s   %(py1)s == %(py4)ss   assert %(py6)s(   R   R   R   R   R   R   R   R   (   t   configt   @py_assert0RF   R   t   @py_format5R{   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_read_config_succeed  s    
    E   c           C   s*   t  j t j ƒ  t j t ƒ Wd QXd S(   sX   We get an exception when the configparser library has a problem
    with the config fileN(   R   R    R   t   ConfigParserErrorR   R   t   INVALID_RULES_CONFIG_PATH(    (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_read_config_bad_file#  s    c           C   s-   t  j t j ƒ  t j t j ƒ Wd QXd S(   s.   Config file must contain an [enforcer] sectionN(   R   R    R   t   NoEnforcerSectionErrorR   R   t   ost   devnull(    (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt$   test_read_config_no_enforcer_section*  s    c          C   s"  i  }  t  j |  i d d 6d ƒ |  d } d d d g } t | ƒ } | | k } | st j d | f d | | f ƒ i d t j ƒ  k s™ t j t ƒ r¨ t j t ƒ n d d	 6t j | ƒ d
 6t j | ƒ d 6t j | ƒ d 6} d i | d 6} t	 t j
 | ƒ ƒ ‚ n  d } } } } d S(   s:   The expected value is the config value when the key existss   abc
def
ghiR,   t   abct   deft   ghis   ==s0   %(py1)s == %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}t   setR   Rx   Rr   R   R   s   assert %(py9)st   py9N(   s   ==(   s0   %(py1)s == %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}s   assert %(py9)s(   R   t   optional_config_setR   R   R   R   R   R   R   R   R   R   (   R   R‚   Rs   t   @py_assert6R   Rt   t   @py_format10(    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_optional_config_set_key2  s    
     Œ   c          C   s  i  }  t  j |  i  d ƒ |  d } t | ƒ } d } | | 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 6t j | ƒ d 6t j | ƒ d	 6} d i | d 6} t	 t j
 | ƒ ƒ ‚ n  d } } } } d S(   s<   An empty set is the config value when the key does not existR,   i    s   ==s0   %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sR@   Ry   R   Rr   RB   R   s   assert %(py9)sR   N(   s   ==(   s0   %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)ss   assert %(py9)s(   R   R‘   Ry   R   R   R   R   R   R   R   R   R   (   R   R   RF   R’   RG   Rt   R“   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_optional_config_set_no_key9  s    
     Œ   c         C   sv  y t  j d i  ƒ Wnü t k
 r|  j ƒ  \ } } t j } | | ƒ } | sd d i d t j ƒ  k s| t j	 | ƒ r‹ t j
 | ƒ n d d 6t j
 | ƒ d 6d t j ƒ  k sÃ t j	 t ƒ rÒ t j
 t ƒ n d d 6t j
 | ƒ d	 6} t t j | ƒ ƒ ‚ n  d } } n` Xt srd i d t j ƒ  k s@t j	 t ƒ rOt j
 t ƒ n d d 6} t t j | ƒ ƒ ‚ n  d S(   s)   A bad config file returns multiple errorss   bad_config.iniR   sQ   assert %(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.multiple_errors
}(%(py3)s)
}R   R   R@   t   libtestR   R   s   assert %(py0)st   FalseNs   assert %(py0)s(   R   t   parse_configR!   R   R–   t   multiple_errorsR   R   R   R   R   R   R   R   R—   (   R   R   R   R   Rs   R   R&   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_parse_config_errorsB  s    	   œ   A c      	   C   s_   |  j  t d t ƒ t j t j ƒ 4 t j d i t j	 d 6d d 6d d 6d d 6ƒ Wd	 QXd	 S(
   sE   A config that gets the sheet from google but has no credentials failsR7   s   bad_config.init   rules_sourcet   anythingRd   t   begin_markerR?   t	   max_depthN(
   R/   R   R.   R   R    R   R5   R˜   R   Rg   (   R0   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt'   test_parse_config_no_google_credentialsM  s    	c      	   C   s_   |  j  t d t ƒ t j t j ƒ 4 t j d i t j	 d 6d d 6d d 6d d	 6ƒ Wd
 QXd
 S(   s>   A config that gets the sheet from google but has no name failsR7   s   bad_config.iniR›   t   somefileRb   Rœ   R   R?   Rž   N(
   R/   R   R.   R   R    R   R5   R˜   R   Rg   (   R0   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt%   test_parse_config_no_spreadsheet_nameX  s    	c      	   C   sX   |  j  t d t ƒ t j t j ƒ - t j d i t j	 d 6d d 6d d 6ƒ Wd QXd S(	   s>   A config that gets the sheet from the fs but has no path failsR7   s   bad_config.iniR›   Rœ   R   R?   Rž   N(
   R/   R   R.   R   R    R   R5   R˜   R   R`   (   R0   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_parse_config_no_rules_pathc  s    	c        	   C   sB   t  j t j ƒ * t j d i d d 6d d 6d d 6ƒ Wd QXd S(	   s,   A config with a bad rules_source value failss   bad_config.inis   random valueR›   Rœ   R   R?   Rž   N(   R   R    R   t   BadRulesSourceErrorR   R˜   (    (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt"   test_parse_config_bad_rules_sourcem  s
    	
c          C   s¾  d }  d } t  j d i t j d 6|  d 6| d 6d d 6d	 d
 6ƒ } | d } | |  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 6} d i | d 6} t
 t j | ƒ ƒ ‚ n  d } } | d } | | k } | s°t j d | f d | | f ƒ i d t j ƒ  k s]t j | ƒ rlt j	 | ƒ n d d 6t j	 | ƒ d 6} d i | d 6} t
 t j | ƒ ƒ ‚ n  d } } d S(   s,   The google related config values are corrects   some secrets	   some names   simple_config.iniR›   Rb   Rd   Rœ   R   R?   Rž   s   ==s   %(py1)s == %(py3)st   secretsR   Rx   R   s   assert %(py5)sR   t   nameN(   s   ==(   s   %(py1)s == %(py3)ss   assert %(py5)s(   s   ==(   s   %(py1)s == %(py3)ss   assert %(py5)s(   R   R˜   R   Rg   R   R   R   R   R   R   R   R   R   (   R¥   R¦   R)   R‚   R   R   R   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_parse_config_googlev  s,    	
   l   

   l   c          C   sö   d }  t  j d i t j d 6|  d 6d d 6d d 6ƒ } | d } | |  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 6} d i | d 6} t
 t j | ƒ ƒ ‚ n  d } } d S(   s&   The rules_path config value is corrects	   some files   simple_config.iniR›   Rf   Rœ   R   R?   Rž   s   ==s   %(py1)s == %(py3)st   filenameR   Rx   R   s   assert %(py5)sR   N(   s   ==(   s   %(py1)s == %(py3)ss   assert %(py5)s(   R   R˜   R   R`   R   R   R   R   R   R   R   R   R   (   R¨   R)   R‚   R   R   R   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_parse_config_file„  s    	
   l   c          C   s@  d }  t  j d i t j d 6|  d 6d d 6d d 6d	 d
 6ƒ } | d
 } d d d g } t | ƒ } | | k } | s*t j d | f d | | f ƒ i d t j ƒ  k s· t j	 t ƒ rÆ t j
 t ƒ n d d 6t j
 | ƒ d 6t j
 | ƒ d 6t j
 | ƒ d 6} d i | d 6} t t j | ƒ ƒ ‚ n  d } } } } d S(   s)   The ignored_names config value is corrects	   some files   simple_config.iniR›   Rf   Rœ   R   R?   Rž   s   abc
def
ghit   ignored_namesRŒ   R   RŽ   s   ==s0   %(py1)s == %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}R   R   Rx   Rr   R   R   s   assert %(py9)sR   N(   s   ==(   s0   %(py1)s == %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}s   assert %(py9)s(   R   R˜   R   R`   R   R   R   R   R   R   R   R   R   R   (   R¨   R)   R‚   Rs   R’   R   Rt   R“   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_parse_config_ignored_names  s     	
     Œ   c          C   s@  d }  t  j d i t j d 6|  d 6d d 6d d 6d	 d
 6ƒ } | d
 } d d d g } t | ƒ } | | k } | s*t j d | f d | | f ƒ i d t j ƒ  k s· t j	 t ƒ rÆ t j
 t ƒ n d d 6t j
 | ƒ d 6t j
 | ƒ d 6t j
 | ƒ d 6} d i | d 6} t t j | ƒ ƒ ‚ n  d } } } } d S(   s(   The stock_parens config value is corrects	   some files   simple_config.iniR›   Rf   Rœ   R   R?   Rž   s   abc
def
ghit   stock_parensRŒ   R   RŽ   s   ==s0   %(py1)s == %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}R   R   Rx   Rr   R   R   s   assert %(py9)sR   N(   s   ==(   s0   %(py1)s == %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}s   assert %(py9)s(   R   R˜   R   R`   R   R   R   R   R   R   R   R   R   R   (   R¨   R)   R‚   Rs   R’   R   Rt   R“   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_parse_config_stock_parens›  s     	
     Œ   c          C   s%  t  j t j ƒ \ }  } t j } t | | ƒ } | s!d d i d t j ƒ  k sa t	 j
 t ƒ rp 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
 t ƒ rÞ t	 j t ƒ n d d 6t	 j | ƒ d	 6t	 j | ƒ d
 6} t t	 j | ƒ ƒ ‚ n  d } } t |  t ƒ } | sd d i d t j ƒ  k skt	 j
 t ƒ rz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
 t ƒ rèt	 j t ƒ n d d 6t	 j | ƒ d
 6} t t	 j | ƒ ƒ ‚ n  d } d S(   s1   Does make_analyzer() return something reasonable?R   sP   assert %(py6)s
{%(py6)s = %(py0)s(%(py1)s, %(py4)s
{%(py4)s = %(py2)s.FSDir
})
}R   R@   t   analyzerRx   t
   isinstanceR   RA   RB   s5   assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}t   dictR   N(   R   t   make_analyzerR–   t   TEST_CONFIG_PATHR   t   FSDirR¯   R   R   R   R   R   R   R   R   R°   (   R   R®   RF   RG   R{   Rƒ   (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_make_analyzer_retval©  s    	   Ó  
  Ã  c           C   s'   t  j t ƒ  t j t ƒ Wd QXd S(   s9   Does an error (non-existant config) result in SystemExit?N(   R   R    R!   R   R±   t   BAD_RULES_CONFIG_PATH(    (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   test_make_analyzer_on_error°  s    (=   t   __builtin__R   t   _pytest.assertion.rewritet	   assertiont   rewriteR   R‰   R   t   enforcerR    R   R   R   R   R–   Rµ   R†   R   R#   R'   R   R.   R1   R6   R8   R9   R<   R>   RM   RO   RP   RS   RU   RW   RX   R\   R^   Ra   Rc   Re   Rh   Rk   Ru   R}   R€   R„   R‡   R‹   R”   R•   Rš   RŸ   R¡   R¢   R¤   R§   R©   R«   R­   R´   R¶   (    (    (    sR   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_startup.pyt   <module>   sj     																			
						
															
							