ó
čžbc           @   s   d  Z  d d l Z d d l Z d d l Z d d l m Z m Z d d l m Z e	 Z
 d Z d Z d Z d	 Z d
 Z d e f d     YZ e Z d S(   s   Unittest main programi˙˙˙˙Ni   (   t   loadert   runner(   t   installHandlers)     -f, --failfast   Stop on first failure
s7     -c, --catch      Catch control-C and display results
s=     -b, --buffer     Buffer stdout and stderr during test runs
sť  Usage: %(progName)s [options] [tests]

Options:
  -h, --help       Show this message
  -v, --verbose    Verbose output
  -q, --quiet      Minimal output
%(failfast)s%(catchbreak)s%(buffer)s
Examples:
  %(progName)s test_module               - run tests from test_module
  %(progName)s module.TestClass          - run tests from module.TestClass
  %(progName)s module.Class.test_method  - run specified test method

[tests] can be a list of any number of test modules, classes and test
methods.

Alternative Usage: %(progName)s discover [options]

Options:
  -v, --verbose    Verbose output
%(failfast)s%(catchbreak)s%(buffer)s  -s directory     Directory to start discovery ('.' default)
  -p pattern       Pattern to match test files ('test*.py' default)
  -t directory     Top level directory of project (default to
                   start directory)

For test discovery all test modules must be importable from the top
level directory of the project.
s1  Usage: %(progName)s [options] [test] [...]

Options:
  -h, --help       Show this message
  -v, --verbose    Verbose output
  -q, --quiet      Minimal output
%(failfast)s%(catchbreak)s%(buffer)s
Examples:
  %(progName)s                               - run default set of tests
  %(progName)s MyTestSuite                   - run suite 'MyTestSuite'
  %(progName)s MyTestCase.testSomething      - run MyTestCase.testSomething
  %(progName)s MyTestCase                    - run all 'test*' test methods
                                               in MyTestCase
t   TestProgramc           B   s   e  Z d  Z e Z d	 Z Z Z Z	 d d	 d	 d	 e
 j e d d	 d	 d	 d 
 Z d	 d  Z d   Z d   Z d	 d  Z d   Z RS(
   s   A command-line program that runs a set of tests; this is primarily
       for making test modules conveniently executable.
    t   __main__i   c         C   sń   t  | t  rT t |  |  _ x< | j d  d D] } t |  j |  |  _ q2 Wn	 | |  _ | d  k ru t j } n  | |  _	 | |  _
 |	 |  _ | |  _ |
 |  _ | |  _ | |  _ | |  _ t j j | d  |  _ |  j |  |  j   d  S(   Nt   .i   i    (   t
   isinstancet
   basestringt
   __import__t   modulet   splitt   getattrt   Nonet   syst   argvt   exitt   failfastt
   catchbreakt	   verbosityt   buffert   defaultTestt
   testRunnert
   testLoadert   ost   patht   basenamet   progNamet	   parseArgst   runTests(   t   selfR	   R   R   R   R   R   R   R   R   R   t   part(    (    s#   /usr/lib/python2.7/unittest/main.pyt   __init__H   s$    									c         C   s¤   | r | GHn  i |  j  d 6d d 6d d 6d d 6} |  j t k rO t | d <n  |  j t k rk t | d <n  |  j t k r t | d <n  |  j | GHt	 j
 d  d  S(   NR   t    R   R   R   i   (   R   R   t   Falset   FAILFASTR   t
   CATCHBREAKR   t   BUFFEROUTPUTt   USAGER   R   (   R   t   msgt   usage(    (    s#   /usr/lib/python2.7/unittest/main.pyt	   usageExita   s    
c   	      C   s  t  |  d k r= | d j   d k r= |  j | d  d  Sd d  l } d d d d d	 d
 g } y}| j | d d |  \ } } xŰ | D]Ó \ } } | d k rŻ |  j   n  | d k rÇ d |  _ n  | d k rß d |  _ n  | d k r	|  j d  k r	t |  _ q	n  | d k r3|  j	 d  k r3t |  _	 q3n  | d  k r |  j
 d  k r]t |  _
 q]q q Wt  |  d k r|  j d  k rd  |  _ nE t  |  d k rÄ| |  _ t d k rÓd  |  _ qÓn |  j f |  _ |  j   Wn# | j k
 r} |  j |  n Xd  S(!   Ni   t   discoveri   i˙˙˙˙t   helpt   verboset   quietR   t   catchR   t   hHvqfcbs   -hs   -Hs   --helps   -qs   --quieti    s   -vs	   --verboses   -fs
   --failfasts   -cs   --catchs   -bs   --bufferR   (   s   -hs   -Hs   --help(   s   -qs   --quiet(   s   -vs	   --verbose(   s   -fs
   --failfast(   s   -cs   --catch(   s   -bs   --buffer(   t   lent   lowert   _do_discoveryt   getoptR(   R   R   R   t   TrueR   R   R   t	   testNamest   __name__R	   t   createTestst   error(	   R   R   R2   t	   long_optst   optionst   argst   optt   valueR&   (    (    s#   /usr/lib/python2.7/unittest/main.pyR   o   sB    (!	c         C   sL   |  j  d  k r* |  j j |  j  |  _ n |  j j |  j  |  j  |  _ d  S(   N(   R4   R   R   t   loadTestsFromModuleR	   t   testt   loadTestsFromNames(   R   (    (    s#   /usr/lib/python2.7/unittest/main.pyR6      s    c            sĄ  | d  k r   f d   } n  d   j   _ d d  l } | j   }   j | _ | j d d d d d t d	 d
 d d   j t k r´ | j d d d d d t d	 d d d n    j t k rî | j d d d d d t d	 d d d n    j	 t k r(| j d d d d d t d	 d d d n  | j d d d d d d d	 d | j d d d d  d d! d	 d" | j d# d$ d d% d d  d	 d& | j
 |  \ } } t |  d' k rÂ  j   n  x- t d) |  D] \ } } t | | |  qŇW  j d  k r| j   _ n    j d  k r.| j   _ n    j	 d  k rL| j	   _	 n  | j rad(   _ n  | j }	 | j }
 | j } |   } | j |	 |
 |    _ d  S(*   Nc              s     j  S(   N(   R   (    (   R   (    s#   /usr/lib/python2.7/unittest/main.pyt   <lambda>˘   R    s   %s discoveri˙˙˙˙s   -vs	   --verboset   destR+   t   defaultR*   s   Verbose outputt   actiont
   store_trues   -fs
   --failfastR   s   Stop on first fail or errors   -cs   --catchR   s'   Catch Ctrl-C and display results so fars   -bs   --bufferR   s%   Buffer stdout and stderr during testss   -ss   --start-directoryt   startR   s*   Directory to start discovery ('.' default)s   -ps	   --patternt   patterns   test*.pys+   Pattern to match tests ('test*.py' default)s   -ts   --top-level-directoryt   tops<   Top level directory of project (defaults to start directory)i   i   (   RE   RF   RG   (   R   R   t   optparset   OptionParsert   progt
   add_optionR!   R   R   R   t
   parse_argsR/   R(   t   zipt   setattrR+   R   RE   RF   RG   R)   R>   (   R   R   t   LoaderRH   t   parserR9   R:   t   nameR<   t	   start_dirRF   t   top_level_dirR    (    (   R   s#   /usr/lib/python2.7/unittest/main.pyR1       sX    


					c         C   sß   |  j  r t   n  |  j d  k r1 t j |  _ n  t |  j t t j	 f  r y+ |  j d |  j
 d |  j d |  j  } WqŁ t k
 r |  j   } qŁ Xn	 |  j } | j |  j  |  _ |  j rŰ t j |  j j    n  d  S(   NR   R   R   (   R   R   R   R   R   t   TextTestRunnerR   t   typet   typest	   ClassTypeR   R   R   t	   TypeErrort   runR>   t   resultR   R   t   wasSuccessful(   R   R   (    (    s#   /usr/lib/python2.7/unittest/main.pyR   Ř   s    	
			N(   R5   t
   __module__t   __doc__t   USAGE_FROM_MODULER%   R   R   R   R   R   R    t   defaultTestLoaderR3   R   R(   R   R6   R1   R   (    (    (    s#   /usr/lib/python2.7/unittest/main.pyR   ?   s   			*	8(   R]   R   R   RV   R    R    R   t   signalsR   R3   t
   __unittestR"   R#   R$   t   USAGE_AS_MAINR^   t   objectR   t   main(    (    (    s#   /usr/lib/python2.7/unittest/main.pyt   <module>   s   ­