3 öLÖjœàã@sªddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl mZmZmZmZmZdZeƒZdZGdd„deƒZGd d „d eƒZGd d „d eƒZGd d„deƒZdd„Zdd„Zdd„Zdd„Zdd„Z dd„Z!Gdd„dƒZ"dd„Z#Gdd „d e"ƒZ$Gd!d"„d"e$ƒZ%Gd#d$„d$e$ƒZ&ej'd%d&d'gƒZ(Gd(d)„d)ej)ƒZ*Gd*d+„d+e"ƒZ+Gd,d-„d-eƒZ,Gd.d/„d/e,ƒZ-Gd0d1„d1e,ƒZ.dS)2éNé)Úresult)ÚstrclassÚ safe_reprÚ_count_diff_all_purposeÚ_count_diff_hashableÚ_common_shorten_reprTz@ Diff is %s characters long. Set self.maxDiff to None to see it.c@s eZdZdS)ÚSkipTestN)Ú__name__Ú __module__Ú __qualname__©r r ú%/usr/lib64/python3.6/unittest/case.pyr sr c@s eZdZdS)Ú _ShouldStopN)r r r r r r rr"src@s eZdZdS)Ú_UnexpectedSuccessN)r r r r r r rr'src@s&eZdZddd„Zejddd„ƒZdS) Ú_OutcomeNcCs4d|_||_t|dƒ|_d|_g|_d|_g|_dS)NFÚ addSubTestT)Úexpecting_failurerÚhasattrÚresult_supports_subtestsÚsuccessÚskippedÚexpectedFailureÚerrors)Úselfrr r rÚ__init__.s z_Outcome.__init__Fccsè|j}d|_zÈy dVWnœtk r.‚Yn¤tk rh}z d|_|jj|t|ƒfƒWYdd}~Xnjtk rzYnXtjƒ}|j r–||_ nd|_|j j||fƒd}YnX|j rÒ|jrÒ|j j|dfƒWd|joÞ||_XdS)NTF) rÚKeyboardInterruptr rÚappendÚstrrÚsysÚexc_inforrrr)rÚ test_caseÚisTestZ old_successÚer r r rÚtestPartExecutor7s* $  z_Outcome.testPartExecutor)N)F)r r r rÚ contextlibÚcontextmanagerr$r r r rr-s rcCs|S)Nr )Úobjr r rÚ_idUsr(cs‡fdd„}|S)Ncs4t|tƒs$tj|ƒ‡fdd„ƒ}|}d|_ˆ|_|S)Ncs tˆƒ‚dS)N)r )ÚargsÚkwargs)Úreasonr rÚ skip_wrapper^sz-skip..decorator..skip_wrapperT)Ú isinstanceÚtypeÚ functoolsÚwrapsÚ__unittest_skip__Ú__unittest_skip_why__)Ú test_itemr,)r+r rÚ decorator\s  zskip..decoratorr )r+r4r )r+rÚskipXs r5cCs|r t|ƒStS)N)r5r()Ú conditionr+r r rÚskipIfhsr7cCs|s t|ƒStS)N)r5r()r6r+r r rÚ skipUnlesspsr8cCs d|_|S)NT)Ú__unittest_expecting_failure__)r3r r rrxsrcs4t|tƒr t‡fdd„|DƒƒSt|tƒo2t|ˆƒS)Nc3s|]}t|ˆƒVqdS)N)Ú _is_subtype)Ú.0r#)Úbasetyper rú ~sz_is_subtype..)r-ÚtupleÚallr.Ú issubclass)Úexpectedr<r )r<rr:|s r:c@seZdZdd„Zdd„ZdS)Ú_BaseTestCaseContextcCs ||_dS)N)r!)rr!r r rrƒsz_BaseTestCaseContext.__init__cCs |jj|j|ƒ}|jj|ƒ‚dS)N)r!Ú_formatMessageÚmsgÚfailureException)rÚ standardMsgrDr r rÚ _raiseFailure†sz"_BaseTestCaseContext._raiseFailureN)r r r rrGr r r rrB�srBcCsdtjkrt|ƒStSdS)NZWITHIN_PYTHON_RPM_BUILD)ÚosÚenvironr5r()r+r r rÚ_skipInRpmBuild�s rJc@seZdZddd„Zdd„ZdS)Ú_AssertRaisesBaseContextNcCs@tj||ƒ||_||_|dk r*tj|ƒ}||_d|_d|_dS)N) rBrrAr!ÚreÚcompileÚexpected_regexÚobj_namerD)rrAr!rNr r rrœs  z!_AssertRaisesBaseContext.__init__cCsÔzÈt|j|jƒs"td||jfƒ‚|rD|ddkrDtjdtdƒf}|sx|jddƒ|_ |rttjdt t |ƒƒtdƒ|S|^}}y |j |_ Wntk rªt|ƒ|_ YnX|�|||ŽWdQRXWdd}XdS)Nz%s() arg 1 must be %srzcallable is NoneérDz3%r is an invalid keyword argument for this function)r:rAÚ _base_typeÚ TypeErrorÚ_base_type_strÚwarningsÚwarnÚDeprecationWarningÚpoprDÚnextÚiterr rOÚAttributeErrorr)rÚnamer)r*Z callable_objr r rÚhandle¦s.  z_AssertRaisesBaseContext.handle)N)r r r rr\r r r rrKšs rKc@s$eZdZeZdZdd„Zdd„ZdS)Ú_AssertRaisesContextz-an exception type or tuple of exception typescCs|S)Nr )rr r rÚ __enter__Ïsz_AssertRaisesContext.__enter__c CsÆ|dkrby |jj}Wntk r2t|jƒ}YnX|jrP|jdj||jƒƒql|jdj|ƒƒn tj|ƒt ||jƒs|dS|j dƒ|_ |j dkr–dS|j }|j t|ƒƒsÂ|jdj|jt|ƒƒƒdS)Nz{} not raised by {}z {} not raisedFTz"{}" does not match "{}")rAr rZrrOrGÚformatÚ tracebackÚ clear_framesr@Úwith_tracebackZ exceptionrNÚsearchÚpattern)rÚexc_typeÚ exc_valueÚtbÚexc_namerNr r rÚ__exit__Òs(       z_AssertRaisesContext.__exit__N)r r r Ú BaseExceptionrQrSr^rir r r rr]Ésr]c@s$eZdZeZdZdd„Zdd„ZdS)Ú_AssertWarnsContextz(a warning type or tuple of warning typescCsRx$tjjƒD]}t|ddƒr i|_q Wtjdd�|_|jjƒ|_tj d|j ƒ|S)NÚ__warningregistry__T)ÚrecordÚalways) rÚmodulesÚvaluesÚgetattrrlrTÚcatch_warningsÚwarnings_managerr^Ú simplefilterrA)rÚvr r rr^ôs   z_AssertWarnsContext.__enter__c Cs|jj|||ƒ|dk rdSy |jj}Wntk rFt|jƒ}YnXd}xd|jD]Z}|j}t||jƒslqT|dkrx|}|j dk r–|j j t|ƒƒ r–qT||_ |j |_ |j |_ dSW|dk rÔ|jdj|j jt|ƒƒƒ|jrð|jdj||jƒƒn|jdj|ƒƒdS)Nz"{}" does not match "{}"z{} not triggered by {}z{} not triggered)rsrirAr rZrrTÚmessager-rNrcZwarningÚfilenameÚlinenorGr_rdrO)rrerfrgrhZfirst_matchingÚmÚwr r rriÿs8      z_AssertWarnsContext.__exit__N)r r r ÚWarningrQrSr^rir r r rrkîs rkÚ_LoggingWatcherÚrecordsÚoutputc@s$eZdZdd„Zdd„Zdd„ZdS)Ú_CapturingHandlercCstjj|ƒtggƒ|_dS)N)ÚloggingÚHandlerrr|Úwatcher)rr r rr,s z_CapturingHandler.__init__cCsdS)Nr )rr r rÚflush0sz_CapturingHandler.flushcCs*|jjj|ƒ|j|ƒ}|jjj|ƒdS)N)r‚r}rr_r~)rrmrDr r rÚemit3s z_CapturingHandler.emitN)r r r rrƒr„r r r rr'src@s(eZdZdZdd„Zdd„Zdd„ZdS) Ú_AssertLogsContextz"%(levelname)s:%(name)s:%(message)scCs:tj||ƒ||_|r(tjj||ƒ|_ntj|_d|_dS)N) rBrÚ logger_namer€Z _nameToLevelÚgetÚlevelÚINFOrD)rr!r†rˆr r rr?s  z_AssertLogsContext.__init__cCs’t|jtjƒr|j}|_ntj|jƒ}|_tj|jƒ}tƒ}|j |ƒ|j |_ |j dd…|_ |j |_|j|_|g|_ |j|j ƒd|_|j S)NF)r-r†r€ZLoggerÚloggerZ getLoggerZ FormatterÚLOGGING_FORMATrZ setFormatterr‚ÚhandlersÚ old_handlersrˆÚ old_levelÚ propagateÚ old_propagateÚsetLevel)rrŠZ formatterZhandlerr r rr^Hs   z_AssertLogsContext.__enter__cCs`|j|j_|j|j_|jj|jƒ|dk r.dSt|jj ƒdkr\|j dj t j |jƒ|jjƒƒdS)NFrz-no logs of level {} or higher triggered on {})r�rŠrŒr�r�r‘rŽÚlenr‚r}rGr_r€Z getLevelNamerˆr[)rrerfrgr r rriYs  z_AssertLogsContext.__exit__N)r r r r‹rr^rir r r rr…:s r…c@sØeZdZeZdZd‰ZdŠZdZd‹dd „Z d d „Z d d „Z dd„Z dd„Z edd„ƒZedd„ƒZdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zejefd(d)„ƒZd*d+„Zd,d-„Zd.d/„Z dŒd1d2„Z!d3d4„Z"d5d6„Z#d7d8„Z$d9d:„Z%d�d;d<„Z&dŽd=d>„Z'd�d?d@„Z(dAdB„Z)dCdD„Z*dEdF„Z+d�dGdH„Z,dIdJ„Z-d‘dKdL„Z.d’dMdN„Z/d“dOdP„Z0d”dQdR„Z1d•dSdT„Z2d–dUdV„Z3dWdX„Z4d—dYdZ„Z5d˜d[d\„Z6d™d]d^„Z7dšd_d`„Z8d›dadb„Z9dœdcdd„Z:d�dedf„Z;dždgdh„Zd¡dmdn„Z?d¢dodp„Z@d£dqdr„ZAd¤dsdt„ZBd¥dudv„ZCd¦dwdx„ZDd§dydz„ZEd¨d{d|„ZFd©d}d~„ZGdd€„ZHd�d‚„ZIdªdƒd„„ZJd«d…d†„ZKd‡dˆ„ZLeLe/ƒZMZNeLe0ƒZOZPeLe1ƒZQZReLe2ƒZSZTeLe(ƒZUZVeLe*ƒZWeLe'ƒZXeLeHƒZYeLeJƒZZeLeKƒZ[d0S)¬ÚTestCaseTéPéééFÚrunTestc Cs¶||_d|_d|_yt||ƒ}Wn.tk rN|dkrJtd|j|fƒ‚Yn X|j|_g|_d|_ i|_ |j t dƒ|j t dƒ|j tdƒ|j tdƒ|j tdƒ|j tdƒdS) NzNo testr˜zno such test method in %s: %sÚassertDictEqualÚassertListEqualÚassertTupleEqualÚassertSetEqualÚassertMultiLineEqual)Ú_testMethodNameÚ_outcomeÚ_testMethodDocrqrZÚ ValueErrorÚ __class__Ú__doc__Ú _cleanupsÚ_subtestÚ_type_equality_funcsÚaddTypeEqualityFuncÚdictÚlistr>ÚsetÚ frozensetr)rZ methodNameÚ testMethodr r rr•s&     zTestCase.__init__cCs||j|<dS)N)r¦)rZtypeobjÚfunctionr r rr§µs zTestCase.addTypeEqualityFunccOs|jj|||fƒdS)N)r¤r)rr­r)r*r r rÚ addCleanupÄszTestCase.addCleanupcCsdS)Nr )rr r rÚsetUpÌszTestCase.setUpcCsdS)Nr )rr r rÚtearDownÐszTestCase.tearDowncCsdS)Nr )Úclsr r rÚ setUpClassÔszTestCase.setUpClasscCsdS)Nr )r±r r rÚ tearDownClassØszTestCase.tearDownClasscCsdS)Nrr )rr r rÚcountTestCasesÜszTestCase.countTestCasescCstjƒS)N)rZ TestResult)rr r rÚdefaultTestResultßszTestCase.defaultTestResultcCs |j}|r|jdƒdjƒpdS)NÚ r)r ÚsplitÚstrip)rÚdocr r rÚshortDescriptionâszTestCase.shortDescriptioncCsdt|jƒ|jfS)Nz%s.%s)rr¢rž)rr r rÚidísz TestCase.idcCs t|ƒt|ƒk rtS|j|jkS)N)r.ÚNotImplementedrž)rÚotherr r rÚ__eq__ðszTestCase.__eq__cCstt|ƒ|jfƒS)N)Úhashr.rž)rr r rÚ__hash__öszTestCase.__hash__cCsd|jt|jƒfS)Nz%s (%s))ržrr¢)rr r rÚ__str__ùszTestCase.__str__cCsdt|jƒ|jfS)Nz<%s testMethod=%s>)rr¢rž)rr r rÚ__repr__üszTestCase.__repr__cCs<t|ddƒ}|dk r |||ƒntjdtdƒ|j|ƒdS)NÚaddSkipz4TestResult has no addSkip method, skips not reportedr–)rqrTrUÚRuntimeWarningÚ addSuccess)rrr!r+rÃr r rÚ_addSkips   zTestCase._addSkipcks¸|jdks|jj rdVdS|j}|dkr8tj|ƒ}n |jj|ƒ}t|||ƒ|_zX|jj|jdd�� dVWdQRX|jj sœ|jj }|dk r¨|j r¨t ‚n |jj r¨t ‚Wd||_XdS)NT)r")rŸrr¥Ú collectionsÚChainMapÚparamsÚ new_childÚ_SubTestr$rrZfailfastrr)rrDrÉÚparentZ params_maprr r rÚsubTest s$  zTestCase.subTestcCsdx^|D]V\}}t|tƒr*|j|j||ƒq|dk rt|d|jƒrP|j||ƒq|j||ƒqWdS)Nr)r-rËrr!r@rEÚ addFailureZaddError)rrrÚtestr r r rÚ_feedErrorsToResult(s zTestCase._feedErrorsToResultc CsDy |j}Wn*tk r4tjdtƒ|j|ƒYn X|||ƒdS)Nz@TestResult has no addExpectedFailure method, reporting as passes)ÚaddExpectedFailurerZrTrUrÄrÅ)rrr rÑr r rÚ_addExpectedFailure2s zTestCase._addExpectedFailurecCshy |j}WnPtk rZtjdtƒy td‚Wn$tk rT|j|tjƒƒYnXYn X||ƒdS)NzCTestResult has no addUnexpectedSuccess method, reporting as failure) ÚaddUnexpectedSuccessrZrTrUrÄrrÎrr )rrrÓr r rÚ_addUnexpectedSuccess<s  zTestCase._addUnexpectedSuccessNc (Cs|}|dkr.|jƒ}t|ddƒ}|dk r.|ƒ|j|ƒt||jƒ}t|jddƒs^t|ddƒrœz,t|jddƒpxt|ddƒ}|j|||ƒWd|j|ƒXdSt|ddƒ}t|ddƒ}|pº|}t|ƒ} zð| |_| j |ƒ�|j ƒWdQRX| j �r<|| _ | j |dd�� |ƒWdQRXd| _ | j |ƒ�|j ƒWdQRX|jƒx"| jD]\} } |j|| | ƒ�qLW|j|| jƒ| j �r²|�r¨| j�rœ|j|| jƒn |j|ƒn |j|ƒ|S|j|ƒ|dk�ræt|d dƒ} | dk �ræ| ƒ| jjƒd| _d|_XdS) NÚ startTestRunr1Fr2Úr9T)r"Ú stopTestRun)rµrqZ startTestržr¢rÆZstopTestrrŸr$r¯rrr°Ú doCleanupsrrÐrrrÒrÔrÅÚclear) rrZ orig_resultrÕr¬Zskip_whyZexpecting_failure_methodZexpecting_failure_classrÚoutcomerÏr+r×r r rÚrunKsh               z TestCase.runc CsN|jp tƒ}x:|jrF|jjƒ\}}}|j|ƒ�|||ŽWdQRXqW|jS)N)rŸrr¤rWr$r)rrÚr­r)r*r r rrØ�s   zTestCase.doCleanupscOs |j||ŽS)N)rÛ)rr)Úkwdsr r rÚ__call__�szTestCase.__call__cCsJ|jƒt||jƒƒ|jƒx&|jrD|jjdƒ\}}}|||Žq WdS)Nréÿÿÿÿ)r¯rqržr°r¤rW)rr­r)r*r r rÚdebug s zTestCase.debugcCs t|ƒ‚dS)N)r )rr+r r rÚskipTest©szTestCase.skipTestcCs|j|ƒ‚dS)N)rE)rrDr r rÚfail­sz TestCase.failcCs&|r"|j|dt|ƒƒ}|j|ƒ‚dS)Nz%s is not false)rCrrE)rÚexprrDr r rÚ assertFalse±szTestCase.assertFalsecCs&|s"|j|dt|ƒƒ}|j|ƒ‚dS)Nz%s is not true)rCrrE)rrârDr r rÚ assertTrue·szTestCase.assertTruec CsP|js|p |S|dkr|Sy d||fStk rJdt|ƒt|ƒfSXdS)Nz%s : %s)Ú longMessageÚUnicodeDecodeErrorr)rrDrFr r rrC½s  zTestCase._formatMessagec Os$t||ƒ}z|jd||ƒSd}XdS)NÚ assertRaises)r]r\)rÚexpected_exceptionr)r*Úcontextr r rrçÒs zTestCase.assertRaisescOst||ƒ}|jd||ƒS)NÚ assertWarns)rkr\)rÚexpected_warningr)r*rér r rrêós zTestCase.assertWarnscCs t|||ƒS)N)r…)rrŠrˆr r rÚ assertLogsszTestCase.assertLogscCsFt|ƒt|ƒkr@|jjt|ƒƒ}|dk r@t|tƒrt||ƒ|kr>dSdt|ƒt|ƒt|ƒf}nF|dkrfd}||k rŠtt||ƒ|ƒdkrŠdSdt|ƒt|ƒ|f}|j||ƒ}|j|ƒ‚dS)Nz specify delta or places not bothz%s == %s within %s deltarórz%s == %s within %r places)rRrôrrõrCrE)rrîrïrörDr÷rFr r rÚassertNotAlmostEqual�s"   zTestCase.assertNotAlmostEqualc'Csì|dk rP|j}t||ƒs.|jd|t|ƒfƒ‚t||ƒsT|jd|t|ƒfƒ‚nd}d}y t|ƒ}Wn ttfk r„d|}YnX|dkr¼y t|ƒ}Wn ttfk rºd|}YnX|dk�r˜||krÒdSd|jƒft||ƒ}xÚt t ||ƒƒD]ž} y || } Wn.tt tfk �r8|d| |f7}PYnXy || } Wn.tt tfk �rt|d| |f7}PYnX| | krú|d | ft| | ƒ7}PqúW||k�rÆ|dk�rÆt |ƒt |ƒk�rÆdS||k�r0|d |||f7}y|d |t||ƒf7}Wn,tt tfk �r,|d ||f7}YnXnh||k�r˜|d |||f7}y|d |t||ƒf7}Wn,tt tfk �r–|d||f7}YnX|} ddj tjtj|ƒjƒtj|ƒjƒƒƒ} |j| | ƒ} |j|| ƒ}|j|ƒdS)NzFirst sequence is not a %s: %szSecond sequence is not a %s: %sZsequencez(First %s has no length. Non-sequence?z)Second %s has no length. Non-sequence?z%ss differ: %s != %s z( Unable to index element %d of first %s z) Unable to index element %d of second %s z# First differing element %d: %s %s z+ First %s contains %d additional elements. zFirst extra element %d: %s z'Unable to index element %d of first %s z, Second %s contains %d additional elements. z(Unable to index element %d of second %s r¶)r r-rErr’rRÚNotImplementedErrorÚ capitalizerÚrangeÚminÚ IndexErrorr.ÚjoinÚdifflibÚndiffÚpprintÚpformatÚ splitlinesÚ_truncateMessagerCrá)rZseq1Zseq2rDÚseq_typeZ seq_type_nameZ differingZlen1Zlen2ÚiZitem1Zitem2rFÚdiffMsgr r rÚassertSequenceEqual¢s�               zTestCase.assertSequenceEqualcCs2|j}|dkst|ƒ|kr"||S|tt|ƒS)N)ÚmaxDiffr’Ú DIFF_OMITTED)rrvÚdiffZmax_diffr r rrszTestCase._truncateMessagecCs|j|||td�dS)N)r)r r©)rZlist1Zlist2rDr r rrš s zTestCase.assertListEqualcCs|j|||td�dS)N)r)r r>)rZtuple1Ztuple2rDr r rr›s zTestCase.assertTupleEqualc Cshy|j|ƒ}Wn^tk r>}z|jd|ƒWYdd}~Xn0tk rl}z|jd|ƒWYdd}~XnXy|j|ƒ}Wn^tk r¬}z|jd|ƒWYdd}~Xn0tk rÚ}z|jd|ƒWYdd}~XnX|pâ|sèdSg}|�r|jdƒx|D]}|jt|ƒƒ�qW|�rH|jdƒx|D]}|jt|ƒƒ�q0Wdj|ƒ} |j|j|| ƒƒdS)Nz/invalid type when attempting set difference: %sz2first argument does not support set difference: %sz3second argument does not support set difference: %sz*Items in the first set but not the second:z*Items in the second set but not the first:r¶)Ú differencerRrárZrÚreprrÿrC) rZset1Zset2rDZ difference1r#Z difference2ÚlinesÚitemrFr r rrœ"s2        zTestCase.assertSetEqualcCs2||kr.dt|ƒt|ƒf}|j|j||ƒƒdS)Nz%s not found in %s)rrárC)rÚmemberÚ containerrDrFr r rÚassertInMs zTestCase.assertIncCs2||kr.dt|ƒt|ƒf}|j|j||ƒƒdS)Nz%s unexpectedly found in %s)rrárC)rrrrDrFr r rÚ assertNotInTs zTestCase.assertNotIncCs2||k r.dt|ƒt|ƒf}|j|j||ƒƒdS)Nz %s is not %s)rrárC)rÚexpr1Úexpr2rDrFr r rÚassertIs[s zTestCase.assertIscCs,||kr(dt|ƒf}|j|j||ƒƒdS)Nzunexpectedly identical: %s)rrárC)rrrrDrFr r rÚ assertIsNotbszTestCase.assertIsNotcCs~|j|tdƒ|j|tdƒ||krzdt||ƒ}ddjtjtj|ƒjƒtj|ƒjƒƒƒ}|j ||ƒ}|j |j ||ƒƒdS)Nz"First argument is not a dictionaryz#Second argument is not a dictionaryz%s != %sr¶) ÚassertIsInstancer¨rrÿrrrrrrrárC)rZd1Zd2rDrFr r r rr™hs   zTestCase.assertDictEqualc CsÒtjdtƒg}g}xX|jƒD]L\}}||kr:|j|ƒq|||kr|jdt|ƒt|ƒt||ƒfƒqW|pt|szdSd}|ršddjdd„|Dƒƒ}|r¼|rª|d7}|d dj|ƒ7}|j|j||ƒƒdS) Nz&assertDictContainsSubset is deprecatedz%s, expected: %s, actual: %srÖz Missing: %sú,css|]}t|ƒVqdS)N)r)r;ryr r rr=‡sz4TestCase.assertDictContainsSubset..z; zMismatched values: %s) rTrUrVÚitemsrrrÿrárC) rZsubsetZ dictionaryrDZmissingZ mismatchedÚkeyÚvaluerFr r rÚassertDictContainsSubsetts,     z!TestCase.assertDictContainsSubsetc Cs¦t|ƒt|ƒ}}ytj|ƒ}tj|ƒ}Wntk rHt||ƒ}YnX||krVdSt||ƒ}|r¢d}dd„|Dƒ}dj|ƒ} |j|| ƒ}|j||ƒ}|j |ƒdS)NzElement counts were not equal: cSsg|] }d|‘qS)z First has %d, Second has %d: %rr )r;r r r rú ¬sz-TestCase.assertCountEqual..r¶) r©rÇÚCounterrRrrrÿrrCrá) rrîrïrDZ first_seqZ second_seqZ differencesrFrrr r rÚassertCountEqual‘s      zTestCase.assertCountEqualcCsÚ|j|tdƒ|j|tdƒ||krÖt|ƒ|jks@t|ƒ|jkrN|j|||ƒ|jdd�}|jdd�}t|ƒdkr”|jdƒ|kr”|dg}|dg}dt||ƒ}dd jt j ||ƒƒ}|j ||ƒ}|j |j ||ƒƒdS) NzFirst argument is not a stringzSecond argument is not a stringT)Úkeependsrz r¶z%s != %srÖ)rrr’Ú_diffThresholdrírr¸rrÿrrrrárC)rrîrïrDZ firstlinesZ secondlinesrFr r r rr�²s     zTestCase.assertMultiLineEqualcCs2||ks.dt|ƒt|ƒf}|j|j||ƒƒdS)Nz%s not less than %s)rrárC)rÚaÚbrDrFr r rÚ assertLessÆszTestCase.assertLesscCs2||ks.dt|ƒt|ƒf}|j|j||ƒƒdS)Nz%s not less than or equal to %s)rrárC)rr$r%rDrFr r rÚassertLessEqualÌszTestCase.assertLessEqualcCs2||ks.dt|ƒt|ƒf}|j|j||ƒƒdS)Nz%s not greater than %s)rrárC)rr$r%rDrFr r rÚ assertGreaterÒszTestCase.assertGreatercCs2||ks.dt|ƒt|ƒf}|j|j||ƒƒdS)Nz"%s not greater than or equal to %s)rrárC)rr$r%rDrFr r rÚassertGreaterEqualØszTestCase.assertGreaterEqualcCs,|dk r(dt|ƒf}|j|j||ƒƒdS)Nz%s is not None)rrárC)rr'rDrFr r rÚ assertIsNoneÞszTestCase.assertIsNonecCs"|dkrd}|j|j||ƒƒdS)Nzunexpectedly None)rárC)rr'rDrFr r rÚassertIsNotNoneäszTestCase.assertIsNotNonecCs0t||ƒs,dt|ƒ|f}|j|j||ƒƒdS)Nz%s is not an instance of %r)r-rrárC)rr'r±rDrFr r rrês zTestCase.assertIsInstancecCs0t||ƒr,dt|ƒ|f}|j|j||ƒƒdS)Nz%s is an instance of %r)r-rrárC)rr'r±rDrFr r rÚassertNotIsInstanceñs zTestCase.assertNotIsInstancecOst|||ƒ}|jd||ƒS)NÚassertRaisesRegex)r]r\)rrèrNr)r*rér r rr-÷s zTestCase.assertRaisesRegexcOst|||ƒ}|jd||ƒS)NÚassertWarnsRegex)rkr\)rrërNr)r*rér r rr.s zTestCase.assertWarnsRegexcCsJt|ttfƒrtj|ƒ}|j|ƒsFd|j|f}|j||ƒ}|j|ƒ‚dS)Nz&Regex didn't match: %r not found in %r) r-rÚbytesrLrMrcrdrCrE)rÚtextrNrDrFr r rÚ assertRegexs    zTestCase.assertRegexcCs`t|ttfƒrtj|ƒ}|j|ƒ}|r\d||jƒ|jƒ…|j|f}|j ||ƒ}|j |ƒ‚dS)Nz"Regex matched: %r matches %r in %r) r-rr/rLrMrcÚstartÚendrdrCrE)rr0Zunexpected_regexrDÚmatchrFr r rÚassertNotRegex&s   zTestCase.assertNotRegexcs‡fdd„}|S)Ncs tjdjˆjƒtdƒˆ||ŽS)NzPlease use {0} instead.r–)rTrUr_r rV)r)r*)Ú original_funcr rÚdeprecated_func6s z,TestCase._deprecate..deprecated_funcr )r6r7r )r6rÚ _deprecate5s zTestCase._deprecatei€i)r˜)N)N)N)N)NN)N)N)N)NNN)NNN)NN)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)N)\r r r ÚAssertionErrorrErår r#Z_classSetupFailedrr§r®r¯r°Ú classmethodr²r³r´rµrºr»r¾rÀrÁrÂrÆr%r&Ú_subtest_msg_sentinelrÍrÐrÒrÔrÛrØrÝrßràrárãrärCrçrêrìrðrírñròrørùr rršr›rœrrrrr™rr!r�r&r'r(r)r*r+rr,r-r.r1r5r8ZfailUnlessEqualZ assertEqualsZ failIfEqualZassertNotEqualsZfailUnlessAlmostEqualZassertAlmostEqualsZfailIfAlmostEqualZassertNotAlmostEqualsZ failUnlessZassert_ZfailUnlessRaisesZfailIfZassertRaisesRegexpZassertRegexpMatchesZassertNotRegexpMatchesr r r rr“fs¤!        E     !     ' c +      !               r“csfeZdZd‡fdd„ Zdd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dd„Z ‡Z S)ÚFunctionTestCaseNcs*tt|ƒjƒ||_||_||_||_dS)N)Úsuperr<rÚ _setUpFuncÚ _tearDownFuncÚ _testFuncÚ _description)rZtestFuncr¯r°Z description)r¢r rrTs zFunctionTestCase.__init__cCs|jdk r|jƒdS)N)r>)rr r rr¯[s zFunctionTestCase.setUpcCs|jdk r|jƒdS)N)r?)rr r rr°_s zFunctionTestCase.tearDowncCs |jƒdS)N)r@)rr r rr˜cszFunctionTestCase.runTestcCs|jjS)N)r@r )rr r rr»fszFunctionTestCase.idcCs@t||jƒstS|j|jko>|j|jko>|j|jko>|j|jkS)N)r-r¢r¼r>r?r@rA)rr½r r rr¾is     zFunctionTestCase.__eq__cCstt|ƒ|j|j|j|jfƒS)N)r¿r.r>r?r@rA)rr r rrÀrszFunctionTestCase.__hash__cCsdt|jƒ|jjfS)Nz%s (%s))rr¢r@r )rr r rrÁvs zFunctionTestCase.__str__cCsdt|jƒ|jfS)Nz <%s tec=%s>)rr¢r@)rr r rrÂzs zFunctionTestCase.__repr__cCs2|jdk r|jS|jj}|r.|jdƒdjƒp0dS)Nr¶r)rAr@r£r·r¸)rr¹r r rrº~s z!FunctionTestCase.shortDescription)NNN)r r r rr¯r°r˜r»r¾rÀrÁrÂrºÚ __classcell__r r )r¢rr<Ks  r<csDeZdZ‡fdd„Zdd„Zdd„Zdd„Zd d „Zd d „Z‡Z S) rËcs(tƒjƒ||_||_||_|j|_dS)N)r=rÚ_messager!rÉrE)rr!rvrÉ)r¢r rr‡s  z_SubTest.__init__cCs tdƒ‚dS)Nzsubtests cannot be run directly)rú)rr r rr˜Žsz_SubTest.runTestcCsbg}|jtk r |jdj|jƒƒ|jrTdjdd„t|jjƒƒDƒƒ}|jdj|ƒƒdj|ƒp`dS)Nz[{}]z, css|]\}}dj||ƒVqdS)z{}={!r}N)r_)r;Úkrur r rr=—sz+_SubTest._subDescription..z({})ú z ())rCr;rr_rÉrÿÚsortedr)rÚpartsZ params_descr r rÚ_subDescription‘s z_SubTest._subDescriptioncCsdj|jjƒ|jƒƒS)Nz{} {})r_r!r»rH)rr r rr»œsz _SubTest.idcCs |jjƒS)N)r!rº)rr r rrºŸsz_SubTest.shortDescriptioncCsdj|j|jƒƒS)Nz{} {})r_r!rH)rr r rrÁ¥sz_SubTest.__str__) r r r rr˜rHr»rºrÁrBr r )r¢rrË…s   rË)/rr/rrHr€rrLrTrÇr%r`rÖrÚutilrrrrrZ __unittestÚobjectr;r Ú Exceptionr rrrr(r5r7r8rr:rBrJrKr]rkÚ namedtupler|r�rr…r“r<rËr r r rÚsX (  /%5 ,l: