ó
Gq]c           @  sê  d  Z  d d l m 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 d d l m	 Z	 y d d l
 Z
 Wn e k
 rŸ d Z
 n Xd d l Z d d l m Z d d l m Z d d	 l m Z e j j e j j e ƒ ƒ Z e rd
 n d Z d Z e j d k r6d
 Z d Z d Z n d Z d Z d Z d Z e j d „ Z  e! d „ Z" e d „  ƒ Z# e! d „ Z$ d e f d „  ƒ  YZ% d e	 f d „  ƒ  YZ& d „  Z' d d „ Z( d „  Z) d „  Z* d e! d „ Z+ d S(   s[   
Unit test runner, providing colourized output and printing failures
on KeyboardInterrupt.
iÿÿÿÿ(   t   print_functionN(   t
   TestResult(   t   TextTestResult(   t   TextTestRunner(   t   memoize(   t   safe_rmpath(   t   TOXi   i   s   .failed-tests.txtt   posixi^   i   i   i   c         C  s}   t  j d k r t d  k	 SyG d d  l } |  j ƒ  s: t ‚ | j ƒ  | j d ƒ d k s_ t ‚ Wn t	 k
 rt t
 SXt Sd  S(   Nt   ntiÿÿÿÿt   colorsi    (   t   ost   namet   ctypest   Nonet   cursest   isattyt   AssertionErrort	   setuptermt   tigetnumt	   Exceptiont   Falset   True(   t   fileR   (    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyt   term_supports_colors-   s    

c         C  s“   g  } | t  k r" | j d ƒ nD | t k r> | j d ƒ n( | t k rZ | j d ƒ n t d ƒ ‚ | r| | j d ƒ n  d d j | ƒ |  f S(   s*   Return an highlighted version of 'string'.t   32t   91t   33s   unrecognized colort   1s   [%sm%s[0mt   ;(   t   GREENt   appendt   REDt   BROWNt
   ValueErrort   join(   t   st   colort   boldt   attr(    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyt   hilite;   s    c          C  sS   t  j j j }  t  j d ƒ } t  j |  _ |  | ƒ } t j t  j j j | ƒ | S(   NIôÿÿÿ    (	   R   t   windllt   Kernel32t   GetStdHandlet   c_ulongt   restypet   atexitt   registert   CloseHandle(   R*   t   STD_ERROR_HANDLE_IDt   handle(    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyt   _stderr_handleK   s    c         C  sg   | r | d k r | d 7} n  t  ƒ  } t j j j } | | | ƒ z |  | ƒ Wd  | | t ƒ Xd  S(   Ni   i   (   R2   R   R(   R)   t   SetConsoleTextAttributet   DEFAULT_COLOR(   t   printerR#   R$   R%   R1   R3   (    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyt   win_colorprintU   s    	t   ColouredResultc           B  sA   e  Z e d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C  sQ   t  j d k r1 |  j j t | | d | ƒƒ n t |  j j | | d | ƒd  S(   NR   R%   (   R
   R   t   streamt   writelnR'   R6   (   t   selfR#   R$   R%   (    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyt   _color_printc   s    "c         C  s$   t  j |  | ƒ |  j d t ƒ d  S(   Nt   OK(   R   t
   addSuccessR;   R   (   R:   t   test(    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyR=   i   s    c         C  s-   t  j |  | | ƒ |  j d t d t ƒd  S(   Nt   ERRORR%   (   R   t   addErrorR;   R   R   (   R:   R>   t   err(    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyR@   m   s    c         C  s'   t  j |  | | ƒ |  j d t ƒ d  S(   Nt   FAIL(   R   t
   addFailureR;   R   (   R:   R>   RA   (    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyRC   q   s    c         C  s+   t  j |  | | ƒ |  j d | t ƒ d  S(   Ns   skipped: %s(   R   t   addSkipR;   R    (   R:   R>   t   reason(    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyRD   u   s    c         C  s2   t  | t d | d k ƒ} t j |  | | ƒ d  S(   NR%   R?   (   R'   R   R   t   printErrorList(   R:   t   flavourt   errors(    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyRF   y   s    (	   t   __name__t
   __module__R   R;   R=   R@   RC   RD   RF   (    (    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyR7   a   s   				t   ColouredRunnerc           B  s&   e  Z e ƒ  r e n e Z d  „  Z RS(   c         C  s   t  j |  ƒ |  _ |  j S(   N(   R   t   _makeResultt   result(   R:   (    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyRL      s    (   RI   RJ   R   R7   R   t   resultclassRL   (    (    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyRK   ~   s   c           C  s3   d t  j k r d t  j d <n  t j j j ƒ  d  S(   Nt   PSUTIL_TESTINGR   (   R
   t   environt   psutilt   _psplatformt   cextt   set_testing(    (    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyt   setup_testsˆ   s    c         C  s(  t  j ƒ  } |  d  k ré g  t j t ƒ D]J } | j d ƒ r( | j d ƒ r( | j d ƒ r( t j j	 | ƒ d ^ q( } d t j
 k r² g  | D] } | j d
 ƒ sŽ | ^ qŽ } n  xo | D]) } d	 | } | j t  j j | ƒ ƒ q¹ Wn; t j j	 t j j |  ƒ ƒ d }  | j t  j j |  ƒ ƒ | S(   Ns   .pyt   test_t   test_memory_leaksi    t   WHEELHOUSE_UPLOADER_USERNAMEt   osxR   t   linuxs   psutil.tests.%s(   RY   R   RZ   (   t   unittestt	   TestSuiteR   R
   t   listdirt   HEREt   endswitht
   startswitht   patht   splitextRP   t   addTestt   defaultTestLoadert   loadTestsFromNamet   basename(   R   t   suitet   xt   testmodst   tm(    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyt	   get_suite   s    ,
 "c          C  sz   t  j ƒ  }  t j j t ƒ s" |  St t d ƒ  } | j ƒ  j ƒ  } Wd  QXx' | D] } |  j	 t  j
 j | ƒ ƒ qS W|  S(   Nt   rt(   R[   R\   R
   Ra   t   isfilet   FAILED_TESTS_FNAMEt   opent   readt   splitRc   Rd   Re   (   Rg   t   ft   namest   n(    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyt   get_suite_from_failed¢   s    c         C  sn   |  j  ƒ  r t t ƒ St t d ƒ C } x9 |  j |  j D]' } t | d ƒ } | j | d ƒ q9 WWd  QXd  S(   Nt   wti    s   
(   t   wasSuccessfulR   Rn   Ro   RH   t   failurest   strt   write(   RM   Rr   t   tt   tname(    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyt   save_failed_tests®   s    
c         C  sÊ   t  ƒ  t d t ƒ } | r% t ƒ  n	 t |  ƒ } y | j | ƒ } WnP t t f k
 r– } t d | j	 j
 d t j ƒ| j j ƒ  t j d ƒ n0 Xt | ƒ | j ƒ  } t j | r¿ d n d ƒ d  S(   Nt	   verbositys   received %sR   i   i    (   RU   RK   t	   VERBOSITYRu   Rk   t   runt   KeyboardInterruptt
   SystemExitt   printt	   __class__RI   t   syst   stderrRM   t   printErrorst   exitR}   Rw   (   R   t   last_failedt   runnerRg   RM   RA   t   success(    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyR€   ·   s    
(,   t   __doc__t
   __future__R    R-   R
   R…   R[   R   R   R   R   t   ImportErrorR   RQ   t   psutil._commonR   t   psutil.testsR   R   Ra   t   abspatht   dirnamet   __file__R^   R   Rn   R   R   R   R    R4   t   stdoutR   R   R'   R2   R6   R7   RK   RU   Rk   Ru   R}   R€   (    (    (    s2   lib/python2.7/site-packages/psutil/tests/runner.pyt   <module>
   sL   
	

				