f4dZddlZddlmZddlmZdZdZGdd eZGd deZ Gd d eZ d Z GddeZ dS) TestSuiteN)case)utilTc>t||d}|dS)NcdSNr 5/opt/alt/python311/lib64/python3.11/unittest/suite.pyz!_call_if_exists.. sr )getattr)parentattrfuncs r _call_if_existsr s$ 64 . .DDFFFFFr cZeZdZdZdZddZdZdZdZdZ d Z d Z d Z d Z d ZdZdS) BaseTestSuitezNA simple test suite that doesn't provide class or module shared fixtures. Tr cLg|_d|_||dSNr)_tests_removed_testsaddTests)selftestss r __init__zBaseTestSuite.__init__s)  er c\dtj|jdt|dS)N)rstrclass __class__listrs r __repr__zBaseTestSuite.__repr__s+"&-"?"?"?"?dLLr czt||jstSt|t|kSr ) isinstancer!NotImplementedr")rothers r __eq__zBaseTestSuite.__eq__s3%00 "! !DzzT%[[((r c*t|jSr )iterrr#s r __iter__zBaseTestSuite.__iter__"sDK   r cP|j}|D]}|r||z }|Sr )rcountTestCases)rcasestests r r.zBaseTestSuite.countTestCases%s=# / /D /,,... r c@t|s/tdt|t |t r0t |tjtfrtd|j |dS)Nz{} is not callablezNTestCases and TestSuites must be instantiated before passing them to addTest()) callable TypeErrorformatreprr&type issubclassrTestCaserrappendrr0s r addTestzBaseTestSuite.addTest,s~~ E077T CCDD D dD ! ! @j26-1K'M'M @?@@ @ 4     r ct|trtd|D]}||dS)Nz0tests must be an iterable of tests, not a string)r&strr3r;)rrr0s r rzBaseTestSuite.addTests6sR eS ! ! PNOO O  D LL      r ct|D]5\}}|jrn(|||jr||6|Sr ) enumerate shouldStop_cleanup_removeTestAtIndex)rresultindexr0s r runzBaseTestSuite.run<s\$T?? / /KE4   DLLL} /''... r c |j|}t|dr"|xj|z c_d|j|<dS#t$rYdSwxYw)z2Stop holding a reference to the TestCase at index.r.N)rhasattrrr.r3)rrDr0s r rBz BaseTestSuite._removeTestAtIndexEs~ &;u%Dt-.. =##t':':'<'<<##!%DK       DD s A AAc|j|i|Sr rE)rargskwdss r __call__zBaseTestSuite.__call__Sstx&&&&r c8|D]}|dS)7Run the tests without collecting errors in a TestResultN)debugr:s r rOzBaseTestSuite.debugVs*  D JJLLLL  r N)r )__name__ __module__ __qualname____doc__rArr$r)r,r.r;rrErBrLrOr r r rrsH MMM))) !!!!!!  & & &'''r rcReZdZdZd dZdZdZdZdZ dd Z dd Z d Z d Z dS)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. Fcld}t|dddur dx|_}t|D]\}}|jrnt |rv||||||||||j|_ t|jddst|ddr|s ||n| |j r| ||r2|d|| |d|_|S)NF_testRunEnteredT_classSetupFailed_moduleSetUpFailed)rrVr?r@ _isnotsuite_tearDownPreviousClass_handleModuleFixture_handleClassSetUpr!_previousTestClassrOrArB_handleModuleTearDown)rrCrOtopLevelrDr0s r rEz TestSuite.runfsb 6,e 4 4 = =04 4F "X$T?? / /KE4  4   ++D&999))$777&&tV444,0N)DN,?GGF$8%@@ V  } /''...  +  ' 'f 5 5 5  & &v . . .%*F " r cNt}||ddS)rNTN) _DebugResultrE)rrOs r rOzTestSuite.debugs% r ct|dd}|j}||krdS|jrdSt|ddrdSd} d|_n#t$rYnwxYwt|dd}t|dd}|t |d |nt#t $rg}t|trd} d|_n#t$rYnwxYwtj |} | ||d| Yd}~nd}~wwxYw|r6|4||j D]"} | || dd| | #t |d dS#t |d wxYwdS) Nr]__unittest_skip__F setUpClassdoClassCleanups _setupStdoutTrinfo_restoreStdout) rr!rXrWr3r Exceptionr&rarr "_createClassOrModuleLevelExceptiontearDown_exceptions) rr0rC previousClass currentClassfailedrdree classNameexc_infos r r\zTestSuite._handleClassSetUps8(> !,0A4HH  ! FN 3 3 3 : GJLLLL G G G!&,77!F9= 66$ $ l ; ;I;;FAd}t|dd}||j}|S)Nr])rrQ)rrCpreviousModulerms r _get_previous_modulezTestSuite._get_previous_modules-(> * * * * * -s|~~66666t,,,,,r c|||}|dS|jrdS tj|}n#t$rYdSwxYwt |d t |dd}|Q |nE#t$r8}t|tr| ||d|Yd}~nd}~wwxYw tj nE#t$r8}t|tr| ||d|Yd}~nd}~wwxYwt |ddS#t |dwxYw)NrftearDownModuleri) rurXrxryrzrrrjr&rarkrr{)rrCrtr}rrps r r^zTestSuite._handleModuleTearDowns226::  ! F  $  F [0FF    FF  /// 6$V-=tDDN)L"N$$$$ LLL!&,77;;FACD) D.D D)DD))D;ct|dd}|j}||ks|dSt|ddrdSt|ddrdSt|ddrdSt|dd}t|dd}||dSt|d |e |nY#t$rL}t |t rt j|}|||d|Yd}~nd}~wwxYw|e||j D]S} t |t r| d t j|}||| d d|| Tt|d dS#t|d wxYw) Nr]rWFrXrc tearDownClassrerfrrgri) rr!rrjr&rarr rkrl) rr0rCrmrnrrerprqrrs r rZz TestSuite._tearDownPreviousClasss%(rs      IIIIIFIIIXi6i6i6i6i6 i6i6i6X$$$$$6$$$L6r