U e5dæ+ã@spddlZddlZddlZddlmZmZddlmZdZdZ dZ dd „Z d d „Z d d „Z Gdd„deƒZeZdS)éNé)ÚloaderÚrunner)ÚinstallHandlerTaExamples: %(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 aFExamples: %(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 cCsxtj |¡rt| ¡ d¡rttj |¡rXtj |t ¡¡}tj |¡sP| tj ¡rT|S|}|dd…  dd¡  dd¡S|S)Nz.pyéýÿÿÿú\Ú.ú/) ÚosÚpathÚisfileÚlowerÚendswithÚisabsÚrelpathÚgetcwdÚ startswithÚpardirÚreplace)ÚnameZrel_path©rú%/usr/lib64/python3.8/unittest/main.pyÚ _convert_names rcCsdd„|DƒS)NcSsg|] }t|ƒ‘qSr)r)Ú.0rrrrÚ .sz"_convert_names..r)ÚnamesrrrÚ_convert_names-srcCsd|krd|}|S)NÚ*z*%s*r)ÚpatternrrrÚ_convert_select_pattern1src @s®eZdZdZdZdZZZZZ Z dZ dddde j ddddddf ddœdd„Zdd d „Zd d „Zd d„Zddd„Zdd„Zdd„Zdd„Zdd„Zddd„Zdd„ZdS) Ú TestProgramNrÚ__main__TF)Ú tb_localsc CsÊt|tƒrÚ _main_parserZ format_helpÚ MAIN_EXAMPLESr7r?Ú print_helpÚMODULE_EXAMPLES)r:ÚargsÚkwargsrrrrAos   zTestProgram._print_helpcCsê| ¡|jdkrpt|ƒdkrD|d ¡dkrD| |dd…¡dS|j |dd…|¡|js†| g¡dSn|j |dd…|¡|jr¨t|jƒ|_ t dkrÞd|_n6|j dkrºd|_ n$t |j t ƒrÒ|j f|_ n t|j ƒ|_ | ¡dS)NrÚdiscoverr=r!)r@r'Úlenr Ú _do_discoveryrEÚ parse_argsÚtestsrÚ testNamesÚ__name__r3r$r%ÚlistÚ createTests)r:r+rrrr8xs(       zTestProgram.parseArgscCst|jr|j|j_|r@|dkr"|jn|ƒ}| |j|j|j¡|_n0|jdkr\|j |j ¡|_n|j  |j|j ¡|_dS©N) ÚtestNamePatternsr5rKÚstartrÚtopÚtestrPZloadTestsFromModuler'ZloadTestsFromNames)r:Úfrom_discoveryÚLoaderrrrrrS•s   ÿzTestProgram.createTestscCs$| ¡}| |¡|_| |¡|_dSrT)Ú_getParentArgParserÚ_getMainArgParserrEÚ_getDiscoveryArgParserr?)r:Z parent_parserrrrr@¡s zTestProgram._initArgParserscCsÞtjdd�}|jddddddd �|jd d ddd d d �|jddddd�|jdkrn|jdddddd�d|_|jdkr’|jdddddd�d|_|jdkr¶|jdddddd�d|_|jdkrÚ|jdd d!td"d#�g|_|S)$NF)Zadd_helpz-vz --verboser/Z store_constr=zVerbose output)ÚdestÚactionZconstÚhelpz-qz--quietrz Quiet outputz--localsr"Ú store_truez"Show local variables in tracebacks)r^r_r`z-fz --failfastr-zStop on first fail or errorz-cz--catchr.z'Catch Ctrl-C and display results so farz-bz--bufferr0z%Buffer stdout and stderr during testsz-krUÚappendz.Only run tests which match the given substring)r^r_Útyper`)ÚargparseÚArgumentParserÚ add_argumentr-r.r0rUr)r:Úparserrrrr[¦sR  þ þþ  þ  þ  þ þzTestProgram._getParentArgParsercCs2tj|gd�}|j|_|j|_|jdddd�|S)N©ÚparentsrOrz?a list of any number of test modules, classes and test methods.)Únargsr`)rdrer7rDrArGrf)r:Úparentrgrrrr\ÉsÿzTestProgram._getMainArgParsercCsztj|gd�}d|j|_d|_|jddddd�|jd d d d d�|jd dddd�dD]}|j|dtjtjd�qZ|S)Nrhz %s discoverzcFor test discovery all test modules must be importable from the top level directory of the project.z-sz--start-directoryrVz*Directory to start discovery ('.' default))r^r`z-pz --patternrz+Pattern to match tests ('test*.py' default)z-tz--top-level-directoryrWzs  ]