U e5d2ã@s|dZddlZddlmZddlmZdZdd„ZGd d „d eƒZGd d„deƒZ Gd d „d eƒZ dd„Z Gdd„deƒZ dS)Ú TestSuiteéNé)Úcase)ÚutilTcCst||dd„ƒ}|ƒdS)NcSsdS©N©rrrú&/usr/lib64/python3.8/unittest/suite.pyÚ óz!_call_if_exists..)Úgetattr)ÚparentÚattrÚfuncrrrÚ_call_if_exists src@sneZdZdZdZddd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„ZdS)Ú BaseTestSuitezNA simple test suite that doesn't provide class or module shared fixtures. TrcCsg|_d|_| |¡dS©Nr)Ú_testsÚ_removed_testsÚaddTests)ÚselfÚtestsrrrÚ__init__szBaseTestSuite.__init__cCsdt |j¡t|ƒfS)Nz <%s tests=%s>)rÚstrclassÚ __class__Úlist©rrrrÚ__repr__szBaseTestSuite.__repr__cCs t||jƒstSt|ƒt|ƒkSr)Ú isinstancerÚNotImplementedr)rÚotherrrrÚ__eq__s zBaseTestSuite.__eq__cCs t|jƒSr)ÚiterrrrrrÚ__iter__"szBaseTestSuite.__iter__cCs$|j}|D]}|r || ¡7}q |Sr)rÚcountTestCases)rZcasesÚtestrrrr#%s zBaseTestSuite.countTestCasescCsLt|ƒstd t|ƒ¡ƒ‚t|tƒr)rr3ÚpreviousModulerVrrrÚ_get_previous_module¶s  zTestSuite._get_previous_modulec Cs| |¡}|jj}||krdS| |¡d|_ztj|}Wntk rRYdSXt|ddƒ}|dk �rt |dƒz–z |ƒWn†t k �r}zfz t   ¡Wn2t k rÒ}z|  ||d|¡W5d}~XYnXt|tƒrà‚d|_|  ||d|¡W5d}~XYnXW5t |dƒXdS)NFÚ setUpModulerMrNT)r\rr>rIrCÚsysÚmodulesÚKeyErrorr rrUrÚdoModuleCleanupsrTrrJ) rr$r3r[Z currentModuleÚmoduler]rZrXrrrrF¾s>       þ þzTestSuite._handleModuleFixtureNcCs$|›d|›d�}| ||||¡dS)Nz (ú))Ú_addClassOrModuleLevelException)rr3rXZ method_namer rPÚ errorNamerrrrTász,TestSuite._createClassOrModuleLevelExceptioncCs^t|ƒ}t|ddƒ}|dk r8t|tjƒr8||t|ƒƒn"|sN| |t ¡¡n | ||¡dS)NÚaddSkip) Ú _ErrorHolderr rrZSkipTestr.ZaddErrorr^Úexc_info)rr3Z exceptionrerPÚerrorrfrrrrdæs z)TestSuite._addClassOrModuleLevelExceptioncCs| |¡}|dkrdS|jr dSztj|}Wntk rDYdSXt|ddƒ}|dk �rt|dƒzNz |ƒWn>t k r°}z t |t ƒr�‚|  ||d|¡W5d}~XYnXW5t|dƒz t ¡Wn4t k �r}z|  ||d|¡W5d}~XYnXXdS)NÚtearDownModulerMrN) r\rCr^r_r`r rrrarUrTrrJ)rr3r[rbrjrZrrrrIòs:      þ  þzTestSuite._handleModuleTearDownc Cst|ddƒ}|j}||krdSt|ddƒr.dSt|ddƒr>dSt|ddƒrNdSt|ddƒ}|dk �rt|dƒzXz |ƒWnHt k rÂ}z*t |t ƒr˜‚t |¡}| ||d|¡W5d}~XYnXW5t|dƒ| ¡t|jƒd k�r|jD]&}t |¡}|j||d d||d �qðXdS) NrHrBFrCrKÚ tearDownClassrMrNrrrO) r rrrQrRrSrrrTrUrrJ) rr$r3rVrWrkrXrYrZrrrrEsB          þ    ýz TestSuite._tearDownPreviousClass)F)N)N) r=r>r?r@r5r<rGr\rFrTrdrIrErrrrr\s !($ÿ ÿ  c@sTeZdZdZdZdd„Zdd„Zdd„Zd d „Zd d „Z d d„Z dd„Z dd„Z dS)rgz¾ Placeholder for a TestCase inside a result. As far as a TestResult is concerned, this looks exactly like a unit test. Used to insert arbitrary errors into a test suite run. NcCs ||_dSr©Ú description)rrmrrrrBsz_ErrorHolder.__init__cCs|jSrrlrrrrÚidEsz_ErrorHolder.idcCsdSrrrrrrÚshortDescriptionHsz_ErrorHolder.shortDescriptioncCs d|jfS)NzrlrrrrrKsz_ErrorHolder.__repr__cCs| ¡Sr)rnrrrrÚ__str__Nsz_ErrorHolder.__str__cCsdSrr©rr3rrrr5Qsz_ErrorHolder.runcCs | |¡Srr7rqrrrr:Vsz_ErrorHolder.__call__cCsdSrrrrrrr#Ysz_ErrorHolder.countTestCases) r=r>r?r@ZfailureExceptionrrnrorrpr5r:r#rrrrrg6s rgcCs(z t|ƒWntk r"YdSXdS)z?A crude way to tell apart testcases and suites with duck-typingTF)r!r&)r$rrrrD\s  rDc@seZdZdZdZdZdZdS)rJzCUsed by the TestSuite to hold previous class when running in debug.NF)r=r>r?r@rHrCr0rrrrrJesrJ) r@r^ÚrrZ __unittestrÚobjectrrrgrDrJrrrrÚs  L[&