B
@ϙ("o @ sp d dl Z d dlZd dlZddlmZmZ ddlmZ dZdZ dZ
dd Zd
d Zdd
Z
G dd deZeZdS ) N )loaderrunner)installHandlerTa 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
%(prog)s path/to/test_file.py - run tests from test_file.py
aF 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 sx t j| rt| drtt j| rXt j| t }t j|sP|t j rT| S |} | d d
dd
ddS | S )Nz.py\./)ospathisfilelowerendswithisabsrelpathgetcwd
startswithpardirreplace)nameZrel_path r 2/opt/alt/python37/lib64/python3.7/unittest/main.py
_convert_name s r c C s dd | D S )Nc S s g | ]}t |qS r )r ).0r r r r
. s z"_convert_names..r )namesr r r _convert_names- s r c C s d| krd| } | S )N*z*%s*r )patternr r r _convert_select_pattern1 s r c @ s e Zd ZdZdZd Z Z Z Z Z Z
dZddddej
ddddddfddddZdd d
Zdd Zd
d ZdddZdd Zdd Zdd Zdd ZdddZdd ZdS ) TestProgramNr __main__TF) tb_localsc C s t |tr@t|| _x0|ddd D ]}
t| j|
| _q(W n|| _|d krTtj}|| _|| _ | | _
|| _|
| _|| _
|d krtjsd| _n|| _|| _|| _|| _tj|d | _| | | d S )Nr r defaultr )
isinstancestr
__import__modulesplitgetattrsysargvexitfailfast
catchbreak verbositybufferr" warnoptionswarningsdefaultTest
testRunner
testLoaderr
r basenameprogName parseArgsrunTests)selfr' r3 r+ r4 r5 r, r/ r- r. r0 r2 r" partr r r __init__A s,
zTestProgram.__init__c C s4 |rt | | jd kr| | td d S )N )print_discovery_parser_initArgParsers_print_helpr* r, )r: msgr r r usageExitg s
zTestProgram.usageExitc O sZ | j d kr6t| j ttd| ji | j n t| j ttd| ji d S )Nprog) r' r> _main_parserformat_help
MAIN_EXAMPLESr7 r?
print_helpMODULE_EXAMPLES)r: argskwargsr r r rA o s
zTestProgram._print_helpc C s | | jd krpt|dkrD|d dkrD| |dd d S | j|dd | | js| g d S n| j|dd | | jrt| j| _ t
dkrd | _n6| jd krd | _ n$t| jt
r| jf| _ nt| j| _ | d S )Nr discoverr= r! )r@ r' lenr
_do_discoveryrE
parse_argstestsr testNames__name__r3 r$ r% listcreateTests)r: r+ r r r r8 x s(
zTestProgram.parseArgsc C st | j r| j | j_ |r@|d kr"| jn| }|| j| j| j| _n0| jd kr\| j| j | _n| j
| j| j | _d S )N)testNamePatternsr5 rL startr toptestrQ ZloadTestsFromModuler' ZloadTestsFromNames)r: from_discoveryLoaderr r r r rT s
zTestProgram.createTestsc C s$ | }| || _| || _d S )N)_getParentArgParser_getMainArgParserrE _getDiscoveryArgParserr? )r: Z
parent_parserr r r r@ s zTestProgram._initArgParsersc C s t jdd}|jddddddd |jd
ddddd
d |jddddd | jd krn|jdddddd d| _| jd kr|jdddddd d| _| jd kr|jdddddd d| _| jd kr|jdd d!td"d# g | _|S )$NF)add_helpz-vz --verboser/ store_constr= zVerbose output)destactionconsthelpz-qz--quietr zQuiet outputz--localsr"
store_truez"Show local variables in tracebacks)r` ra rc z-fz
--failfastr- zStop on first fail or errorz-cz--catchr. z'Catch Ctrl-C and display results so farz-bz--bufferr0 z%Buffer stdout and stderr during testsz-krU appendz.Only run tests which match the given substring)r` ra typerc )argparseArgumentParseradd_argumentr- r. r0 rU r )r: parserr r r r[ s>
zTestProgram._getParentArgParserc C s2 t j|gd}| j|_| j|_|jdddd |S )N)parentsrP r z?a list of any number of test modules, classes and test methods.)nargsrc )rg rh r7 rD rA rH ri )r: parentrj r r r r\ s zTestProgram._getMainArgParserc C s~ t j|gd}d| j |_d|_|jddddd |jd d
ddd |jd
dddd x"dD ]}|j|dt jt jd q\W |S )N)rk z%s discoverzcFor test discovery all test modules must be importable from the top level directory of the project.z-sz--start-directoryrV z*Directory to start discovery ('.' default))r` rc z-pz --patternr z+Pattern to match tests ('test*.py' default)z-tz--top-level-directoryrW z