
EUc           @   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 Z e Z	 d   Z
 d e j f d     YZ e d  Z e d  Z d	   Z e j Z e j Z e e d
 d  d k ry+ d d l Z e j   Z e j Z e Z Wqe k
 r	e Z qXn e Z d Z d Z d Z d e f d     YZ d e f d     YZ d e f d     YZ  d e f d     YZ! d e f d     YZ" e# d k re" d d d e j$ d e j%  n  d S(   sn   Run a unittest testcase reporting results as Subunit.

  $ python -m samba.subunit.run mylib.tests.test_suite
i(   t   UtcNc   
         s   d       f d   } | \ } } } t  rR x" | rN   |  rN | j } q0 Wn  t j } t  r | j r t | | j  r | |  } | | | | |  }	 n | | | |  }	 |  j |	  d S(   s   Converts a sys.exc_info()-style tuple of values into a string.

    Copied from Python 2.7's unittest.TestResult._exc_info_to_string.
    c         S   s   d |  j  j k S(   Nt
   __unittest(   t   tb_framet	   f_globals(   t   tb(    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyt   _is_relevant_tb_level/   s    c            s7   d } x* |  r2   |   r2 | d 7} |  j  }  q	 W| S(   Ni    i   (   t   tb_next(   R   t   length(   R   (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyt   _count_relevant_tb_levels2   s
    
N(   t   HIDE_INTERNAL_STACKR   t	   tracebackt   format_exceptiont   failureExceptiont
   isinstancet
   writelines(
   t   streamt   errt   testR   t   exctypet   valueR   R   R   t   msgLines(    (   R   s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyt   write_traceback*   s    		t   TestProtocolClientc           B   s   e  Z d  Z d   Z d d  Z d d  Z d d  Z d e d  Z	 d d  Z
 d   Z d   Z d	   Z d
   Z d   Z d   Z RS(   s  A TestResult which generates a subunit stream for a test run.

    # Get a TestSuite or TestCase to run
    suite = make_suite()
    # Create a stream (any object with a 'write' method). This should accept
    # bytes not strings: subunit is a byte orientated protocol.
    stream = file('tests.log', 'wb')
    # Create a subunit result object which will output to the stream
    result = subunit.TestProtocolClient(stream)
    # Optionally, to get timing data for performance analysis, wrap the
    # serialiser with a timing decorator
    result = subunit.test_results.AutoTimingTestResultDecorator(result)
    # Run the test suite reporting to the subunit result object
    suite.run(result)
    # Close the stream.
    stream.close()
    c         C   s   t  j j |   | |  _ d  S(   N(   t   unittestt
   TestResultt   __init__t   _stream(   t   selfR   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR   ^   s    c         C   s   |  j  d | d | d S(   s   Report an error in test test.

        :param error: Standard unittest positional argument form - an
            exc_info tuple.
        t   errorN(   t   _addOutcome(   R   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyt   addErrorb   s    c         C   s   |  j  d | d | d S(   s   Report an expected failure in test test.

        :param error: Standard unittest positional argument form - an
            exc_info tuple.
        t   xfailR   N(   R   (   R   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyt   addExpectedFailurej   s    c         C   s   |  j  d | d | d S(   s   Report a failure in test test.

        :param error: Standard unittest positional argument form - an
            exc_info tuple.
        t   failureR   N(   R   (   R   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyt
   addFailurer   s    c         C   s   |  j  j d | |  j |   | r? | d k rT t  qT n | d k	 rT t  n  | d k	 r |  j  j d  t |  j  | |  n |  j  j d  | d k	 r |  j  j d  n  d S(   sy  Report a failure in test test.

        :param outcome: A string describing the outcome - used as the
            event name in the subunit stream.
        :param error: Standard unittest positional argument form - an
            exc_info tuple.
        :param error_permitted: If True then error must be supplied.
            If False then error must not be supplied.
        s   %s: s    [
s   
s   ]
N(   R   t   writet   _test_idt   Nonet
   ValueErrorR   (   R   t   outcomeR   R   t   error_permitted(    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR   z   s    
!	c         C   sg   | d k r% |  j d | d d n> |  j j d | j    |  j j d |  |  j j d  d S(   s   Report a skipped test.t   skipR   s   skip: %s [
s   %s
s   ]
N(   R%   R   R   R#   t   id(   R   R   t   reason(    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyt   addSkip   s
    c         C   s   |  j  d | d t d S(   s   Report a success in a test.t
   successfulR(   N(   R   t   False(   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyt
   addSuccess   s    c         C   s   |  j  d | d t d S(   s3   Report an unexpected success in test test.
        t	   uxsuccessR(   N(   R   R.   (   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyt   addUnexpectedSuccess   s    c         C   s4   | j    } t |  t k	 r0 | j d  } n  | S(   Nt   utf8(   R*   t   typet   bytest   encode(   R   R   t   result(    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR$      s    c         C   sH   t  t |   j |  |  j j d |  j |  d  |  j j   d S(   s%   Mark a test as starting its test run.s   test: s   
N(   t   superR   t	   startTestR   R#   R$   t   flush(   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR8      s    !c         C   s'   t  t |   j |  |  j j   d  S(   N(   R7   R   t   stopTestR   R9   (   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR:      s    c      	   C   sT   | j  t    } |  j j d | j | j | j | j | j | j	 | j
 f  d S(   s^   Inform the client of the time.

        ":param datetime: A datetime.datetime object.
        s*   time: %04d-%02d-%02d %02d:%02d:%02d.%06dZ
N(   t
   astimezoneR    R   R#   t   yeart   montht   dayt   hourt   minutet   secondt   microsecond(   R   t
   a_datetimet   time(    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRD      s    N(   t   __name__t
   __module__t   __doc__R   R%   R   R    R"   t   TrueR   R,   R/   R1   R$   R8   R:   RD   (    (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR   K   s   							c         C   s   y t  |   } Wn! t k
 r3 |  j   |  f g SXt |   t j f k sR | r g  } x! | D] } | j t |   q_ W| Sd  } t	 |   } x | D] } | j   } Pq Wt
 |  d d   d  k	 r |  j   n  | |  f g Sd  S(   Nt
   sort_tests(   t   itert	   TypeErrorR*   R3   R   t	   TestSuitet   extendt   _flatten_testsR%   t   iterate_testst   getattrRI   (   t   suite_or_caset   unpack_outert   testsR6   R   t   suite_id(    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRN      s$    c         C   sB   t  |  d | } | j   t j g  | D] \ } } | ^ q)  S(   s;   Sort suite_or_case while preserving non-vanilla TestSuites.RR   (   RN   t   sortR   RL   (   RQ   RR   RS   t   sort_keyR   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyt   sorted_tests   s    
c         c   sZ   y t  |   } Wn t k
 r( |  Vn. Xx* | D]" } x t |  D] } | VqC Wq0 Wd S(   s>   Iterate through all of the test cases in 'test_suite_or_case'.N(   RJ   RK   RO   (   t   test_suite_or_caset   suiteR   t   subtest(    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRO      s    	t   discovers7     -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
  -l, --list       List tests rather than executing them.
  --load-list      Specifies a file containing test ids, only tests matching
                   those ids are executed.
%(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

All options must come before [tests].  [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
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)
  -l, --list       List tests rather than executing them.
  --load-list      Specifies a file containing test ids, only tests matching
                   those ids are executed.

For test discovery all test modules must be importable from the top
level directory of the project.
t   TestResultDecoratorc           B   s   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d d  Z	 d d  Z
 d   Z d d	  Z d d
  Z d   Z d   Z e d    Z d   Z e d    Z d   Z RS(   s  General pass-through decorator.

    This provides a base that other TestResults can inherit from to
    gain basic forwarding functionality. It also takes care of
    handling the case where the target doesn't support newer methods
    or features by degrading them.
    c         C   s   | |  _  d S(   s5   Create a TestResultDecorator forwarding to decorated.N(   t	   decorated(   R   R]   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR   F  s    c         C   s   |  j  j |  S(   N(   R]   R8   (   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR8   K  s    c         C   s   |  j  j   S(   N(   R]   t   startTestRun(   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR^   N  s    c         C   s   |  j  j |  S(   N(   R]   R:   (   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR:   Q  s    c         C   s   |  j  j   S(   N(   R]   t   stopTestRun(   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR_   T  s    c         C   s   |  j  j | |  S(   N(   R]   R   (   R   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR   W  s    c         C   s   |  j  j | |  S(   N(   R]   R"   (   R   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR"   Z  s    c         C   s   |  j  j |  S(   N(   R]   R/   (   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR/   ]  s    c         C   s   |  j  j | |  S(   N(   R]   R,   (   R   R   R+   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR,   `  s    c         C   s   |  j  j | |  S(   N(   R]   R    (   R   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR    c  s    c         C   s   |  j  j |  S(   N(   R]   R1   (   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR1   f  s    c         C   s   |  j  j   S(   N(   R]   t   wasSuccessful(   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR`   i  s    c         C   s
   |  j  j S(   N(   R]   t
   shouldStop(   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRa   l  s    c         C   s   |  j  j   S(   N(   R]   t   stop(   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRb   p  s    c         C   s
   |  j  j S(   N(   R]   t   testsRun(   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRc   s  s    c         C   s   |  j  j |  S(   N(   R]   RD   (   R   RC   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRD   w  s    N(   RE   RF   RG   R   R8   R^   R:   R_   R%   R   R"   R/   R,   R    R1   R`   t   propertyRa   Rb   Rc   RD   (    (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR\   =  s"   									t   HookedTestResultDecoratorc           B   s   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d d  Z	 d d  Z
 d   Z d d	  Z d d
  Z d   Z d   Z e d    Z d   Z d   Z RS(   s/   A TestResult which calls a hook on every event.c         C   s&   t  t |   |  _  |  j  j |  d  S(   N(   R7   Re   R   (   R   R]   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR   ~  s    c         C   s   |  j    |  j j |  S(   N(   t   _before_eventR7   R8   (   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR8     s    
c         C   s   |  j    |  j j   S(   N(   Rf   R7   R^   (   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR^     s    
c         C   s   |  j    |  j j |  S(   N(   Rf   R7   R:   (   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR:     s    
c         C   s   |  j    |  j j   S(   N(   Rf   R7   R_   (   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR_     s    
c         C   s   |  j    |  j j | |  S(   N(   Rf   R7   R   (   R   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR     s    
c         C   s   |  j    |  j j | |  S(   N(   Rf   R7   R"   (   R   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR"     s    
c         C   s   |  j    |  j j |  S(   N(   Rf   R7   R/   (   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR/     s    
c         C   s   |  j    |  j j | |  S(   N(   Rf   R7   R,   (   R   R   R+   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR,     s    
c         C   s   |  j    |  j j | |  S(   N(   Rf   R7   R    (   R   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR      s    
c         C   s   |  j    |  j j |  S(   N(   Rf   R7   R1   (   R   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR1     s    
c         C   s   |  j    |  j j   S(   N(   Rf   R7   R`   (   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR`     s    
c         C   s   |  j    |  j j S(   N(   Rf   R7   Ra   (   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRa     s    
c         C   s   |  j    |  j j   S(   N(   Rf   R7   Rb   (   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRb     s    
c         C   s   |  j    |  j j |  S(   N(   Rf   R7   RD   (   R   RC   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRD     s    
N(   RE   RF   RG   R   R8   R^   R:   R_   R%   R   R"   R/   R,   R    R1   R`   Rd   Ra   Rb   RD   (    (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRe   {  s    									t   AutoTimingTestResultDecoratorc           B   s8   e  Z d  Z d   Z d   Z e d    Z d   Z RS(   s  Decorate a TestResult to add time events to a test run.

    By default this will cause a time event before every test event,
    but if explicit time data is being provided by the test run, then
    this decorator will turn itself off to prevent causing confusion.
    c         C   s#   d  |  _ t t |   j |  d  S(   N(   R%   t   _timeR7   Rg   R   (   R   R]   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR     s    	c         C   sK   |  j  } | d  k	 r d  St j j   j d t    } |  j j |  d  S(   Nt   tzinfo(   Rh   R%   t   datetimet   utcnowt   replaceR    R]   RD   (   R   RD   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRf     s
    	c         C   s
   |  j  j S(   N(   R]   Ra   (   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRa     s    c         C   s   | |  _  |  j j |  S(   s\  Provide a timestamp for the current test activity.

        :param a_datetime: If None, automatically add timestamps before every
            event (this is the default behaviour if time() is not called at
            all).  If not None, pass the provided time onto the decorated
            result object and disable automatic timestamps.
        (   Rh   R]   RD   (   R   RC   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRD     s    	(   RE   RF   RG   R   Rf   Rd   Ra   RD   (    (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRg     s
   		t   SubunitTestRunnerc           B   s#   e  Z d d d d   Z d   Z RS(   c         C   s   | p t  j |  _ d S(   sh   Create a SubunitTestRunner.

        :param verbosity: Ignored.
        :param buffer: Ignored.
        N(   t   syst   stdoutR   (   R   t	   verbosityt   bufferR   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR     s    c         C   s)   t  |  j  } t |  } | |  | S(   s&   Run the given test case or test suite.(   R   R   Rg   (   R   R   R6   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyt   run  s    
N(   RE   RF   R%   R   Rr   (    (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRm     s   t   TestProgramc           B   s|   e  Z d  Z e Z d Z Z Z e  d d d e	 e
 d d d d d 
 Z d   Z d   Z e d  Z d   Z d d  Z RS(	   s   A command-line program that runs a set of tests; this is primarily
       for making test modules conveniently executable.
    i   c         C   sq  | t  k r d  |  _ n] t | t  rl t |  |  _ x< | j d  d D] } t |  j |  |  _ qJ Wn	 | |  _ | d  k r t j	 } n  |
 d  k r t j
 }
 n  | d  k r t   } n  | |  _ | |  _ | |  _ |	 |  _ | |  _ t |  _ d  |  _ | |  _ | |  _ | d } | j d t j j  rW| j t j j  } d | d } n t j j | d  } | |  _ |  j |  |  j r&t |  j d  } z | j   } Wd  | j   Xt  d   | D  } t! j"   } x9 t# |  j$  D]( } | j%   | k r| j& |  qqW| |  _$ n  |  j s<|  j'   n1 x. t# |  j$  D] } |
 j( d	 | j%    qLWd  S(
   Nt   .i   i    s   %srun.pys   %s.runit   rbc         s   s$   |  ] } | j    j d   Vq d S(   s   utf-8N(   t   stript   decode(   t   .0t   line(    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pys	   <genexpr>(  s    s   %s
()   RE   R%   t   moduleR   t   strt
   __import__t   splitRP   Rn   t   argvRo   Rm   t   exitt
   catchbreakRp   Rq   t   defaultTestR.   t	   listtestst	   load_listt
   testRunnert
   testLoadert   endswitht   ost   patht   sept   basenamet   progNamet	   parseArgst   opent	   readlinest   closet   setR   RL   RO   R   R*   t   addTestt   runTestsR#   (   R   Rz   R   R~   R   R   R   Rp   R   Rq   Ro   t   partR   t   elementst   sourcet   linest   test_idst   filteredR   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR     sX    										
			c         C   s  t  |  d k r= | d j   d k r= |  j | d  d  Sd d  l } d d d d d	 d
 d g } yk| 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 r6|  j	 d  k r6t |  _	 q6n  | d! k rNt |  _
 n  | d k r | |  _ q q Wt  |  d k r|  j d  k rd  |  _ n- t  |  d k r| |  _ n |  j f |  _ |  j   Wn+ | j k
 r|  j t j   d  n Xd  S("   Ni   R[   i   it   helpt   verboset   quiett   catchRq   t   lists
   load-list=t   hHvqfcbls   -hs   -Hs   --helps   -qs   --quieti    s   -vs	   --verboses   -cs   --catchs   -bs   --buffers   -ls   --lists   --load-list(   s   -hs   -Hs   --help(   s   -qs   --quiet(   s   -vs	   --verbose(   s   -cs   --catch(   s   -bs   --buffer(   s   -ls   --list(   t   lent   lowert   _do_discoveryt   getoptt	   usageExitRp   R   R%   RH   Rq   R   R   R   t	   testNamest   createTestsR   Rn   t   exc_info(   R   R~   R   t	   long_optst   optionst   argst   optR   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR   4  sB    (!c         C   sL   |  j  d  k r* |  j j |  j  |  _ n |  j j |  j  |  j  |  _ d  S(   N(   R   R%   R   t   loadTestsFromModuleRz   R   t   loadTestsFromNames(   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR   \  s    c         C   s  t  s t 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 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 d# d$ d d% d t d d d	 d& | j 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 r2| j	 |  _	 n  | j |  _ | j |  _ | j r_d+ |  _ n  | j }	 | j }
 | j } |   } | j |	 |
 |  } t |  |  _ d  S(-   NsY   Unable to use discovery, must use python 2.7 or greater, or install the discover package.s   %s discoveris   -vs	   --verboset   destR   t   defaultR   s   Verbose outputt   actiont
   store_trues   -cs   --catchR   s'   Catch ctrl-C and display results so fars   -bs   --bufferRq   s%   Buffer stdout and stderr during testss   -ss   --start-directoryt   startRt   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)s   -ls   --listR   s$   List tests rather than running them.s   --load-listR   s2   Specify a filename containing the test ids to use.i   i   (   s   starts   patterns   top(   t   have_discovert   AssertionErrorR   t   optparset   OptionParsert   progt
   add_optionR.   R   Rq   R%   t
   parse_argsR   R   t   zipt   setattrR   R   R   Rp   R   R   R   R[   RW   R   (   R   R~   t   LoaderR   t   parserR   R   t   nameR   t	   start_dirR   t   top_level_dirt   loadert   loaded(    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR   c  sZ    

!					
c         C   sm   |  j  r. t t d d   d  k	 r. t j   n  |  j j |  j  |  _ |  j	 ri t
 j	 |  j j    n  d  S(   Nt   installHandler(   R   RP   R   R%   R   R   Rr   R   R6   R   Rn   R`   (   R   (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR     s    		c         C   s   | r | GHn  i |  j  d 6d d 6d d 6} |  j t k rH t | d <n  |  j t k rd t | d <n  |  j | } | j d  } | j d d  | j d d  d j	 |  GHt
 j d  d  S(	   NR   t    R   Rq   s   
i   s)   Run a test suite with a subunit reporter.i   (   R   R   R.   t
   CATCHBREAKRq   t   BUFFEROUTPUTt   USAGER}   t   insertt   joinRn   R   (   R   t   msgt   usaget
   usage_textt   usage_lines(    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyR     s    
N(   RE   RF   RG   t   USAGE_AS_MAINR   R%   R   Rq   R   t   defaultTestLoaderRH   R   R   R   t   defaultTestLoaderClsR   R   R   (    (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyRs     s   		7	(	B	t   __main__Rz   R~   Ro   (&   RG   t   iso8601.iso8601R    Rj   R   Rn   R
   R   RH   R	   R   R   R   R.   RN   RW   RO   R   t
   TestLoaderR   RP   R%   R[   t   DiscoveringTestLoaderR   t   ImportErrorR   R   R   t   objectR\   Re   Rg   Rm   Rs   RE   R~   Ro   (    (    (    s5   /usr/lib/python2.7/dist-packages/samba/subunit/run.pyt   <module>   sB   	!u				
#>A#