o 0¦iø+ã@sr ddlZddlZddlZddlmZmZddlmZdZdZ 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 cCs€tj |¡r>| ¡ d¡r>tj |¡r,tj |t ¡¡}tj |¡s(| tj ¡r*|S|}tj  |¡dd…  dd¡  dd¡S|S)Nz.pyéýÿÿÿú\Ú.ú/) ÚosÚpathÚisfileÚlowerÚendswithÚisabsÚrelpathÚgetcwdÚ startswithÚpardirÚnormpathÚreplace)ÚnameZrel_path©rú4/opt/alt/python310/lib64/python3.10/unittest/main.pyÚ _convert_names $rcCsdd„|DƒS)NcSsg|]}t|ƒ‘qSr)r)Ú.0rrrrÚ .sz"_convert_names..r)ÚnamesrrrÚ_convert_names-srcCsd|vrd|}|S)NÚ*z*%s*r)ÚpatternrrrÚ_convert_select_pattern1sr c @s°eZdZ dZdZdZZZZZ 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ƒrt|ƒ|_| d¡dd…D] } t|j| ƒ|_qn||_|dur(tj}||_||_ | |_ ||_ | |_ | |_ | durEtjsEd|_n| |_||_||_||_tj |d¡|_| |¡| ¡dS)NrrÚdefaultr)Ú isinstanceÚstrÚ __import__ÚmoduleÚsplitÚgetattrÚsysÚargvÚexitÚfailfastÚ catchbreakÚ verbosityÚbufferr#Ú warnoptionsÚwarningsÚ defaultTestÚ testRunnerÚ testLoaderr r ÚbasenameÚprogNameÚ parseArgsÚrunTests)Úselfr(r4r,r5r6r-r0r.r/r1r3r#ÚpartrrrÚ__init__As.  ÿ  zTestProgram.__init__cCs4|rt|ƒ|jdur| ¡| ¡t d¡dS)Né)ÚprintÚ_discovery_parserÚ_initArgParsersÚ _print_helpr+r-)r;ÚmsgrrrÚ usageExitgs  zTestProgram.usageExitcOs\|jdurt|j ¡ƒttd|jiƒ|j ¡dSt|j ¡ƒttd|jiƒdS)NÚprog) r(r?Ú _main_parserZ format_helpÚ MAIN_EXAMPLESr8r@Ú print_helpÚMODULE_EXAMPLES)r;ÚargsÚkwargsrrrrBos zTestProgram._print_helpcCsê| ¡|jdur8t|ƒdkr"|d ¡dkr"| |dd…¡dS|j |dd…|¡|js7| g¡dSn |j |dd…|¡|jrTt|jƒ|_ t dkrSd|_n|j dur]d|_ nt |j t ƒri|j f|_ nt|j ƒ|_ | ¡dS)NrÚdiscoverr>r")rAr(Úlenr Ú _do_discoveryrFÚ parse_argsÚtestsrÚ testNamesÚ__name__r4r%r&ÚlistÚ createTests)r;r,rrrr9xs,  ü €     zTestProgram.parseArgscCsx|jr|j|j_|r!|dur|jn|ƒ}| |j|j|j¡|_dS|jdur0|j |j ¡|_dS|j  |j|j ¡|_dS©N) ÚtestNamePatternsr6rLÚstartrÚtopÚtestrQZloadTestsFromModuler(ZloadTestsFromNames)r;Úfrom_discoveryÚLoaderrrrrrT•s    ÿzTestProgram.createTestscCs$| ¡}| |¡|_| |¡|_dSrU)Ú_getParentArgParserÚ_getMainArgParserrFÚ_getDiscoveryArgParserr@)r;Z parent_parserrrrrA¡s zTestProgram._initArgParserscCsÞtjdd�}|jddddddd �|jd d ddd d d �|jddddd�|jdur7|jdddddd�d|_|jdurI|jdddddd�d|_|jdur[|jdddddd�d|_|jdurm|jdd d!td"d#�g|_|S)$NF)Zadd_helpz-vz --verboser0Z store_constr>zVerbose output)ÚdestÚactionZconstÚhelpz-qz--quietrz Quiet outputz--localsr#Ú store_truez"Show local variables in tracebacks)r_r`raz-fz --failfastr.zStop on first fail or errorz-cz--catchr/z'Catch Ctrl-C and display results so farz-bz--bufferr1z%Buffer stdout and stderr during testsz-krVÚappendz.Only run tests which match the given substring)r_r`Útypera)ÚargparseÚArgumentParserÚ add_argumentr.r/r1rVr )r;Úparserrrrr\¦sL  þ þþ  þ  þ  þ þzTestProgram._getParentArgParsercCs2tj|gd�}|j|_|j|_|jdddd�|S)N©ÚparentsrPrz?a list of any number of test modules, classes and test methods.)Únargsra)rerfr8rErBrHrg)r;Úparentrhrrrr]ÉsÿzTestProgram._getMainArgParsercCsztj|gd�}d|j|_d|_|jddddd�|jd d d d d�|jd dddd�dD] }|j|dtjtjd�q-|S)Nriz %s discoverzcFor test discovery all test modules must be importable from the top level directory of the project.z-sz--start-directoryrWz*Directory to start discovery ('.' default))r_raz-pz --patternrz+Pattern to match tests ('test*.py' default)z-tz--top-level-directoryrXzs  ]