ó û^‚Rc@s¦dZddlZddlmZddlmZeZd„Zdefd„ƒYZ de fd „ƒYZ d efd „ƒYZ d „Z d efd„ƒYZ dS(t TestSuiteiÿÿÿÿNi(tcase(tutilcCs t||d„ƒ}|ƒdS(NcSsdS(N(tNone(((s$/usr/lib/python2.7/unittest/suite.pyt s(tgetattr(tparenttattrtfunc((s$/usr/lib/python2.7/unittest/suite.pyt_call_if_exists st BaseTestSuitecBszeZdZd d„Zd„Zd„Zd„Zd Zd„Z d„Z d„Z d„Z d „Z d „Zd „ZRS(sNA simple test suite that doesn't provide class or module shared fixtures. cCsg|_|j|ƒdS(N(t_teststaddTests(tselfttests((s$/usr/lib/python2.7/unittest/suite.pyt__init__s cCs dtj|jƒt|ƒfS(Ns <%s tests=%s>(Rtstrclasst __class__tlist(R ((s$/usr/lib/python2.7/unittest/suite.pyt__repr__scCs,t||jƒstSt|ƒt|ƒkS(N(t isinstanceRtNotImplementedR(R tother((s$/usr/lib/python2.7/unittest/suite.pyt__eq__scCs ||k S(N((R R((s$/usr/lib/python2.7/unittest/suite.pyt__ne__scCs t|jƒS(N(titerR (R ((s$/usr/lib/python2.7/unittest/suite.pyt__iter__%scCs+d}x|D]}||jƒ7}q W|S(Ni(tcountTestCases(R tcasesttest((s$/usr/lib/python2.7/unittest/suite.pyR(s cCswt|dƒs-tdjt|ƒƒƒ‚nt|tƒrct|tjt fƒrctdƒ‚n|j j |ƒdS(Nt__call__s{} is not callablesNTestCases and TestSuites must be instantiated before passing them to addTest()( thasattrt TypeErrortformattreprRttypet issubclassRtTestCaseRR tappend(R R((s$/usr/lib/python2.7/unittest/suite.pytaddTest.s cCs@t|tƒrtdƒ‚nx|D]}|j|ƒq%WdS(Ns0tests must be an iterable of tests, not a string(Rt basestringR R'(R RR((s$/usr/lib/python2.7/unittest/suite.pyR 8s cCs,x%|D]}|jrPn||ƒqW|S(N(t shouldStop(R tresultR((s$/usr/lib/python2.7/unittest/suite.pytrun>s   cOs|j||ŽS(N(R+(R targstkwds((s$/usr/lib/python2.7/unittest/suite.pyREscCsx|D]}|jƒqWdS(s7Run the tests without collecting errors in a TestResultN(tdebug(R R((s$/usr/lib/python2.7/unittest/suite.pyR.Hs (N(t__name__t __module__t__doc__RRRRRt__hash__RRR'R R+RR.(((s$/usr/lib/python2.7/unittest/suite.pyR s         cBsYeZdZed„Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z RS( s³A 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. cCst}t|dtƒtkr.t|_}nx°|D]¨}|jrHPnt|ƒrÀ|j||ƒ|j||ƒ|j||ƒ|j |_ t|j dtƒs5t|dtƒrÀq5qÀn|sÓ||ƒq5|j ƒq5W|r|jd|ƒ|j |ƒt|_n|S(Nt_testRunEnteredt_classSetupFailedt_moduleSetUpFailed(tFalseRtTrueR3R)t _isnotsuitet_tearDownPreviousClasst_handleModuleFixturet_handleClassSetUpRt_previousTestClassR.Rt_handleModuleTearDown(R R*R.ttopLevelR((s$/usr/lib/python2.7/unittest/suite.pyR+Xs,        cCstƒ}|j|tƒdS(s7Run the tests without collecting errors in a TestResultN(t _DebugResultR+R7(R R.((s$/usr/lib/python2.7/unittest/suite.pyR.vs c Cs!t|ddƒ}|j}||kr+dS|jr8dSt|dtƒrNdSy t|_Wntk rnnXt|ddƒ}|dk rt|dƒzoy |ƒWn]tk r}t |t ƒrÏ‚nt |_t j |ƒ}d|}|j|||ƒnXWdt|dƒXndS(NR<t__unittest_skip__t setUpClasst _setupStdoutssetUpClass (%s)t_restoreStdout(RRRR5R6R4R R t ExceptionRR?R7RRt_addClassOrModuleLevelException( R RR*t previousClasst currentClassRAtet classNamet errorName((s$/usr/lib/python2.7/unittest/suite.pyR;}s4          cCs4d}t|ddƒ}|dk r0|j}n|S(NR<(RRR0(R R*tpreviousModuleRF((s$/usr/lib/python2.7/unittest/suite.pyt_get_previous_modules   c Cs |j|ƒ}|jj}||kr+dS|j|ƒt|_ytj|}Wntk rfdSXt |ddƒ}|dk rt |dƒz`y |ƒWnNt k rð}t |tƒrÇ‚nt|_d|}|j|||ƒnXWdt |dƒXndS(Nt setUpModuleRBssetUpModule (%s)RC(RLRR0R=R6R5tsystmodulestKeyErrorRRR RDRR?R7RE( R RR*RKt currentModuletmoduleRMRHRJ((s$/usr/lib/python2.7/unittest/suite.pyR:¥s.          cCslt|ƒ}t|ddƒ}|dk rRt|tjƒrR||t|ƒƒn|j|tj ƒƒdS(NtaddSkip( t _ErrorHolderRRRRtSkipTesttstrtaddErrorRNtexc_info(R R*t exceptionRJterrorRS((s$/usr/lib/python2.7/unittest/suite.pyREÀs  cCsì|j|ƒ}|dkrdS|jr,dSytj|}Wntk rQdSXt|ddƒ}|dk rèt|dƒzWy |ƒWnEtk rÒ}t |t ƒr²‚nd|}|j |||ƒnXWdt|dƒXndS(NttearDownModuleRBstearDownModule (%s)RC( RLRR5RNRORPRR RDRR?RE(R R*RKRRR[RHRJ((s$/usr/lib/python2.7/unittest/suite.pyR=Ès*       c Cst|ddƒ}|j}||kr+dSt|dtƒrAdSt|dtƒrWdSt|dtƒrmdSt|ddƒ}|dk rt|dƒzfy |ƒWnTtk rü}t|tƒrÍ‚ntj |ƒ}d|}|j |||ƒnXWdt|dƒXndS( NR<R4R5R@t tearDownClassRBstearDownClass (%s)RC( RRRR6R RDRR?RRRE( R RR*RFRGR\RHRIRJ((s$/usr/lib/python2.7/unittest/suite.pyR9ás.      ( R/R0R1R6R+R.R;RLR:RER=R9(((s$/usr/lib/python2.7/unittest/suite.pyRNs      RTcBs\eZdZd Zd„Zd„Zd„Zd„Zd„Z d„Z d„Z d„Z RS( s¾ 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. cCs ||_dS(N(t description(R R]((s$/usr/lib/python2.7/unittest/suite.pyRscCs|jS(N(R](R ((s$/usr/lib/python2.7/unittest/suite.pytid scCsdS(N(R(R ((s$/usr/lib/python2.7/unittest/suite.pytshortDescriptionscCsd|jfS(Ns(R](R ((s$/usr/lib/python2.7/unittest/suite.pyRscCs |jƒS(N(R^(R ((s$/usr/lib/python2.7/unittest/suite.pyt__str__scCsdS(N((R R*((s$/usr/lib/python2.7/unittest/suite.pyR+scCs |j|ƒS(N(R+(R R*((s$/usr/lib/python2.7/unittest/suite.pyRscCsdS(Ni((R ((s$/usr/lib/python2.7/unittest/suite.pyRsN( R/R0R1RtfailureExceptionRR^R_RR`R+RR(((s$/usr/lib/python2.7/unittest/suite.pyRTüs       cCs'yt|ƒWntk r"tSXtS(s?A crude way to tell apart testcases and suites with duck-typing(RR R7R6(R((s$/usr/lib/python2.7/unittest/suite.pyR8"s  R?cBs eZdZdZeZeZRS(sCUsed by the TestSuite to hold previous class when running in debug.N(R/R0R1RR<R6R5R)(((s$/usr/lib/python2.7/unittest/suite.pyR?+s(R1RNtRRR7t __unittestR tobjectR RRTR8R?(((s$/usr/lib/python2.7/unittest/suite.pyts  >®&