U e5d2@s|dZddlZddlmZddlmZdZddZGd d d eZGd ddeZ Gd d d eZ ddZ GdddeZ dS) TestSuiteN)case)utilTcCst||dd}|dS)NcSsdSNrrr&/usr/lib64/python3.8/unittest/suite.py z!_call_if_exists..)getattr)parentattrfuncrrr_call_if_exists src@sneZdZdZdZdddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZdS) BaseTestSuitezNA simple test suite that doesn't provide class or module shared fixtures. TrcCsg|_d|_||dSNr)_tests_removed_testsaddTests)selftestsrrr__init__szBaseTestSuite.__init__cCsdt|jt|fS)Nz <%s tests=%s>)rstrclass __class__listrrrr__repr__szBaseTestSuite.__repr__cCs t||jstSt|t|kSr) isinstancerNotImplementedr)rotherrrr__eq__s zBaseTestSuite.__eq__cCs t|jSr)iterrrrrr__iter__"szBaseTestSuite.__iter__cCs$|j}|D]}|r ||7}q |Sr)rcountTestCases)rZcasestestrrrr#%s zBaseTestSuite.countTestCasescCsLt|stdt|t|tr)rr3previousModulerVrrr_get_previous_modules  zTestSuite._get_previous_modulec Cs||}|jj}||krdS||d|_ztj|}Wntk rRYdSXt|dd}|dk rt |dzz |Wnt k r}zfz t Wn2t k r}z| ||d|W5d}~XYnXt|trd|_| ||d|W5d}~XYnXW5t |dXdS)NF setUpModulerMrNT)r\rr>rIrCsysmodulesKeyErrorr rrUrdoModuleCleanupsrTrrJ) rr$r3r[Z currentModulemoduler]rZrXrrrrFs>        zTestSuite._handleModuleFixtureNcCs$|d|d}|||||dS)Nz ())_addClassOrModuleLevelException)rr3rXZ method_namer rP errorNamerrrrTsz,TestSuite._createClassOrModuleLevelExceptioncCs^t|}t|dd}|dk r8t|tjr8||t|n"|sN||tn |||dS)NaddSkip) _ErrorHolderr rrZSkipTestr.ZaddErrorr^exc_info)rr3Z exceptionrerPerrorrfrrrrds z)TestSuite._addClassOrModuleLevelExceptioncCs||}|dkrdS|jr dSztj|}Wntk rDYdSXt|dd}|dk rt|dzNz |Wn>t k r}z t |t r| ||d|W5d}~XYnXW5t|dz tWn4t k r}z| ||d|W5d}~XYnXXdS)NtearDownModulerMrN) r\rCr^r_r`r rrrarUrTrrJ)rr3r[rbrjrZrrrrIs:        zTestSuite._handleModuleTearDownc Cst|dd}|j}||krdSt|ddr.dSt|ddr>dSt|ddrNdSt|dd}|dk rt|dzXz |WnHt k r}z*t |t rt|}|||d|W5d}~XYnXW5t|d|t|jd kr|jD]&}t|}|j||d d||d qXdS) NrHrBFrCrK tearDownClassrMrNrrrO) r rrrQrRrSrrrTrUrrJ) rr$r3rVrWrkrXrYrZrrrrEsB              z TestSuite._tearDownPreviousClass)F)N)N) r=r>r?r@r5r<rGr\rFrTrdrIrErrrrr\s !($   c@sTeZdZdZdZddZddZddZd d Zd d Z d dZ ddZ ddZ 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|jSrrlrrrridEsz_ErrorHolder.idcCsdSrrrrrrshortDescriptionHsz_ErrorHolder.shortDescriptioncCs d|jfS)NzrlrrrrrKsz_ErrorHolder.__repr__cCs|Sr)rnrrrr__str__Nsz_ErrorHolder.__str__cCsdSrrrr3rrrr5Qsz_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 __unittestrobjectrrrgrDrJrrrrs  L[&