a DOg4@s|dZddlZddlmZddlmZdZddZGd d d eZGd ddeZ Gd d d eZ ddZ GdddeZ dS) TestSuiteN)case)utilTcCst||dd}|dS)NcSsdSNrrr3/opt/alt/python39/lib64/python3.9/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|j|7_d|j|<dS)z2Stop holding a reference to the TestCase at index.r#N)rr&hasattrrr#)rr4r$rrrr2Es  z BaseTestSuite._removeTestAtIndexcOs|j|i|Srr5)rargskwdsrrr__call__SszBaseTestSuite.__call__cCs|D] }|qdS)7Run the tests without collecting errors in a TestResultN)debugr,rrrr<VszBaseTestSuite.debugN)r)__name__ __module__ __qualname____doc__r1rrr r"r#r-rr5r2r:r<rrrrrs   rc@s^eZdZdZdddZddZddZd d Zd d ZdddZ dddZ ddZ ddZ d S)raA test suite is a composite test consisting of a number of TestCases. For use, create an instance of TestSuite, then add test case instances. When all tests have been added, the suite can be passed to a test runner, such as TextTestRunner. It will run the individual test cases in the order in which they were added, aggregating the results. When subclassing, do not forget to call the base class constructor. FcCsd}t|dddurd|_}t|D]\}}|jr8qt|r||||||||||j|_ t|jdds&t|ddrq&|s||n| |j r&| |q&|r|d|| |d|_|S)NF_testRunEnteredT_classSetupFailed_moduleSetUpFailed)r rAr/r0 _isnotsuite_tearDownPreviousClass_handleModuleFixture_handleClassSetUpr_previousTestClassr<r1r2_handleModuleTearDown)rr3r<ZtopLevelr4r$rrrr5fs2         z TestSuite.runcCst}||ddS)r;TN) _DebugResultr5)rr<rrrr<szTestSuite.debugc CsZt|dd}|j}||krdS|jr(dSt|ddr8dSd}z d|_WntyXYn0t|dd}t|dd}|durVt|dzz |Wnlty}zTt|trd}z d|_WntyYn0t |} | ||d| WYd}~n d}~00|r<|dur<||j D]} |j || dd| | d qWt|d n t|d 0dS) NrH__unittest_skip__F setUpClassdoClassCleanups _setupStdoutTrinfo_restoreStdout) r rrCrBr&r ExceptionrrJrr"_createClassOrModuleLevelExceptiontearDown_exceptions) rr$r3 previousClass currentClassZfailedrLrMe classNameexc_inforrrrGsR                zTestSuite._handleClassSetUpcCs"d}t|dd}|dur|j}|S)NrH)r r>)rr3previousModulerUrrr_get_previous_modules  zTestSuite._get_previous_modulec Cs0||}|jj}||krdS||d|_ztj|}WntyPYdS0t|dd}|dur,t |dzz |WnFt y}z.t |t rd|_| ||d|WYd}~n d}~00|jrz tWn6t y}z| ||d|WYd}~n d}~00Wt |dn t |d0dS)NF setUpModulerNTrQ)r[rr>rIrCsysmodulesKeyErrorr rrRrrJrSrdoModuleCleanups)rr$r3rZZ currentModulemoduler\rWrrrrFsB         zTestSuite._handleModuleFixtureNcCs$|d|d}|||||dS)Nz ())_addClassOrModuleLevelException)rr3excZ method_namer rP errorNamerrrrSsz,TestSuite._createClassOrModuleLevelExceptioncCs^t|}t|dd}|dur8t|tjr8||t|n"|sN||tn |||dS)NaddSkip) _ErrorHolderr rrZSkipTestr.ZaddErrorr]rY)rr3Z exceptionrerPerrorrfrrrrcs z)TestSuite._addClassOrModuleLevelExceptionc Cs||}|durdS|jr dSztj|}WntyBYdS0t|dzt|dd}|durz |Wn@ty}z(t|t r| ||d|WYd}~n d}~00z t WnBty}z(t|t rڂ| ||d|WYd}~n d}~00Wt|dn t|d0dS)NrNtearDownModulerQ) r[rCr]r^r_rr rRrrJrSrr`)rr3rZrarirWrrrrIs@        zTestSuite._handleModuleTearDownc Cs^t|dd}|j}||ks"|dur&dSt|ddr6dSt|ddrFdSt|ddrVdSt|dd}t|dd}|dur|durdSt|dz|durz |WnJty}z2t|trt|}|||d|WYd}~n d}~00|dur@||j D]<} t|tr| d t|}|j|| d d|| d qWt|d n t|d 0dS) NrHrBFrCrK tearDownClassrMrNrrOrQ) r rrrRrrJrrrSrT) rr$r3rUrVrjrMrWrXrYrrrrEsN                z TestSuite._tearDownPreviousClass)F)N)N) r=r>r?r@r5r<rGr[rFrSrcrIrErrrrr\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)rrlrrrrTsz_ErrorHolder.__init__cCs|jSrrkrrrridWsz_ErrorHolder.idcCsdSrrrrrrshortDescriptionZsz_ErrorHolder.shortDescriptioncCs d|jfS)Nzrkrrrrr]sz_ErrorHolder.__repr__cCs|Sr)rmrrrr__str__`sz_ErrorHolder.__str__cCsdSrrrr3rrrr5csz_ErrorHolder.runcCs ||Srr7rprrrr:hsz_ErrorHolder.__call__cCsdSrrrrrrr#ksz_ErrorHolder.countTestCases) r=r>r?r@ZfailureExceptionrrmrnrror5r:r#rrrrrgHs rgcCs&z t|Wnty YdS0dS)z?A crude way to tell apart testcases and suites with duck-typingTF)r!r&)r$rrrrDns   rDc@seZdZdZdZdZdZdS)rJzCUsed by the TestSuite to hold previous class when running in debug.NF)r=r>r?r@rHrCr0rrrrrJwsrJ) r@r]rrZ __unittestrobjectrrrgrDrJrrrrs  Lm&