ó
ÐH/\c           @` so  d  d l  m Z m Z m 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 d  d l m Z d d l m Z d d l m Z d d	 l m Z d d
 l m Z d d l m Z d d l m Z d d l m Z d d l m Z y e d ƒ Wn e e e f k
 r>n Xd Z e e j  j! d ƒ pme" e ƒ  d d ƒ ƒ a# t# d k rˆd a# n  e r—d Z n  i e d 6Z$ e r³d a# n  d „  Z% d „  Z& d# e' e' d$ d „ Z( d d d% e' d d& d d „ Z* d „  Z+ d „  Z, e- d „ Z. d „  Z/ e- d d' d  d  d „ Z0 d „  Z1 e' d  „ Z2 d! „  Z3 e4 d" k rke3 ƒ  n  d S((   i    (   t   print_functiont   absolute_importt   divisionN(   t	   timedelta(   t
   ThreadPool(   t	   cpu_counti   (   t   util(   t   log(   t   RUNNING_ON_CI(   t   PYPY(   t   PY2(   t   RESOLVER_ARES(   t   RUN_LEAKCHECKS(   t   sixt	   _testcapiid   t   NWORKERSi   i
   iÈ   t   timeoutc         C` s<   t  j j |  ƒ r8 | r8 t | ƒ } t  j j | |  ƒ S|  S(   N(   t   ost   patht   isfilet   _dir_from_package_namet   join(   t   filenamet   packaget   package_dir(    (    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyt   _package_relative_filename6   s    c         C` s(   t  j |  ƒ } t j j | j ƒ } | S(   N(   t	   importlibt   import_moduleR   R   t   dirnamet   __file__(   R   t   package_modR   (    (    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyR   =   s    c         ` s€  t  j  ƒ  } d } i  ‰  i  ‰ d g ‰ d g ‰	 t t |  ƒ t ƒ pH d a t t ƒ ‰ t d k pf ˆ t _ ‡  ‡ ‡ ‡ ‡ ‡	 f d †  ‰ g  ‰ ‡ f d †  ‰ ‡ f d †  } ‡ ‡ ‡ ‡ f d †  } g  }	 yNy¶ t d t f ƒ x\ |  D]T \ }
 } | d 7} | p	i  } t | |
 ƒ r1|	 j	 |
 | f ƒ qê | |
 | ƒ qê Wˆ j
 ƒ  ˆ j ƒ  t d ƒ x! |	 D] \ }
 } ˆ |
 |  qgWWn‘ t k
 ry t d	 ƒ | ƒ  Wqt k
 rˆ j ƒ  t | ˆ  ˆ d
 t d t  j  ƒ  | d | d ˆ d d ˆ	 d ƒt d ƒ ‚  qXn XWn t j ƒ  ˆ j ƒ  ‚  n X| ƒ  t | ˆ  ˆ d t  j  ƒ  | d | d ˆ d d ˆ	 d ƒd  S(   Ni    i   c         ` s…   ˆ | d <t  j |  |  } | rN ˆ r8 t j d ƒ n  |  | g ˆ  | j <n t ˆ | j <ˆ d c | j 7<ˆ d c | j 7<d  S(   Nt   quieti   i    (   R   t   runt   syst   exitt   namet   Truet	   run_countt   skipped_count(   t   cmdt   kwargst   result(   t   failedt   failfastt   passedR   t   total_casest   total_skipped(    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyt   run_oneV   s    
c          ` sh   x[ ˆ  D]R }  |  j  ƒ  s  q n  |  j ƒ  r< ˆ  j |  ƒ q |  j ƒ  t j d |  f ƒ q Wt ˆ  ƒ S(   Ns#   Internal error in testrunner.py: %r(   t   readyt
   successfult   removet   getR!   R"   t   len(   t   r(   t   results(    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyt   reapd   s    
c           ` s'   x  ˆ  ƒ  d k r" t  j d ƒ q Wd  S(   Ni    gš™™™™™¹?(   t   timet   sleep(    (   R7   (    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyt   reap_allo   s    c         ` s\   xU t  rW ˆ ƒ  t k  rG ˆ  j ˆ |  f | p0 i  ƒ } ˆ j | ƒ d  St j d ƒ q Wd  S(   Ngš™™™™™©?(   R$   R   t   apply_asynct   appendR8   R9   (   R'   t   optionsR5   (   t   poolR7   R6   R/   (    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyt   spawns   s    	s-   Running tests in parallel with concurrency %ss   Running tests marked standalones*   Waiting for currently running to finish...R"   t   tookt   configured_failing_testsR-   R.   s   (partial results)
(   R8   t   minR4   R   R   R   t   BUFFER_OUTPUTR   t   matchesR<   t   closeR   t   KeyboardInterruptt	   terminatet   reportt   Falset	   tracebackt	   print_exc(   t   testsRA   R+   R   t   configured_run_alone_testst   startt   totalR:   R?   t	   run_aloneR'   R=   (    (
   R*   R+   R,   R>   R   R7   R6   R/   R-   R.   s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyt   run_manyC   s`    			





%


c         C` s  | p	 i  } t  j ƒ  } t | p$ d ƒ } | ro | j d ƒ } x- | D]" }	 | j t t |	 | ƒ ƒ ƒ qF Wn  | r… | j | ƒ n  | r§ t | ƒ }
 t  j |
 ƒ n  |  sÒ t t j d ƒ ƒ t d g ƒ }  n t |  ƒ }  | rñ |  | 8}  n  t	 |  ƒ }  g  } g  } x|  D]} t  j
 j | ƒ d } | r@| d | n | } t t  j
 j | ƒ d ƒ  }	 |	 j ƒ  } Wd  QXd | k r’| j | ƒ qt j d g } t r½t r½| j d ƒ n  | r×| j d | ƒ n | j | ƒ t j ƒ  } | j | j | i  ƒ ƒ | j | | f ƒ qWt  j | ƒ xi | D]a } t j | ƒ } xI | j ƒ  D]; \ } } t | ƒ d | k r~qVn  | j | | f ƒ qVWq4W| S(   Nt   ,s	   test_*.pys   test_support.pyi    t   .t   rbt
   TESTRUNNERs   -us   -Xs   track-resourcess   -miÿÿÿÿ(    (   s   -Xs   track-resources(   R   t   getcwdt   sett   splitt   updatet   load_list_from_fileR   t   chdirt   globt   sortedR   t   splitextt   opent   abspatht   readR<   R!   t
   executableR	   R
   t   extendt   DEFAULT_RUN_OPTIONSt   copyR3   R   R   RU   t   remove_options(   RL   t   ignore_filest   ignoredt   coverageR   t   configured_ignore_coveraget   configured_test_optionst   olddirt   ignoret   fR   t
   to_processt	   to_importR   t   module_namet   qualified_namet   contentsR'   R=   t   module(    (    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyt   discover¤   sX    #%c         C` s-   g  |  D]" } | r | j  d ƒ r | ^ q S(   Nt   -(   t
   startswith(   t   lstt   x(    (    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyRf   ù   s    c         C` st   g  } |  rp t  t |  | ƒ ƒ J } x@ | D]8 } | j d d ƒ d j ƒ  } | r+ | j | ƒ q+ q+ WWd  QXn  | S(   Nt   #i   i    (   R_   R   RX   t   stripR<   (   R   R   R)   Rn   Ry   (    (    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyRZ   ü   s    c         C` s–   t  | t ƒ r! d j | ƒ } n  xn |  D]f } | rJ | j d ƒ rJ q( n  | j d d ƒ } | j d | ƒ sŠ | j | j d d ƒ ƒ r( t Sq( Wt S(   Nt    s   FLAKY t    s   .py(   t
   isinstancet   listR   Rw   t   replacet   endswithR$   RI   (   t   possibilitiest   commandt   include_flakyt   line(    (    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyRD     s    .c         C` sO   |  d k  r d |  St  t d t |  ƒ ƒ ƒ }  |  j d ƒ rK |  d }  n  |  S(   Ni   s   %.1fst   secondss   0:i   (   t   strR   t   roundRw   (   R†   (    (    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyt   format_seconds  s    c         C` sh  t  j } | r t d ƒ | j ƒ  t d | d d ƒ }	 d t |	 ƒ d }
 x, | d  D] \ } } t |
 | | ƒ q[ Wn  | r˜ d t | ƒ } n d } g  } g  } g  } x3 | D]+ } t | | d	 t ƒr· | j	 | ƒ q· q· W| rt d
 t | ƒ |  d d ƒt
 | ƒ n  | rÒt d t | ƒ |  | ƒ x@ | D]8 } t | | d	 t ƒrf| j	 | ƒ q;| j	 | ƒ q;W| r t d t | ƒ |  ƒ t
 | ƒ n  | rt d t | ƒ |  d d ƒt
 | ƒ qn2 t d | | r÷t  j d d | ƒ n d |  | ƒ | rd| r/t j t d t | ƒ ƒ ƒ n  | rEt j d ƒ n  |  d k rdt j d ƒ qdn  d  S(   Ns   
Longest-running tests:s   %.1fi    t   %s   .1f seconds: %si   s    in %sR}   R„   s   
%s/%s unexpected passest   colort   errors   
%s/%s tests failed%ss   
%s/%s expected failuress   
%s/%s unexpected failuress   
Ran %s tests%s in %s files%st   skippeds    (skipped=%d)id   ie   s   No tests found.(   R   t
   runtimelogR   t   sortR4   R‡   R‰   RD   RI   R<   t
   print_listR$   t	   _colorizeR!   R"   RB   (   RO   R*   R,   R"   R@   RA   R-   R.   RŽ   t   lengtht   frmtt   deltaR#   t   failed_expectedt   failed_unexpectedt   passed_unexpected(    (    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyRH      sZ    	

c         C` s"   x |  D] } t  d | ƒ q Wd  S(   Ns    - %s(   R   (   Rx   R#   (    (    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyR   _  s    c         C` sé   d t  j k rD t j rD d j d d d d d d g ƒ t  j d <n  d	 t  j k rc d
 t  j d	 <n  d t  j k rˆ |  rˆ d t  j d <n  d t  j k r§ d t  j d <n  d t  j k rÆ d t  j d <n  d t  j k rå d t  j d <n  d  S(   Nt   PYTHONWARNINGSRR   t   defaults   ignore:::site:s   ignore:::pkgutils   ignore:::importlib._bootstrap:s'   ignore:::importlib._bootstrap_external:s)   ignore:::pkg_resources._vendor.pyparsing:t   PYTHONFAULTHANDLERt   truet   GEVENT_DEBUGt   debugt   PYTHONTRACEMALLOCt   10t   PYTHONDEVMODEt   1t   PYTHONMALLOC(   R   t   environR!   t   warnoptionsR   (   R   (    (    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyt   _setup_environc  s$    c          C` så  d d  l  }  |  j ƒ  } | j d ƒ | j d d d ƒ| j d d d ƒ| j d d d	 ƒ| j d
 d d ƒ| j d d d ƒ| j d d d d t ƒ| j d d d d d ƒ| j d d d d t ƒ| j d d d ƒ| j d d d ƒ| j ƒ  } g  } g  } g  } i  } t } | j s:t j j	 d ƒ rt } t j
 j d ƒ t j d <t r{t j
 j d ƒ t j d <n  t j
 j t ƒ } t j
 j | d ƒ }	 t j
 j |	 ƒ }	 |	 t j t j j	 d d ƒ t j d <t j
 j d ƒ t j d t j d  <t d! t j d  d" |	 ƒ n  t d# | j ƒ | j r¼i  }
 t | j | j ƒ | _ t | j ƒ  } | j ƒ  } Wd  QXt j | |
 ƒ |
 d$ } |
 d% } |
 d& } |
 d' } |
 d( } n  t | j d) | j d* | d+ | d, | j d- | d. | ƒ} | j r]xE | D]= \ } } t t j  | d/ | j	 d/ ƒ d0 | j	 d0 ƒ ƒƒ qWt d1 t! | ƒ ƒ n„ t rwt" rwt d2 ƒ d  S| j r¹t# | j ƒ } t j j	 d d ƒ t j | t j d <n  t$ | d3 | d4 | j% d | j& d5 | ƒd  S(6   Ni    s   --ignores
   --discovert   actiont
   store_trues   --fulls   --configR™   s   known_failures.pys
   --failfasts
   --coverages   --quiets	   --verboset   store_falset   destR   s   --debugs	   --packages   gevent.testsRL   t   nargst   *t   GEVENTTEST_COVERAGEs   .coveragerct   COVERAGE_PROCESS_STARTs   .coveragerc-pypyt   coveragesitet
   PYTHONPATHR}   RS   s	   .coveraget   COVERAGE_FILEs   Enabling coverage tos	   with siteR   t   FAILING_TESTSt   IGNORED_TESTSt	   RUN_ALONEt   TEST_FILE_OPTIONSt   IGNORE_COVERAGERg   Rh   Ri   R   Rj   Rk   t   envt   setenvs   %s tests found.sD   Not running tests on pypy with c-ares; not a supported configurationRA   R+   RM   ('   t   argparset   ArgumentParsert   add_argumentR$   RI   t
   parse_argsRi   R   R£   R3   R   R`   R	   R   R   R   t   pathsept   sept   printR¥   R   t   configR   R   R_   Ra   R   t   exec_Ru   RL   Rm   R   t   getnameR4   R   R   RQ   R+   R   (   R¸   t   parserR=   R±   R²   R³   R´   Ri   t   this_dirt   site_dirR¿   Rn   t   config_dataRµ   RL   R'   R   (    (    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyt   main  s„    '$	



					5
	*		t   __main__(    (    (    (    (    (5   t
   __future__R    R   R   R!   R   R\   RJ   R8   R   t   datetimeR   t   multiprocessing.poolR   t   multiprocessingR   R}   R   R   t   sysinfoR   R	   R
   R   R   R   t
   __import__t   ImportErrort   OSErrort   IOErrort   TIMEOUTt   intR£   R3   t   maxR   Rd   R   R   RI   RQ   t   NoneRu   Rf   RZ   R$   RD   R‰   RH   R   R¥   RÆ   t   __name__(    (    (    s8   lib/python2.7/site-packages/gevent/testing/testrunner.pyt   <module>   sl   .		
			^P				=	*	S