
`X                  @   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   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 d   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) d*   Z d+ d,   Z  d- d.   Z! d/ d0   Z" d1 d2   Z# d3 d4   Z$ d S)5    N)
exceptions)	get_rules)headerc               C   s   i d d 6d d 6S)Njoename3id r	   r	   r	   Q/home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/tests/test_header.pymock_google_metainfo   s    r   c               C   s   t  j t   f S)N)r   GOOGLE_SOURCEr   r	   r	   r	   r
   mock_tagged_google_metainfo   s    r   c               C   s   i d d 6d d 6S)Nz	some/pathpathr   mtimer	   r	   r	   r	   r
   mock_file_metainfo#   s    
r   c       	      C   s|  |  j  t d d  t j } t j } |   } | |  } d } | | 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
 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)z.A timestamp is produced when not in a DST zonedaylightF !=%(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.pretty_timestamp
}(%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.time
}()
})
} != %(py12)stimepy3py7py9py12r   py0py5py2assert %(py14)spy14N)r   )r   r   )setattrr   r   pretty_timestamp
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)	monkeypatch@py_assert1@py_assert4@py_assert6@py_assert8@py_assert11@py_assert10@py_format13@py_format15r	   r	   r
   test_pretty_timestamp_nodst.   s    	 	 	        r2   c       	      C   s|  |  j  t d d  t j } t j } |   } | |  } d } | | 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
 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)z*A timestamp is produced when in a DST zoner   Tr   r   %(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.pretty_timestamp
}(%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.time
}()
})
} != %(py12)sr   r   r   r   r   r   r   r   r   assert %(py14)sr   N)r   )r3   r4   )r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   )	r)   r*   r+   r,   r-   r.   r/   r0   r1   r	   r	   r
   test_pretty_timestamp_dst4   s    	 	 	        r5   c              C   s  t  j }  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
 6} d i | d 6} t t j	 |    n  d }  } } } } d S)zIs a good timestamp produced?z1970-01-01T00:00:00.0Zr   ==Z%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.rfc3339_to_timestamp
}(%(py4)s)
} == %(py9)spy6r   r   r   py4r   r   assert %(py11)spy11N)r6   )r7   r:   )
r   rfc3339_to_timestampr!   r"   r&   r#   r$   r%   r'   r(   )r*   @py_assert3@py_assert5r-   @py_assert7@py_format10@py_format12r	   r	   r
   test_rfc3339_to_timestamp_value<   s    	         rB   c            	   C   s*   t  j t j   t j d  Wd QXd S)z(Does a bad rfc3339 value raise an error?badN)pytestraisesexUnrecognized3339TimeWarningr   r<   r	   r	   r	   r
   test_rfc3339_to_timestamp_failA   s    rH   c              C   s.  g  }  t  j |  i  d d  t |   } d } | | k } | st j d | f d | | f  i t j |  d 6t 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 6} d i | d 6} t	 t j
 |    n  d } } } d S)z/Nothing happens when the key is not in the dictvaluekeyr   r6   0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   r8   lenr   lstpy1r   assert %(py8)spy8N)r6   )rK   rO   )r   optional_appendrL   r!   r"   r&   r#   r$   r%   r'   r(   )rM   @py_assert2r>   r+   @py_format7@py_format9r	   r	   r
   test_optional_append_nokeyI   s           rU   c              C   s5  g  }  t  j |  i d d 6d d  t |   } d } | | k } | s#t j d | f d | | f  i t j |  d 6t 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 6} d i | d 6} t	 t j
 |    n  d } } } d S)z0The list gets longer when the key is in the dict	somethingrJ   rI      r6   0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   r8   rL   r   rM   rN   r   assert %(py8)srP   N)r6   )rX   rY   )r   rQ   rL   r!   r"   r&   r#   r$   r%   r'   r(   )rM   rR   r>   r+   rS   rT   r	   r	   r
   test_optional_append_keyP   s           rZ   c              C   si  t  j }  i  } |  |  } t |  } d } | | k } | sKt j d | f d | | f  i t j |   d 6t j |  d 6t j |  d 6t j |  d 6d t j   k s t j t  r t j t  n d d	 6t j |  d
 6d t j   k st j t   rt j t   n d d 6} d i | d 6} t	 t j
 |    n  d }  } } } } } d S)z"With no mod time get an empty listr   r6   y%(py9)s
{%(py9)s = %(py0)s(%(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.build_google_modtime
}(%(py5)s)
})
} == %(py12)sr   r   r   r   rL   r   r   r   rN   r   assert %(py14)sr   N)r6   )r[   r\   )r   build_google_modtimerL   r!   r"   r&   r#   r$   r%   r'   r(   )rR   r+   r,   r-   r.   r/   r0   r1   r	   r	   r
   test_build_google_modtime_noneY   s    	          r^   c              C   sp  t  j }  i d d 6} |  |  } t |  } d } | | k } | sRt j d | f d | | f  i t j |   d 6t j |  d 6t j |  d 6t j |  d	 6d
 t j   k s t j t  r t j t  n d
 d 6t j |  d 6d t j   k st j t   rt j t   n d d 6} d i | d 6} t	 t j
 |    n  d }  } } } } } d S)z)A good mod time produces a 1 element listz1970-01-01T00:00:00.0ZmodifiedTimerW   r6   y%(py9)s
{%(py9)s = %(py0)s(%(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.build_google_modtime
}(%(py5)s)
})
} == %(py12)sr   r   r   r   rL   r   r   r   rN   r   assert %(py14)sr   N)r6   )r`   ra   )r   r]   rL   r!   r"   r&   r#   r$   r%   r'   r(   )rR   r+   r,   r-   r.   r/   r0   r1   r	   r	   r
   test_build_google_modtime_good^   s    	          rb   c             C   s  t  j i d d 6 } |  j   \ } } t |  } d } | | k } | s(t j d | f d | | f  i t j |  d 6t 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 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 st j	 |  rt j |  n d d	 6}
 d i |
 d 6} t
 t j |    n  d }	 } d S)z@A bad mod time produces something on stdout and a 1 element listrC   r_   rW   r6   0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   r8   rL   r   resultrN   r   assert %(py8)srP   Nr   %(py0)s != %(py3)serrassert %(py5)sr   )r6   )rc   re   )r   )rf   rh   )r   r]   
readouterrrL   r!   r"   r&   r#   r$   r%   r'   r(   )capsysrd   outrg   rR   r>   r+   rS   rT   r*   @py_format4@py_format6r	   r	   r
   test_build_google_modtime_badd   s"              l   rn   c              C   s~  t  j }  i i d d 6d d 6d 6} |  |  } t |  } d } | | k } | s`t j d | f d | | f  i t j |   d	 6t j |  d
 6t j |  d 6t j |  d 6d t j   k s t j t  r t j t  n d d 6t j |  d 6d t j   k st j t   r,t j t   n d d 6} d i | d 6} t	 t j
 |    n  d }  } } } } } d S)z/When there's a key a non-empty list is returnedZJoedisplayNamezjoe@example.comemailAddresslastModifyingUserr   >x%(py9)s
{%(py9)s = %(py0)s(%(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.build_google_lastmod
}(%(py5)s)
})
} > %(py12)sr   r   r   r   rL   r   r   r   rN   r   assert %(py14)sr   N)rr   )rs   rt   )r   build_google_lastmodrL   r!   r"   r&   r#   r$   r%   r'   r(   )rR   r+   r,   r-   r.   r/   r0   r1   r	   r	   r
   test_build_google_lastmod_keyo   s    	          rv   c              C   si  t  j }  i  } |  |  } t |  } d } | | k } | sKt j d | f d | | f  i t j |   d 6t j |  d 6t j |  d 6t j |  d 6d t j   k s t j t  r t j t  n d d	 6t j |  d
 6d t j   k st j t   rt j t   n d d 6} d i | d 6} t	 t j
 |    n  d }  } } } } } d S)z,When there's no key a empty list is returnedr   r6   y%(py9)s
{%(py9)s = %(py0)s(%(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.build_google_lastmod
}(%(py5)s)
})
} == %(py12)sr   r   r   r   rL   r   r   r   rN   r   assert %(py14)sr   N)r6   )rw   rx   )r   ru   rL   r!   r"   r&   r#   r$   r%   r'   r(   )rR   r+   r,   r-   r.   r/   r0   r1   r	   r	   r
    test_build_google_lastmod_no_keyv   s    	          ry   c              C   si  t  j }  i  } |  |  } t |  } d } | | k } | sKt j d | f d | | f  i t j |   d 6t j |  d 6t j |  d 6t j |  d 6d t j   k s t j t  r t j t  n d d	 6t j |  d
 6d t j   k st j t   rt j t   n d d 6} d i | d 6} t	 t j
 |    n  d }  } } } } } d S)z-When there's no key an empty list is returnedr   r6   x%(py9)s
{%(py9)s = %(py0)s(%(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.build_google_owners
}(%(py5)s)
})
} == %(py12)sr   r   r   r   rL   r   r   r   rN   r   assert %(py14)sr   N)r6   )rz   r{   )r   build_google_ownersrL   r!   r"   r&   r#   r$   r%   r'   r(   )rR   r+   r,   r-   r.   r/   r0   r1   r	   r	   r
   test_build_google_owners_no_key}   s    	          r}   c              C   s2  t  j i i d d 6g d 6 }  t |   } d } | | k } | s t j d | f d | | f  i t j |  d 6t 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 6} d i | d 6} t	 t j
 |    n  d } } } d S)z8When there's one owner you get one owner worth of outputr   ro   ownersrW   r6   0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   r8   rL   r   rd   rN   r   assert %(py8)srP   N)r6   )r   r   )r   r|   rL   r!   r"   r&   r#   r$   r%   r'   r(   )rd   rR   r>   r+   rS   rT   r	   r	   r
   test_build_google_owners_one   s           r   c              C   s<  t  j i i d d 6i d d 6g d 6 }  t |   } d } | | k } | s*t j d | f d | | f  i t j |  d	 6t 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 6} d i | d 6} t	 t j
 |    n  d } } } d S)z:When there's two owners you get two owners worth of outputr   ro   zjoe@example.comrp   r~      r6   0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   r8   rL   r   rd   rN   r   assert %(py8)srP   N)r6   )r   r   )r   r|   rL   r!   r"   r&   r#   r$   r%   r'   r(   )rd   rR   r>   r+   rS   rT   r	   r	   r
   test_build_google_owners_two   s           r   c              C   s  t  j }  t   } |  |  } t |  } d } | | k } | rt j d f | f d f | | f  i t j |   d 6t j |  d 6t j |  d 6d t j   k p t j	 t  r t j t  n d d 6t j |  d	 6d
 t j   k p t j	 t  rt j t  n d
 d 6t j |  d 6d t j   k pFt j	 t   rXt j t   n d d 6} d d i | d 6} t
 t j |    n  d }  } } } } } d S)z%Get something when given name and id?r   rr   z%(py10)s
{%(py10)s = %(py0)s(%(py8)s
{%(py8)s = %(py3)s
{%(py3)s = %(py1)s.build_googleinfo
}(%(py6)s
{%(py6)s = %(py4)s()
})
})
} > %(py13)sr   r8   rP   r   r9   py10rL   r   py13r   rN   r   zassert %(py15)spy15N)r   build_googleinfor   rL   r!   r"   r&   r#   r$   r%   r'   r(   )rR   r>   r?   @py_assert9@py_assert12r.   @py_format14@py_format16r	   r	   r
   test_build_googleinfo   s    	 	       !   r   c              C   s  t  j }  t   } |  |  } t |  } d } | | k } | rt j d f | f d f | | f  i t j |   d 6t j |  d 6t j |  d 6d t j   k p t j	 t  r t j t  n d d 6t j |  d	 6d
 t j   k p t j	 t  rt j t  n d
 d 6t j |  d 6d t j   k pFt j	 t   rXt j t   n d d 6} d d i | d 6} t
 t j |    n  d }  } } } } } d S)zGet something?r   rr   z%(py10)s
{%(py10)s = %(py0)s(%(py8)s
{%(py8)s = %(py3)s
{%(py3)s = %(py1)s.build_fileinfo
}(%(py6)s
{%(py6)s = %(py4)s()
})
})
} > %(py13)sr   r8   rP   r   r9   r   rL   r   r   r   rN   r   zassert %(py15)sr   N)r   build_fileinfor   rL   r!   r"   r&   r#   r$   r%   r'   r(   )rR   r>   r?   r   r   r.   r   r   r	   r	   r
   test_build_fileinfo   s    	 	       !   r   c              C   s  t  j }  t   } |  |  } t |  } d } | | k } | rt j d f | f d f | | f  i t j |   d 6t j |  d 6t j |  d 6d t j   k p t j	 t  r t j t  n d d 6t j |  d	 6d
 t j   k p t j	 t  rt j t  n d
 d 6t j |  d 6d t j   k pFt j	 t   rXt j t   n d d 6} d d i | d 6} t
 t j |    n  d }  } } } } } d S)z2Supplying google metainfo returns a non-empty listrW   rr   z%(py10)s
{%(py10)s = %(py0)s(%(py8)s
{%(py8)s = %(py3)s
{%(py3)s = %(py1)s.build_metainfo
}(%(py6)s
{%(py6)s = %(py4)s()
})
})
} > %(py13)sr   r8   rP   r   r9   r   rL   r   r   r   rN   r   zassert %(py15)sr   N)r   build_metainfor   rL   r!   r"   r&   r#   r$   r%   r'   r(   )rR   r>   r?   r   r   r.   r   r   r	   r	   r
   test_build_metainfo_google   s    	 	       !   r   c              C   su  t  j }  t j t   f } |  |  } t |  } d } | | k } | sWt j d | f d | | f  i t j |   d 6t j |  d 6t j |  d 6t j |  d 6d t	 j
   k s t j t  r t j t  n d d	 6t j |  d
 6d t	 j
   k st j t   r#t j t   n d d 6} d i | d 6} t t j |    n  d }  } } } } } d S)z0Supplying file metainfo returns a non-empty listrW   rr   r%(py9)s
{%(py9)s = %(py0)s(%(py7)s
{%(py7)s = %(py3)s
{%(py3)s = %(py1)s.build_metainfo
}(%(py5)s)
})
} > %(py12)sr   r   r   r   rL   r   r   r   rN   r   assert %(py14)sr   N)rr   )r   r   )r   r   r   FILE_SOURCEr   rL   r!   r"   r&   r#   r$   r%   r'   r(   )rR   r+   r,   r-   r.   r/   r0   r1   r	   r	   r
   test_build_metainfo_file   s    	          r   c        	      C   s  t  j   }  t |  t  } | s d d i d t j   k sL 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 6d t j   k s t j t  r t j t  n d d	 6} t	 t j
 |    n  d
 } |  j } d } | |  } 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	 6t j |  d 6t j |  d 6} d i | d 6} t	 t j
 |    n  d
 } } } } } d
 S)z!Returns a string with no newlinesr   z5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}
isinstancer   versionrN   r9   strr   N
r   r6   K%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.count
}(%(py4)s)
} == %(py9)sr8   r   assert %(py11)sr;   )r6   )r   r   )r   get_versionr   r   r#   r$   r!   r%   r&   r'   r(   countr"   )	r   r=   @py_format5r*   r>   r-   r?   r@   rA   r	   r	   r
   test_get_version   s         	         r   c        	      C   s  t  j }  d } t   } |  | |  } t |  } d } | | k } | rt j d f | f d f | | f  i	 t j |   d 6d t j   k p t j	 t  r t j t  n d d 6t j |  d 6t j |  d	 6t j |  d
 6t j |  d 6d t j   k pt j	 t  r*t j t  n d d 6t j |  d 6d t j   k p_t j	 t   rqt j t   n d d 6} d d i | d 6} t
 t j |    n  d }  } } } } } } d S)zReturns a non-empty listr   rW   rr   z%(py12)s
{%(py12)s = %(py0)s(%(py10)s
{%(py10)s = %(py3)s
{%(py3)s = %(py1)s.build
}(%(py5)s, %(py8)s
{%(py8)s = %(py6)s()
})
})
} > %(py15)sr   r   r8   rP   r   r   r   rL   r   r   r   rN   r   zassert %(py17)sZpy17N)r   buildr   rL   r!   r"   r&   r#   r$   r%   r'   r(   )	rR   r+   r?   r   r.   Z@py_assert14Z@py_assert13r   Z@py_format18r	   r	   r
   
test_build   s    	  	       1   r   c             C   s?  t  j d t    |  j   \ } } | s d i d t j   k sR t j |  ra t j |  n d d 6} t	 t j
 |    n  d } | | k } | s1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)zPrints on stdout but not stderrr   r   assert %(py0)srk   r   r6   %(py0)s == %(py3)sr   rg   assert %(py5)sr   Nr   )r6   )r   r   )r   print_headerr   ri   r#   r$   r!   r%   r&   r'   r(   r"   )rj   rk   rg   Z@py_format1rR   r*   rl   rm   r	   r	   r
   test_print_header   s     A    l   r   )%builtinsr#   _pytest.assertion.rewrite	assertionrewriter!   rD   r   enforcerr   rF   r   r   r   r   r   r2   r5   rB   rH   rU   rZ   r^   rb   rn   rv   ry   r}   r   r   r   r   r   r   r   r   r   r	   r	   r	   r
   <module>   s<     		