ó
\K]c           @  s„   d  d l  m Z m Z d  d l Z d  d l Z d  d l m Z d  d l m Z d e j	 f d „  ƒ  YZ	 e
 d k r€ e j ƒ  n  d S(   iÿÿÿÿ(   t   divisiont   print_functionN(   t   unittest_support(   t   cudat   TestCasec           B  s®   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 e
 j e j ƒ  d ƒ d	 „  ƒ Z d
 „  Z d „  Z e
 j e j d k  d ƒ d „  ƒ Z d „  Z RS(   sß   These test cases are meant to test the Numba test infrastructure itself.
    Therefore, the logic used here shouldn't use numba.testing, but only the
    upstream unittest, and run the numba test suite only in a subprocess.c         C  sf   t  j d d d g t | ƒ } t j | ƒ j d ƒ j ƒ  } g  | D] } | j ƒ  rD | ^ qD } | S(   Ns   -ms   numba.runtestss   -ls   UTF-8(   t   syst
   executablet   listt
   subprocesst   check_outputt   decodet
   splitlinest   strip(   t   selft   argst   cmdt   linest   line(    (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pyt   get_testsuite_listing   s    %c         C  sY   |  j  | g ƒ } x@ | d  D]4 } d j | | ƒ } |  j | j | ƒ d | ƒq Wd  S(   Niÿÿÿÿs   {!r} not startswith {!r}t   msg(   R   t   formatt
   assertTruet
   startswith(   R   t   prefixt   listingt   lnt   errmsg(    (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pyt   check_listing_prefix   s    c         C  sƒ   |  j  | ƒ } | d } |  j | j d ƒ ƒ t | j d ƒ d ƒ } |  j t | ƒ t | d | d ƒ ƒ |  j | | ƒ | S(   sR   
        Check that the reported numbers of tests are at least *minsize*.
        iÿÿÿÿs   tests foundt    i    i   i
   (	   R   R   t   endswitht   intt   splitt   assertInt   lent   ranget   assertGreaterEqual(   R   R   t   minsizeR   t	   last_linet   number(    (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pyt   check_testsuite_size   s    
'c         C  sP   |  j  | d ƒ } |  j t d „  | Dƒ ƒ ƒ |  j t d „  | Dƒ ƒ ƒ d  S(   Niˆ  c         s  s   |  ] } d  | k Vq d S(   s   numba.cuda.tests.N(    (   t   .0R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pys	   <genexpr>,   s    c         s  s   |  ] } d  | k Vq d S(   s   numba.tests.npyufunc.test_N(    (   R(   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pys	   <genexpr>/   s    (   R'   R   t   any(   R   t   idsR   (    (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pyt	   check_all)   s    c         C  s   |  j  g  ƒ d  S(   N(   R+   (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pyt   test_default2   s    c         C  s   |  j  d g ƒ d  S(   Ns   numba.tests(   R+   (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pyt   test_all5   s    c         C  s/   t  j ƒ  r d n d } |  j d g | ƒ d  S(   Nid   i   s   numba.cuda.tests(   R   t   is_availableR'   (   R   R$   (    (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pyt	   test_cuda8   s    s   NO CUDAc         C  s8   |  j  d ƒ |  j  d ƒ |  j  d ƒ |  j  d ƒ d  S(   Ns   numba.cuda.tests.cudadrvs   numba.cuda.tests.cudapys   numba.cuda.tests.nocudas   numba.cuda.tests.cudasim(   R   (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pyt   test_cuda_submodules>   s    c         C  s@   |  j  d g d ƒ |  j  d g d ƒ |  j  d d g d ƒ d  S(   Ns   numba.tests.test_utilsi   s   numba.tests.test_nested_callsi   i   (   R'   (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pyt   test_moduleE   s    	c         C  s   |  j  d g d ƒ d  S(   Ns   numba.tests.npyufunci2   (   R'   (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pyt   test_subpackageL   s    i   i   s1   '--random' only supported on Python 3.4 or higherc         C  s   |  j  d d d g d ƒ d  S(   Ns   --randoms   0.1s   numba.tests.npyufunci   (   R'   (   R   (    (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pyt   test_randomO   s    c           sÌ   ‡  f d †  } d d g } xª | D]¢ } | d g ƒ } | d | d g ƒ } | d | d g ƒ } ˆ  j  | | | ƒ | d g ƒ } | d | d g ƒ } | d | d g ƒ } ˆ  j  | | | ƒ q" Wd  S(	   Nc           sT   ˆ  j  |  ƒ } ˆ  j d | d ƒ t | d j ƒ  d ƒ } ˆ  j | d k ƒ | S(   Ns   tests foundiÿÿÿÿi    (   R   R    R   R   R   (   t   arg_listR   t   count(   R   (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pyt	   get_countV   s
    t   long_runnings   long_running, importants   numba.testss   --tagss   --exclude-tagss	   --tags=%ss   --exclude-tags=%s(   t   assertEqual(   R   R6   t   tagst   tagt   totalt   includedt   excluded(    (   R   s8   lib/python2.7/site-packages/numba/tests/test_runtests.pyt   test_include_exclude_tagsU   s    (   i   i   (   t   __name__t
   __module__t   __doc__R   R   R'   R+   R,   R-   R/   t   unittestt   skipIfR   R.   R0   R1   R2   R   t   version_infoR3   R>   (    (    (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pyR   
   s   								"		t   __main__(   t
   __future__R    R   R   R   t   numbaR   RB   R   R   R?   t   main(    (    (    s8   lib/python2.7/site-packages/numba/tests/test_runtests.pyt   <module>   s   b