�`^c@s�dZddlZddlmZddlmZeZd�Zdefd��YZ de fd ��YZ
d
efd��YZd�Zd
efd��YZ
dS(t TestSuitei�Ni(tcase(tutilcCs t||d��}|�dS(NcSsdS(N(tNone(((s$/sys/lib/python2.7/unittest/suite.pyt<lambda>s(tgetattr(tparenttattrtfunc((s$/sys/lib/python2.7/unittest/suite.pyt_call_if_existsst
BaseTestSuitecBszeZdZdd�Zd�Zd�Zd�Zd
Zd�Z d�Z
d�Zd�Zd �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$/sys/lib/python2.7/unittest/suite.pyt__init__s cCs dtj|j�t|�fS(Ns
<%s tests=%s>(Rtstrclasst __class__tlist(R
((s$/sys/lib/python2.7/unittest/suite.pyt__repr__scCs,t||j�stSt|�t|�kS(N(t
isinstanceRtNotImplementedR(R
tother((s$/sys/lib/python2.7/unittest/suite.pyt__eq__scCs||kS(N((R
R((s$/sys/lib/python2.7/unittest/suite.pyt__ne__scCs
t|j�S(N(titerR(R
((s$/sys/lib/python2.7/unittest/suite.pyt__iter__%scCs+d}x|D]}||j�7}q
W|S(Ni(tcountTestCases(R
tcasesttest((s$/sys/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
issubclassRtTestCaseRRtappend(R
R((s$/sys/lib/python2.7/unittest/suite.pytaddTest.scCs@t|t�rtd��nx|D]}|j|�q%WdS(Ns0tests must be an iterable of tests, not a string(Rt
basestringR R'(R
RR((s$/sys/lib/python2.7/unittest/suite.pyR8s
cCs,x%|D]}|jrPn||�qW|S(N(t
shouldStop(R
tresultR((s$/sys/lib/python2.7/unittest/suite.pytrun>s
cOs|j||�S(N(R+(R
targstkwds((s$/sys/lib/python2.7/unittest/suite.pyREscCsx|D]}|j�qWdS(s7Run the tests without collecting errors in a TestResultN(tdebug(R
R((s$/sys/lib/python2.7/unittest/suite.pyR.Hs
(N(t__name__t
__module__t__doc__RRRRRt__hash__RRR'RR+RR.(((s$/sys/lib/python2.7/unittest/suite.pyR
s
cBsYeZdZed�Zd�Zd�Zd�Zd�Zd�Z d�Z
d�ZRS( 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$/sys/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$/sys/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|_tj
|�}d|}|j|||�nXWdt|d�XndS(NR<t__unittest_skip__t
setUpClasst_setupStdoutssetUpClass (%s)t_restoreStdout(RRRR5R6R4R R t ExceptionRR?R7RRt_addClassOrModuleLevelException( R
RR*t
previousClasstcurrentClassRAtet classNamet errorName((s$/sys/lib/python2.7/unittest/suite.pyR;}s4
cCs4d}t|dd�}|dk r0|j}n|S(NR<(RRR0(R
R*tpreviousModuleRF((s$/sys/lib/python2.7/unittest/suite.pyt_get_previous_module�s
c Cs
|j|�}|jj}||kr+dS|j|�t|_ytj|}Wntk
rfdSXt |dd�}|dk rt|d�z`y|�WnNtk
r�t
|t�r��nt|_d|}|j|||�nXWdt|d�XndS(NtsetUpModuleRBssetUpModule (%s)RC(RLRR0R=R6R5tsystmodulestKeyErrorRRR RDRR?R7RE( R
RR*RKt
currentModuletmoduleRMRHRJ((s$/sys/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$/sys/lib/python2.7/unittest/suite.pyRE�s
cCs�|j|�}|dkrdS|jr,dSytj|}Wntk
rQdSXt|dd�}|dk r�|d�zWy|�WnEtk
r�}t |t
�r��nd|}|j|||�nXWdt|d�XndS(NttearDownModuleRBstearDownModule (%s)RC(RLRR5RNRORPRR RDRR?RE(R
R*RKRRR[RHRJ((s$/sys/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$/sys/lib/python2.7/unittest/suite.pyR9�s.
(R/R0R1R6R+R.R;RLR:RER=R9(((s$/sys/lib/python2.7/unittest/suite.pyRNs RTcBs\eZdZd Zd�Zd�Zd�Zd�Zd�Z d�Z
d�Zd�ZRS(
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(tdescription(R
R]((s$/sys/lib/python2.7/unittest/suite.pyRscCs|jS(N(R](R
((s$/sys/lib/python2.7/unittest/suite.pytidscCsdS(N(R(R
((s$/sys/lib/python2.7/unittest/suite.pytshortDescriptionscCsd|jfS(Ns<ErrorHolder description=%r>(R](R
((s$/sys/lib/python2.7/unittest/suite.pyRscCs
|j�S(N(R^(R
((s$/sys/lib/python2.7/unittest/suite.pyt__str__scCsdS(N((R
R*((s$/sys/lib/python2.7/unittest/suite.pyR+scCs
|j|�S(N(R+(R
R*((s$/sys/lib/python2.7/unittest/suite.pyRscCsdS(Ni((R
((s$/sys/lib/python2.7/unittest/suite.pyRsN(
R/R0R1RtfailureExceptionRR^R_RR`R+RR(((s$/sys/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$/sys/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$/sys/lib/python2.7/unittest/suite.pyR?+s(R1RNtRRR7t
__unittestR tobjectR
RRTR8R?(((s$/sys/lib/python2.7/unittest/suite.pyt<module>s >�&
|