U e5d®Xã@sddlZddlZddlZddlZddlZddlZddlZddlmZmZddl m Z m Z m Z dZ e dej¡ZGdd„de jƒZd d „Zd d „Zd d„Zdd„Zdd„ZGdd„deƒZeƒZddd„Ze jdfdd„Zde je jfdd„Zde je jfdd„Z dS)éN)ÚfnmatchÚ fnmatchcaseé)ÚcaseÚsuiteÚutilTz[_a-z]\w*\.py$cs,eZdZdZ‡fdd„Z‡fdd„Z‡ZS)Ú _FailedTestNcs||_tt|ƒ |¡dS©N)Ú _exceptionÚsuperrÚ__init__)ÚselfZ method_nameÚ exception©Ú __class__©ú'/usr/lib64/python3.8/unittest/loader.pyr sz_FailedTest.__init__cs*|ˆjkrttˆƒ |¡S‡fdd„}|S)Ncs ˆj‚dSr )r r©r rrÚ testFailure!sz,_FailedTest.__getattr__..testFailure)Ú_testMethodNamer rÚ __getattr__)r Únamerrrrrs  z_FailedTest.__getattr__)Ú__name__Ú __module__Ú __qualname__rr rÚ __classcell__rrrrrs rcCs"d|t ¡f}t|t|ƒ||ƒS)Nz#Failed to import test module: %s %s)Ú tracebackÚ format_excÚ_make_failed_testÚ ImportError)rÚ suiteClassÚmessagerrrÚ_make_failed_import_test&s ÿr"cCsdt ¡f}t||||ƒS)NzFailed to call load_tests: %s)rrr)rrr r!rrrÚ_make_failed_load_tests+sÿr#cCst||ƒ}||fƒ|fSr )r)Ú methodnamerr r!Útestrrrr0s rcCs<t t|ƒ¡dd„ƒ}||i}tdtjf|ƒ}|||ƒfƒS)NcSsdSr rrrrrÚ testSkipped5sz'_make_skipped_test..testSkippedZ ModuleSkipped)rÚskipÚstrÚtypeÚTestCase)r$rr r&ÚattrsZ TestClassrrrÚ_make_skipped_test4s   r,cCs*| ¡ d¡r|dd…Stj |¡dS)Nz $py.classi÷ÿÿÿr)ÚlowerÚendswithÚosÚpathÚsplitext)r0rrrÚ_jython_aware_splitext<s r2cs¨eZdZdZeejƒZdZe j Z dZ ‡fdd„Z dd„Zddœdd „Zd d d „Zd!d d „Zdd„Zd"dd„Zdd„Zdd„Zdd„Zdd„Zd#dd„Zd$dd„Z‡ZS)%Ú TestLoaderr%Ncs tt|ƒ ¡g|_tƒ|_dSr )r r3r ÚerrorsÚsetÚ_loading_packagesrrrrr MszTestLoader.__init__cCsFt|tjƒrtdƒ‚| |¡}|s2t|dƒr2dg}| t||ƒ¡}|S)NzYTest cases should not be derived from TestSuite. Maybe you meant to derive from TestCase?ZrunTest)Ú issubclassrÚ TestSuiteÚ TypeErrorÚgetTestCaseNamesÚhasattrr Úmap)r Ú testCaseClassZ testCaseNamesZ loaded_suiterrrÚloadTestsFromTestCaseTs  z TestLoader.loadTestsFromTestCase©Úpatternc Os:t|ƒdksd|kr,t dt¡| dd¡t|ƒdkrRt|ƒd}td |¡ƒ‚t|ƒdkrxt|ƒd}td |¡ƒ‚g}t|ƒD]4}t ||ƒ}t |t ƒr„t |t jƒr„| | |¡¡q„t |ddƒ} | |¡}| dk �r6z| |||ƒWStk �r4} z,t|j| |jƒ\} } |j | ¡| WY¢Sd} ~ 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)ÚlenÚwarningsÚwarnÚDeprecationWarningÚpopr9ÚformatÚsortedÚdirÚgetattrÚ isinstancer)r7rr*Úappendr>r Ú Exceptionr#rr4) r Úmoduler@ÚargsZkwsZ complaintÚtestsrÚobjrAÚeÚ error_caseÚ error_messagerrrÚloadTestsFromModulebs<ÿ          ÿ zTestLoader.loadTestsFromModulec CsX| d¡}d\}}|dkr˜|dd…}|rŒzd |¡}t|ƒ}WqŒWq&tk rˆ| ¡}t||jƒ\}}|s„|j |¡|YSYq&Xq&|dd…}|} |D]°} z| t | | ƒ} } Wq t k �rN} zvt | ddƒdk �r|dk �r|j |¡|WY¢DSt | | |jdt   ¡fƒ\}}|j |¡|WY¢ SW5d} ~ XYq Xq t| tjƒ�rj| | ¡St| tƒ�rŽt| tjƒ�rŽ| | ¡St| tjƒ�rèt| tƒ�rèt| tjƒ�rè|d}| |ƒ} tt | |ƒtjƒ�sú| | g¡Snt| tjƒ�rú| St| ƒ�rH| ƒ}t|tjƒ�r|St|tjƒ�r6| |g¡Std| |fƒ‚n td| ƒ‚dS) NÚ.)NNrÚ__path__zFailed to access attribute: %séÿÿÿÿz"calling %s returned %s, not a testz$don't know how to make test from: %s)ÚsplitÚjoinÚ __import__rrFr"r r4rLrJÚAttributeErrorrrrrKÚtypesÚ ModuleTyperUr)r7rr*r>Ú FunctionTyperr8Úcallabler9)r rrNÚpartsrSrTZ parts_copyÚ module_nameZnext_attributerQÚpartÚparentrRÚinstr%rrrÚloadTestsFromNameŠs€   ÿ  ÿ ÿþ $  ÿ þ  ÿzTestLoader.loadTestsFromNamecs‡‡fdd„|Dƒ}ˆ |¡S)Ncsg|]}ˆ |ˆ¡‘qSr)rf)Ú.0r©rNr rrÚ Üsz1TestLoader.loadTestsFromNames..)r )r ÚnamesrNZsuitesrrhrÚloadTestsFromNamesØszTestLoader.loadTestsFromNamescs>‡‡fdd„}tt|tˆƒƒƒ}ˆjr:|jt ˆj¡d�|S)NcsZ| ˆj¡sdStˆ|ƒ}t|ƒs&dSdˆjˆj|f‰ˆjdkpXt‡fdd„ˆjDƒƒS)NFz%s.%s.%sc3s|]}tˆ|ƒVqdSr )r)rgr@©ZfullNamerrÚ ìszKTestLoader.getTestCaseNames..shouldIncludeMethod..)Ú startswithÚtestMethodPrefixrJr`rrÚtestNamePatternsÚany)ÚattrnameZtestFunc©r r=rlrÚshouldIncludeMethodâs  ÿ ÿz8TestLoader.getTestCaseNames..shouldIncludeMethod)Úkey)ÚlistÚfilterrIÚsortTestMethodsUsingÚsortÚ functoolsÚ cmp_to_key)r r=rtZ testFnNamesrrsrr:ßs  zTestLoader.getTestCaseNamesútest*.pyc CsJd}|dkr|jdk r|j}n|dkr.d}|}tj |¡}|tjkrRtj d|¡||_d}d}g}tj tj |¡¡r¨tj |¡}||kr¤tj tj |d¡¡ }�npz t |ƒWnt k rÎd}Y�nJXtj |}|  d¡d} ztj tj  |j¡¡}Wnâtk �räz |j} Wntk �r8d} YnX| �r¶| jdk�r¶| jdk �ràd}|jD]P} |�s||  |¡�s|�qb|   |j dtjj¡¡d|_| |j| |dd�¡�qbn*|jtjk�rÐtdƒd‚ntd |¡ƒd‚YnX|�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/r0ÚabspathÚsysÚinsertÚisdirÚisfilerZr[rÚmodulesrYÚdirnameÚ__file__r\Ú__spec__ÚloaderÚsubmodule_search_locationsrWrnrÚreplaceÚsepÚextendÚ _find_testsÚbuiltin_module_namesr9rGÚ _get_directory_containing_moduleÚremovervr ) r Ú start_dirr@Z top_level_dirZset_implicit_topZis_not_importableÚ is_namespacerPZ the_moduleZtop_partÚspecr0rrrÚdiscoveròs’       ÿ    ÿ ÿÿÿ þÿÿÿþÿ  zTestLoader.discovercCsRtj|}tj |j¡}tj |¡ ¡ d¡rBtj  tj  |¡¡Stj  |¡SdS)Nr}) r�r…r/r0r€r‡Úbasenamer-rnr†)r rbrNÚ full_pathrrrr�`s  z+TestLoader._get_directory_containing_modulecCsB||jkrdSttj |¡ƒ}tj ||j¡}| tjjd¡}|S©NrV)rr2r/r0ÚnormpathÚrelpathr‹rŒ)r r0Z_relpathrrrrÚ_get_name_from_pathls  zTestLoader._get_name_from_pathcCst|ƒtj|Sr )r[r�r…)r rrrrÚ_get_module_from_namexsz TestLoader._get_module_from_namecCs t||ƒSr )r)r r0r—r@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˜) r›r6Ú_find_test_pathrHr/Úlistdirr0rZÚaddÚdiscardrŽ) r r’r@r~rrPZshould_recurseÚpathsr0r—rrrrŽ€s6 ÿÿ  zTestLoader._find_testsc Csttj |¡}tj |¡�rVt |¡s(dS| |||¡s:dS| |¡}z| |¡}Wnht j k rŒ}zt |||j ƒdfWY¢Sd}~XYnÆt ||j ƒ\}} |j | ¡|dfYSXtj t|d|ƒ¡} ttj | ¡ƒ} ttj |¡ƒ} |  ¡|  ¡k�r@tj | ¡} ttj |¡ƒ}tj |¡}d}t||| |fƒ‚|j||d�dfS�ntj |¡�rl|�s†tj tj |d¡¡�s†dSd}d}| |¡}z| |¡}Wnjt j k �râ}zt |||j ƒdfWY¢Sd}~XYnˆt ||j ƒ\}} |j | ¡|dfYSXt|ddƒ}|j |¡z0|j||d�}|dk �rP|dfW¢S|dfW¢S|j |¡XndSdS) N)NFFr‡zW%r module incorrectly imported from %r. Expected %r. Is this module globally installed?r?r}rAT)r/r0r–r„ÚVALID_MODULE_NAMEÚmatchr�r›rœrZSkipTestr,r r"r4rLr€rJr2Úrealpathr-r†rrUrƒrZr6r r¡)r r—r@r~r–rrNrRrSrTZmod_filer¥Zfullpath_noextZ module_dirZmod_nameZ expected_dirÚmsgrArPÚpackagerrrrž¢s|   & ÿ  ÿ ÿ ÿ  ÿ  ÿÿ & ÿ      zTestLoader._find_test_path)N)N)r|N)F)F)rrrroÚ staticmethodrÚ three_way_cmprxrprr8r rr r>rUrfrkr:r•r�r›rœr�rŽržrrrrrr3Bs$  ( N  n   "r3cCs&tƒ}||_||_||_|r"||_|Sr )r3rxrorpr )ÚprefixÚ sortUsingr rpr‰rrrÚ _makeLoaderñsr¬cCst|||d� |¡S)N)rp)r¬r:)r=rªr«rprrrr:úsr:r%cCst|||ƒ |¡Sr )r¬r>)r=rªr«r rrrÚ makeSuiteýs ÿr­cCst|||ƒ |¡Sr )r¬rU)rNrªr«r rrrÚ findTestCasess ÿr®)NN)!r/Úrer�rr]rzrCrrÚrrrZ __unittestÚcompileÚ IGNORECASEr£r*rr"r#rr,r2Úobjectr3ZdefaultTestLoaderr¬r©r:r8r­r®rrrrÚs:/ ÿ ÿ