U :eX@sddlZddlZddlZddlZddlZddlZddlZddlmZmZddl m Z m Z m Z dZ edejZGddde jZd d Zd d Zd dZddZddZGdddeZeZdddZe jdfddZde je jfddZde je jfddZ dS)N)fnmatch fnmatchcase)casesuiteutilTz[_a-z]\w*\.py$cs,eZdZdZfddZfddZZS) _FailedTestNcs||_tt||dSN) _exceptionsuperr__init__)selfZ method_name exception __class__4/usr/local/python38/lib/python3.8/unittest/loader.pyr sz_FailedTest.__init__cs*|jkrtt|Sfdd}|S)Ncs jdSr )r rr rr testFailure!sz,_FailedTest.__getattr__..testFailure)_testMethodNamer r __getattr__)r namerrrrrs  z_FailedTest.__getattr__)__name__ __module__ __qualname__rr r __classcell__rrrrrs rcCs"d|tf}t|t|||S)Nz#Failed to import test module: %s %s) traceback format_exc_make_failed_test ImportError)r suiteClassmessagerrr_make_failed_import_test&s r"cCsdtf}t||||S)NzFailed to call load_tests: %s)rrr)rrr r!rrr_make_failed_load_tests+sr#cCst||}||f|fSr )r) methodnamerr r!testrrrr0s rcCs<tt|dd}||i}tdtjf|}|||fS)NcSsdSr rrrrr testSkipped5sz'_make_skipped_test..testSkippedZ ModuleSkipped)rskipstrtypeTestCase)r$rr r&ZattrsZ TestClassrrr_make_skipped_test4s   r+cCs*|dr|ddStj|dS)Nz $py.classir)lowerendswithospathsplitext)r/rrr_jython_aware_splitext<s r1cseZdZdZeejZdZe j Z dZ fddZ ddZdddd Zd d d Zd!d d ZddZd"ddZddZddZddZddZd#ddZd$ddZZS)% TestLoaderr%Ncs tt|g|_t|_dSr )r r2r errorsset_loading_packagesrrrrr MszTestLoader.__init__cCsFt|tjrtd||}|s2t|dr2dg}|t||}|S)NzYTest cases should not be derived from TestSuite. Maybe you meant to derive from TestCase?ZrunTest) issubclassr TestSuite TypeErrorgetTestCaseNameshasattrr map)r testCaseClassZ testCaseNamesZ loaded_suiterrrloadTestsFromTestCaseTs  z TestLoader.loadTestsFromTestCasepatternc Os:t|dksd|kr,tdt|ddt|dkrRt|d}td|t|dkrxt|d}td|g}t|D]4}t ||}t |t rt |t jr|||qt |dd} ||}| dk r6z| |||WStk r4} z,t|j| |j\} } |j| | WYSd} ~ XYnX|S)NrZuse_load_testsz(use_load_tests is deprecated and ignoredrzCloadTestsFromModule() takes 1 positional argument but {} were givenz=loadTestsFromModule() got an unexpected keyword argument '{}' load_tests)lenwarningswarnDeprecationWarningpopr8formatsorteddirgetattr isinstancer)r6rr*appendr=r Exceptionr#rr3) r moduler?argskwsZ complainttestsrobjr@e error_case error_messagerrrloadTestsFromModulebs<           zTestLoader.loadTestsFromModulec CsX|d}d\}}|dkr|dd}|rzd|}t|}WqWq&tk r|}t||j\}}|s|j||YSYq&Xq&|dd}|} |D]} z| t | | } } Wqt k rN} zvt | dddk r|dk r|j||WYDSt | | |jdt f\}}|j||WY SW5d} ~ XYqXqt| tjrj|| St| trt| tjr|| St| tjrt| trt| tjr|d}| |} tt | |tjs|| gSnt| tjr| St| rH| }t|tjr|St|tjr6||gStd| |fn td| dS) N.)NNr__path__zFailed to access attribute: %sz"calling %s returned %s, not a testz$don't know how to make test from: %s)splitjoin __import__rrEr"r r3rKrIAttributeErrorrrrrJtypes ModuleTyperUr)r6rr*r= FunctionTyperr7callabler8)r rrMpartsrSrTZ parts_copy module_nameZnext_attributerQpartparentrRinstr%rrrloadTestsFromNames       $     zTestLoader.loadTestsFromNamecsfdd|D}|S)Ncsg|]}|qSr)rf).0rrMr rr sz1TestLoader.loadTestsFromNames..)r )r namesrMZsuitesrrhrloadTestsFromNamesszTestLoader.loadTestsFromNamescs>fdd}tt|t}jr:|jtjd|S)NcsZ|jsdSt|}t|s&dSdjj|fjdkpXtfddjDS)NFz%s.%s.%sc3s|]}t|VqdSr )r)rgr?ZfullNamerr szKTestLoader.getTestCaseNames..shouldIncludeMethod..) startswithtestMethodPrefixrIr`rrtestNamePatternsany)attrnameZtestFuncr r<rlrshouldIncludeMethods   z8TestLoader.getTestCaseNames..shouldIncludeMethod)key)listfilterrHsortTestMethodsUsingsort functools cmp_to_key)r r<rtZ testFnNamesrrsrr9s  zTestLoader.getTestCaseNamestest*.pyc CsJd}|dkr|jdk r|j}n|dkr.d}|}tj|}|tjkrRtjd|||_d}d}g}tjtj|rtj|}||krtjtj|d }npz t |Wnt k rd}YnJXtj |}| dd} ztjtj |j}Wntk rz |j} Wntk r8d} YnX| r| jdkr| jdk rd}|jD]P} |s|| |s|qb| |jdtjjd|_||j| |ddqbn*|jtjkrtddntd|dYnX|r|s || |_tj|n tj||r*t d ||s@t|||}| |S) NFTr __init__.pyrV) namespacez2Can not use builtin modules as dotted module namesz$don't know how to discover from {!r}z%Start directory is not importable: %r)!_top_level_dirr.r/abspathsysinsertisdirisfilerZr[rmodulesrYdirname__file__r\__spec__loadersubmodule_search_locationsrWrnrreplacesepextend _find_testsbuiltin_module_namesr8rF _get_directory_containing_moduleremovervr ) r start_dirr?Z top_level_dirZset_implicit_topZis_not_importable is_namespacerPZ the_moduleZtop_partspecr/rrrdiscovers               zTestLoader.discovercCsRtj|}tj|j}tj|drBtj tj |Stj |SdS)Nr}) rrr.r/rrbasenamer,rnr)r rbrM full_pathrrrr`s  z+TestLoader._get_directory_containing_modulecCsB||jkrdSttj|}tj||j}|tjjd}|SNrV)rr1r.r/normpathrelpathrr)r r/Z_relpathrrrr_get_name_from_pathls  zTestLoader._get_name_from_pathcCst|tj|Sr )r[rr)r rrrr_get_module_from_namexsz TestLoader._get_module_from_namecCs t||Sr )r)r r/rr?rrr _match_path|szTestLoader._match_pathFc cs||}|dkrD||jkrD||||\}}|dk r<|V|sDdStt|}|D]t}tj||} || ||\}}|dk r|V|rV|| }|j|z| | ||EdHW5|j |XqVdSr) rr5_find_test_pathrGr.listdirr/rZadddiscardr) r rr?r~rrPZshould_recursepathsr/rrrrrs6   zTestLoader._find_testsc Csttj|}tj|rVt|s(dS||||s:dS||}z||}Wnht j k r}zt |||j dfWYSd}~XYnt ||j \}} |j| |dfYSXtjt|d|} ttj| } ttj|} | | kr@tj| } ttj|}tj|}d}t||| |f|j||ddfSntj|rl|stjtj|dsdSd}d}||}z||}Wnjt j k r}zt |||j dfWYSd}~XYnt ||j \}} |j| |dfYSXt|dd}|j|z0|j||d}|dk rP|dfWS|dfWS|j|XndSdS) N)NFFrzW%r module incorrectly imported from %r. Expected %r. Is this module globally installed?r>r}r@T)r.r/rrVALID_MODULE_NAMEmatchrrrrZSkipTestr+r r"r3rKrrIr1realpathr,rrrUrrZr5rr)r rr?r~rrrMrRrSrTZmod_filerZfullpath_noextZ module_dirZmod_nameZ expected_dirmsgr@rPpackagerrrrs|   &          &       zTestLoader._find_test_path)N)N)r|N)F)F)rrrro staticmethodr three_way_cmprxrprr7r rr r=rUrfrkr9rrrrrrrrrrrrr2Bs$  ( N  n   "r2cCs&t}||_||_||_|r"||_|Sr )r2rxrorpr )prefix sortUsingr rprrrr _makeLoadersrcCst|||d|S)N)rp)rr9)r<rrrprrrr9sr9r%cCst||||Sr )rr=)r<rrr rrr makeSuites rcCst||||Sr )rrU)rMrrr rrr findTestCasess r)NN)!r.rerrr]rzrBrrrrrZ __unittestcompile IGNORECASErr*rr"r#rr+r1objectr2ZdefaultTestLoaderrrr9r7rrrrrrs:/