ó
ì$Sc           @   s#  d  Z  d Z d Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l	 m	 Z	 d d l
 m Z m Z m Z d d l m Z d e j f d	 „  ƒ  YZ d
 „  Z d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d d l m Z d d l Z d e j f d „  ƒ  YZ d S(   s   Yaroslav Halchenkos%   Copyright (c) 2013 Yaroslav Halchenkot   GPLiÿÿÿÿN(   t   glob(   t	   mbasenamet	   TraceBackt   FormatterWithTraceBack(   t   formatExceptionInfot   HelpersTestc           B   s   e  Z d  „  Z d „  Z RS(   c         C   sM   y t  d ƒ ‚ Wn6 t ƒ  \ } } |  j | d ƒ |  j | d ƒ n Xd  S(   Ns   Very bad exceptiont
   ValueError(   R   R   t   assertEqual(   t   selft   namet   args(    (    s-   /usr/share/fail2ban/testcases/misctestcase.pyt   testFormatExceptionInfoBasic$   s    c         C   sP   y t  d d  ƒ ‚ Wn6 t ƒ  \ } } |  j | d ƒ |  j | d ƒ n Xd  S(   Ns   Very badR   s   ('Very bad', None)(   R   t   NoneR   R   (   R	   R
   R   (    (    s-   /usr/share/fail2ban/testcases/misctestcase.pyt   testFormatExceptionConvertArgs,   s    (   t   __name__t
   __module__R   R   (    (    (    s-   /usr/share/fail2ban/testcases/misctestcase.pyR   "   s   	c            s{   d d  l  } d d  l ‰ g  } xV ˆ j |  ƒ D]E \ ‰  } } | j | | | ƒ } | j ‡  ‡ f d †  | Dƒ ƒ q. W| S(   Niÿÿÿÿc         3   s$   |  ] } ˆ j  j ˆ  | ƒ Vq d  S(   N(   t   patht   join(   t   .0t   f(   t   baset   os(    s-   /usr/share/fail2ban/testcases/misctestcase.pys	   <genexpr><   s    (   t   fnmatchR   t   walkt   filtert   extend(   t   treeroott   patternR   t   resultst   dirst   filest	   goodfiles(    (   R   R   s-   /usr/share/fail2ban/testcases/misctestcase.pyt   recursive_glob7   s    $t	   SetupTestc           B   s   e  Z d  „  Z d „  Z RS(   c         C   st   t  j j t  j j t ƒ d d ƒ } t  j j | ƒ r< | p? d  |  _ |  j rp t j	 d k rp t
 j d ƒ ‚ n  d  S(   Ns   ..s   setup.pyi   i   sL   Seems to be running not out of source distribution -- cannot locate setup.py(   i   i   (   R   R   R   t   dirnamet   __file__t   existsR   t   setupt   syst   version_infot   unittestt   SkipTest(   R	   R&   (    (    s-   /usr/share/fail2ban/testcases/misctestcase.pyt   setUpA   s
    $!c   	   	      s€  |  j  s d  St j ƒ  ‰  t j d t j |  j  ˆ  f ƒ ‡  f d †  } ‡  f d †  } | t t d ˆ  ƒ ƒ ƒ } d d d g } t	 | ƒ j
 | ƒ r,i  } xc t	 | ƒ j
 | ƒ D]L } t j j ˆ  | ƒ } t j j | ƒ rõ | t | d ƒ ƒ pø d  | | <q³ W|  j | | d	 d
 | | ˆ  | f ƒn  x@ d D]8 } |  j t j j t j j ˆ  | ƒ ƒ d	 d | ƒq3Wt j ˆ  ƒ d  S(   Ns"   %s %s install --root=%s >/dev/nullc            s&   g  |  D] } t  j j ˆ  | ƒ ^ q S(   N(   R   R   R   (   t   lt   x(   t   tmp(    s-   /usr/share/fail2ban/testcases/misctestcase.pyt   addpathO   s    c            s%   g  |  D] } | t  ˆ  ƒ d ^ q S(   Ni   (   t   len(   R,   R-   (   R.   (    s-   /usr/share/fail2ban/testcases/misctestcase.pyt	   strippathR   s    s   %s/*t   etct   usrt   vart   *t   msgs6   Got: %s Needed: %s under %s. Files under new paths: %ss   etc/fail2ban/fail2ban.confs   etc/fail2ban/jail.confs   Can't find %s(   s   etc/fail2ban/fail2ban.confs   etc/fail2ban/jail.conf(   R&   t   tempfilet   mkdtempR   t   systemR'   t
   executablet   sortedR   t   sett
   differenceR   R   R%   R!   R   R   t
   assertTruet   shutilt   rmtree(	   R	   R/   R1   t   gott   needR   t   missingt   missing_fullR   (    (   R.   s-   /usr/share/fail2ban/testcases/misctestcase.pyt   testSetupInstallRootI   s0    	 	#	
'(   R   R   R+   RE   (    (    (    s-   /usr/share/fail2ban/testcases/misctestcase.pyR"   ?   s   	t   TestsUtilsTestc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   sr   |  j  t d ƒ d ƒ |  j  t d ƒ d ƒ |  j  t d ƒ d ƒ |  j  t d ƒ d ƒ |  j  t d ƒ d ƒ d  S(	   Ns	   sample.pyt   samples   /long/path/sample.pys   /long/path/__init__.pys   path.__init__s   /long/path/base.pys	   path.bases   /long/path/base(   R   R   (   R	   (    (    s-   /usr/share/fail2ban/testcases/misctestcase.pyt   testmbasenames   s
    c            s×   xÐ t  t f D]Â } t d | ƒ } d „  ‰ ‡  ‡ f d †  ‰  y ˆ  d ƒ GHWn t k
 rh | ƒ  } n Xd | k r• |  j d | k d d | ƒn |  j d | k d d	 | ƒ|  j d
 | k d d | ƒq Wd  S(   Nt   compressc           S   s   t  ƒ  ‚ d  S(   N(   R   (    (    (    s-   /usr/share/fail2ban/testcases/misctestcase.pyt
   func_raise   s    c            s"   |  r ˆ  |  d ƒ n ˆ ƒ  d  S(   Ni   (    (   t   i(   t   deep_functionRJ   (    s-   /usr/share/fail2ban/testcases/misctestcase.pyRL   „   s     i   t   coveraget   >R6   s   no '>' in %rs   '>' present in %rt   :s   no ':' in %r(   t   Truet   FalseR   R   R>   t   assertFalse(   R	   RI   t   tbt   s(    (   RL   RJ   s-   /usr/share/fail2ban/testcases/misctestcase.pyt   testTraceBack{   s    	 c   	      C   så   d d l  m  } | ƒ  } t } d } t j d ƒ } t j | ƒ } | j | | ƒ ƒ | j | ƒ | j d ƒ | j ƒ  } |  j	 | j
 ƒ  j d ƒ ƒ | j d ƒ } |  j	 | d k ƒ |  j | |  | | d	 | d
 d	 !ƒ d  S(   Niÿÿÿÿ(   t   StringIOs    %(tb)s | %(tbc)s : %(message)st   fail2ban_testst   XXXs   : XXXt   |i
   i   i   (   RV   R   t   loggingt	   getLoggert   StreamHandlert   setFormattert
   addHandlert   errort   getvalueR>   t   rstript   endswitht   indexR   (	   R	   RV   t   stroutt	   Formattert   fmtt   logSyst   outRT   t   pindex(    (    s-   /usr/share/fail2ban/testcases/misctestcase.pyt   testFormatterWithTraceBack–   s    	(   R   R   RH   RU   Rj   (    (    (    s-   /usr/share/fail2ban/testcases/misctestcase.pyRF   q   s   		(   t   iso8601t   CustomDateFormatsTestc           B   s   e  Z d  „  Z d „  Z RS(   c      
   C   sÔ   t  j d ƒ } |  j | t j d d d d d d t  j ƒ  ƒƒ |  j t t  j d  ƒ |  j t t  j | ƒ |  j t  j t  j d ƒ |  j t  j t  j d	 ƒ |  j t  j t  j d
 ƒ |  j t  j t  j d ƒ d  S(   Ns   2007-01-25T12:00:00Zi×  i   i   i   i    t   tzinfot    t   Zs   2007-01-01T120:00:00Zs   2007-13-01T12:00:00Z(	   Rk   t
   parse_dateR   t   datetimet   Utct   assertRaisesR   R   t
   ParseError(   R	   t   date(    (    s-   /usr/share/fail2ban/testcases/misctestcase.pyt   testIso8601°   s    (c         C   s<   |  j  t j d  ƒ t j ƒ |  j  t j d ƒ t j ƒ d  S(   NRo   (   R   Rk   t   parse_timezoneR   t   UTC(   R	   (    (    s-   /usr/share/fail2ban/testcases/misctestcase.pyt   testTimeZoneÀ   s    (   R   R   Rv   Ry   (    (    (    s-   /usr/share/fail2ban/testcases/misctestcase.pyRl   ®   s   	(   t
   __author__t   __copyright__t   __license__RZ   R   R'   R)   R7   R?   R   t   utilsR   R   R   t   common.helpersR   t   TestCaseR   R!   R"   RF   t   serverRk   Rq   Rl   (    (    (    s-   /usr/share/fail2ban/testcases/misctestcase.pyt   <module>   s    $	2: