ó
54ùTc           @   sÊ   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 m Z m Z y d d l	 m
 Z
 Wn e k
 r… d Z
 n Xe Z d Z d Z d „  Z d „  Z d	 e f d
 „  ƒ  YZ e Z d S(   s   Unittest main programiÿÿÿÿN(   t   loadert   runner(   t   installHandlersÔ   Examples:
  %(prog)s test_module               - run tests from test_module
  %(prog)s module.TestClass          - run tests from module.TestClass
  %(prog)s module.Class.test_method  - run specified test method
sF  Examples:
  %(prog)s                           - run default set of tests
  %(prog)s MyTestSuite               - run suite 'MyTestSuite'
  %(prog)s MyTestCase.testSomething  - run MyTestCase.testSomething
  %(prog)s MyTestCase                - run all 'test*' test methods
                                       in MyTestCase
c         C   s©   t  j j |  ƒ r¥ |  j ƒ  j d ƒ r¥ t  j j |  ƒ r… t  j j |  t  j ƒ  ƒ } t  j j | ƒ sx | j t  j	 ƒ r| |  S| }  n  |  d  j
 d d ƒ j
 d d ƒ S|  S(   Ns   .pyiýÿÿÿs   \t   .t   /(   t   ost   patht   isfilet   lowert   endswitht   isabst   relpatht   getcwdt
   startswitht   pardirt   replace(   t   namet   rel_path(    (    s-   lib/python2.7/site-packages/unittest2/main.pyt   _convert_name#   s    '$	 c         C   s   g  |  D] } t  | ƒ ^ q S(   N(   R   (   t   namesR   (    (    s-   lib/python2.7/site-packages/unittest2/main.pyt   _convert_names3   s    t   TestProgramc           B   s¿   e  Z d  Z d Z d Z d Z Z Z Z	 d Z
 d d d d e j e d d d d e d „ Z d d „ Z d „  Z d „  Z d „  Z d „  Z 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.
    i   t   __main__c         C   sý   t  | t j ƒ rW t | ƒ |  _ x< | j d ƒ d D] } t |  j | ƒ |  _ q5 Wn	 | |  _ | d  k rx t j	 } n  | |  _
 | |  _ | |  _ |	 |  _ |
 |  _ | |  _ | |  _ | |  _ | |  _ t j j | d ƒ |  _ |  j | ƒ |  j ƒ  d  S(   NR   i   i    (   t
   isinstancet   sixt   string_typest
   __import__t   modulet   splitt   getattrt   Nonet   syst   argvt   exitt	   verbosityt   failfastt
   catchbreakt   buffert	   tb_localst   defaultTestt
   testRunnert
   testLoaderR   R   t   basenamet   progNamet	   parseArgst   runTests(   t   selfR   R'   R    R(   R)   R!   R"   R#   R$   R%   R&   t   part(    (    s-   lib/python2.7/site-packages/unittest2/main.pyt   __init__A   s&    										c         C   sE   | r | GHn  |  j  d  k r* |  j ƒ  n  |  j ƒ  t j d ƒ d  S(   Ni   (   t   _discovery_parserR   t   _initArgParserst   _print_helpR   R!   (   R.   t   msg(    (    s-   lib/python2.7/site-packages/unittest2/main.pyt	   usageExit\   s    
c         O   se   |  j  d  k r@ |  j j ƒ  GHt i |  j d 6GH|  j j ƒ  n! |  j j ƒ  GHt i |  j d 6GHd  S(   Nt   prog(	   R   R   t   _main_parsert   format_helpt   MAIN_EXAMPLESR+   R1   t
   print_helpt   MODULE_EXAMPLES(   R.   t   argst   kwargs(    (    s-   lib/python2.7/site-packages/unittest2/main.pyR3   d   s    c         C   s6  |  j  ƒ  |  j d  k rŠ t | ƒ d k rV | d j ƒ  d k rV |  j | d ƒ d  S|  j j | d |  ƒ |  j s¡ |  j g  ƒ d  Sn |  j j | d |  ƒ |  j r× t	 |  j ƒ |  _
 t d k r(d  |  _ q(nQ |  j d  k rò d  |  _
 n6 t |  j t ƒ r|  j f |  _
 n t |  j ƒ |  _
 |  j ƒ  d  S(   Ni   t   discoveri   R   (   R2   R   R   t   lenR   t   _do_discoveryR7   t
   parse_argst   testsR   t	   testNamest   __name__R'   R   t   strt   listt   createTests(   R.   R    (    (    s-   lib/python2.7/site-packages/unittest2/main.pyR,   m   s(    
(		c         C   sL   |  j  d  k r* |  j j |  j ƒ |  _ n |  j j |  j  |  j ƒ |  _ d  S(   N(   RC   R   R)   t   loadTestsFromModuleR   t   testt   loadTestsFromNames(   R.   (    (    s-   lib/python2.7/site-packages/unittest2/main.pyRG   ‰   s    c         C   s4   |  j  ƒ  } |  j | ƒ |  _ |  j | ƒ |  _ d  S(   N(   t   _getParentArgParsert   _getMainArgParserR7   t   _getDiscoveryArgParserR1   (   R.   t   parent_parser(    (    s-   lib/python2.7/site-packages/unittest2/main.pyR2      s    c         C   s<  t  j d t ƒ } | j d d d d d d d d	 d
 d ƒ| j d d d d d d d d d
 d ƒ| j d d d d d d
 d ƒ|  j d  k r¾ | j d d d d d d d
 d ƒt |  _ n  |  j d  k rû | j d d d d d d d
 d ƒt |  _ n  |  j d  k r8| j d d d d d d d
 d ƒt |  _ n  | S(    Nt   add_helps   -vs	   --verboset   destR"   t   actiont   store_constt   consti   t   helps   Verbose outputs   -qs   --quieti    s   Quiet outputs   --localsR&   t
   store_trues"   Show local variables in tracebackss   -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 tests(   t   argparset   ArgumentParsert   Falset   add_argumentR#   R   R$   R%   (   R.   t   parser(    (    s-   lib/python2.7/site-packages/unittest2/main.pyRK   •   s4    c         C   sJ   t  j d | g ƒ } |  j | _ |  j | _ | j d d d d d ƒ| S(   Nt   parentsRB   t   nargst   *RT   s?   a list of any number of test modules, classes and test methods.(   RV   RW   R+   R6   R3   R:   RY   (   R.   t   parentRZ   (    (    s-   lib/python2.7/site-packages/unittest2/main.pyRL   ³   s    c      	   C   s¼   t  j d | g ƒ } d |  j | _ d | _ | j d d d d d d	 ƒ| j d
 d d d d d ƒ| j d d d d d d ƒx3 d D]+ } | j | d d d t  j d t  j ƒq‰ W| S(   NR[   s   %s discoversc   For test discovery all test modules must be importable from the top level directory of the project.s   -ss   --start-directoryRP   t   startRT   s*   Directory to start discovery ('.' default)s   -ps	   --patternt   patterns+   Pattern to match tests ('test*.py' default)s   -ts   --top-level-directoryt   tops<   Top level directory of project (defaults to start directory)R\   t   ?t   default(   R_   R`   Ra   (   RV   RW   R+   R6   t   epilogRY   t   SUPPRESS(   R.   R^   RZ   t   arg(    (    s-   lib/python2.7/site-packages/unittest2/main.pyRM   ¾   s    		c         C   sœ   d |  _  d |  _ d  |  _ | d  k	 rY |  j d  k rC |  j ƒ  n  |  j j | |  ƒ n  | d  k rn |  j n | ƒ  } | j |  j  |  j |  j ƒ |  _	 d  S(   NR   s   test*.py(
   R_   R`   R   Ra   R1   R2   RA   R)   R>   RI   (   R.   R    t   LoaderR    (    (    s-   lib/python2.7/site-packages/unittest2/main.pyR@   Ó   s    			c      	   C   s!  |  j  r t ƒ  n  |  j d  k r1 t j |  _ n  t |  j t j ƒ rÜ ys y4 |  j d |  j	 d |  j
 d |  j d |  j ƒ } Wn8 t k
 r· |  j d |  j	 d |  j
 d |  j ƒ } n XWqå 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   R   t   TextTestRunnerR   R   t   class_typesR"   R#   R%   R&   t	   TypeErrort   runRI   t   resultR!   R   t   wasSuccessful(   R.   R(   (    (    s-   lib/python2.7/site-packages/unittest2/main.pyR-   á   s*    	
					N(   RD   t
   __module__t   __doc__R   R   R"   R#   R$   R%   R+   R1   R    t   defaultTestLoadert   TrueRX   R0   R5   R3   R,   RG   R2   RK   RL   RM   R@   R-   (    (    (    s-   lib/python2.7/site-packages/unittest2/main.pyR   7   s(   									(   Ro   R   RV   R   t   typesR   t	   unittest2R    R   t   unittest2.signalsR   t   ImportErrorR   Rq   t
   __unittestR9   R;   R   R   t   objectR   t   main(    (    (    s-   lib/python2.7/site-packages/unittest2/main.pyt   <module>   s"   
			Å