U :e@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl m Z ddl mZmZmZmZmZdZeZdZGdddeZGd d d eZGd d d eZGd ddeZddZgZddZddZddZ ddZ!ddZ"ddZ#ddZ$Gdd d Z%Gd!d"d"e%Z&Gd#d$d$e&Z'Gd%d&d&e&Z(e)d'd(d)gZ*Gd*d+d+ej+Z,Gd,d-d-e%Z-Gd.d/d/ej.Z/Gd0d1d1eZ0Gd2d3d3e0Z1Gd4d5d5e0Z2dS)6N)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__rr2/usr/local/python38/lib/python3.8/unittest/case.pyr sr c@s eZdZdS) _ShouldStopNr rrrrr"src@s eZdZdS)_UnexpectedSuccessNr rrrrr'src@s&eZdZdddZejdddZdS) _OutcomeNcCs4d|_||_t|d|_d|_g|_d|_g|_dS)NF addSubTestT)expecting_failurerhasattrresult_supports_subtestssuccessskippedexpectedFailureerrors)selfrrrr__init__.s z_Outcome.__init__Fc cs|j}d|_zz dVWntk r.Yntk rh}zd|_|j|t|fW5d}~XYnjtk rzYnXt}|j r||_ nd|_|j ||fd}YnX|j r|jr|j |dfW5|jo||_XdS)NTF) rKeyboardInterruptr rappendstrrsysexc_inforrrr)r test_caseisTestZ old_successer!rrrtestPartExecutor7s* $  z_Outcome.testPartExecutor)N)F)r r r r contextlibcontextmanagerr%rrrrr-s rcCs|SNr)objrrr_idUsr*cOst|||fdSr()_module_cleanupsr)functionargskwargsrrraddModuleCleanupZsr/c Csdg}trTt\}}}z|||Wqtk rP}z||W5d}~XYqXq|r`|ddSNr)r+pop Exceptionr) exceptionsr,r-r.excrrrdoModuleCleanups`sr5cs,fdd}ttjr(}d||S|S)Ncs4t|ts$t|fdd}|}d|_|_|S)Ncs tdSr(r r-r.reasonrr skip_wrappervsz-skip..decorator..skip_wrapperT) isinstancetype functoolswraps__unittest_skip____unittest_skip_why__) test_itemr:r8rr decoratorts zskip..decorator)r;types FunctionType)r9rBrArr8rskipps  rFcCs|r t|StSr(rFr*Z conditionr9rrrskipIfsrIcCs|s t|StSr(rGrHrrr skipUnlesssrJcCs d|_|S)NT)__unittest_expecting_failure__)rArrrrsrcs4t|tr tfdd|DSt|to2t|S)Nc3s|]}t|VqdSr() _is_subtype).0r$basetyperr sz_is_subtype..)r;tupleallr< issubclass)expectedrOrrNrrLs rLc@seZdZddZddZdS)_BaseTestCaseContextcCs ||_dSr()r")rr"rrrrsz_BaseTestCaseContext.__init__cCs |j|j|}|j|dSr()r"_formatMessagemsgfailureException)r standardMsgrWrrr _raiseFailuresz"_BaseTestCaseContext._raiseFailureN)r r r rrZrrrrrUsrUc@seZdZdddZddZdS)_AssertRaisesBaseContextNcCs@t||||_||_|dk r*t|}||_d|_d|_dSr() rUrrTr"recompileexpected_regexobj_namerW)rrTr"r^rrrrs  z!_AssertRaisesBaseContext.__init__c Cszt|j|js"td||jf|sV|dd|_|rNtdtt|f|WTS|^}}z |j |_ Wnt k rt ||_ YnX||||W5QRXW5d}XdS)Nz%s() arg 1 must be %srWz3%r is an invalid keyword argument for this function) rLrT _base_type TypeError_base_type_strr1rWnextiterr r_AttributeErrorr)rnamer-r.Z callable_objrrrhandles(  z_AssertRaisesBaseContext.handle)N)r r r rrgrrrrr[s r[c@s$eZdZeZdZddZddZdS)_AssertRaisesContextz-an exception type or tuple of exception typescCs|Sr(rrrrr __enter__sz_AssertRaisesContext.__enter__cCs|dkrbz |jj}Wntk r2t|j}YnX|jrP|d||jql|d|n t|t ||js|dS| d|_ |j dkrdS|j }| t|s|d|jt|dS)Nz{} not raised by {}z {} not raisedFT"{}" does not match "{}")rTr rerr_rZformat traceback clear_framesrSwith_traceback exceptionr^searchpattern)rexc_type exc_valuetbexc_namer^rrr__exit__s.      z_AssertRaisesContext.__exit__N)r r r BaseExceptionr`rbrjrwrrrrrhsrhc@s$eZdZeZdZddZddZdS)_AssertWarnsContextz(a warning type or tuple of warning typescCsRttjD]}t|ddri|_qtjdd|_|j |_t d|j |S)N__warningregistry__T)recordalways) listr modulesvaluesgetattrrzwarningscatch_warningswarnings_managerrj simplefilterrT)rvrrrrjs  z_AssertWarnsContext.__enter__cCs|j||||dk rdSz |jj}Wntk rFt|j}YnXd}|jD]Z}|j}t||jsjqR|dkrv|}|j dk r|j t|sqR||_ |j |_ |j |_ dS|dk r|d|j jt||jr|d||jn|d|dS)Nrkz{} not triggered by {}z{} not triggered)rrwrTr rerrmessager;r^rqwarningfilenamelinenorZrlrrr_)rrsrtrurvZfirst_matchingmwrrrrws@     z_AssertWarnsContext.__exit__N)r r r Warningr`rbrjrwrrrrrys ry_LoggingWatcherrecordsoutputc@s$eZdZddZddZddZdS)_CapturingHandlercCstj|tgg|_dSr()loggingHandlerrrwatcherrirrrr3s z_CapturingHandler.__init__cCsdSr(rrirrrflush7sz_CapturingHandler.flushcCs*|jj|||}|jj|dSr()rrrrlr)rr{rWrrremit:s z_CapturingHandler.emitN)r r r rrrrrrrr.src@s(eZdZdZddZddZddZdS) _AssertLogsContextz"%(levelname)s:%(name)s:%(message)scCs:t||||_|r(tj|||_ntj|_d|_dSr() rUr logger_namer _nameToLevelgetlevelINFOrW)rr"rrrrrrFs  z_AssertLogsContext.__init__cCst|jtjr|j}|_nt|j}|_t|j}t}| ||j |_ |j dd|_ |j |_|j|_|g|_ ||j d|_|j S)NF)r;rrLoggerlogger getLogger FormatterLOGGING_FORMATr setFormatterrhandlers old_handlersr old_level propagate old_propagatesetLevel)rr formatterhandlerrrrrjOs   z_AssertLogsContext.__enter__cCs`|j|j_|j|j_|j|j|dk r.dSt|jj dkr\| d t |j|jjdS)NFrz-no logs of level {} or higher triggered on {})rrrrrrrlenrrrZrlr getLevelNamerrf)rrsrtrurrrrw`s   z_AssertLogsContext.__exit__N)r r r rrrjrwrrrrrAs rc@seZdZddZdS)_OrderedChainMapccs8t}|jD]&}|D]}||kr|||Vqq dSr()setmapsadd)rseenmappingkrrr__iter__ns   z_OrderedChainMap.__iter__N)r r r rrrrrrmsrc@seZdZeZdZdZdZdZgZ dddZ dd Z d d Z d e _ ed dZddZddZeddZeddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zejefd)d*Z d+d,Z!d-d.Z"d/d0Z#d1d2Z$d3d4Z%d5d6Z&d7d8Z'dd:d;Z(dd?Z*d@dAZ+dBdCZ,dDdEZ-ddFdGZ.ddHdIZ/ddJdKZ0dLdMZ1dNdOZ2dPdQZ3ddRdSZ4dTdUZ5ddVdWZ6ddXdYZ7ddZd[Z8dd\d]Z9dd^d_Z:dd`daZ;dbdcZddhdiZ?ddjdkZ@ddldmZAddndoZBddpdqZCddrdsZDddtduZEddvdwZFddxdyZGddzd{ZHdd|d}ZIdd~dZJdddZKdddZLdddZMdddZNdddZOddZPddZQdddZRdddZSddZTeTe7ZUZVeTe8ZWZXeTe9ZYZZeTe:Z[Z\eTe0Z]Z^eTe2Z_eTe/Z`eTePZaeTeRZbeTeSZcd9S)TestCaseTiiFrunTestcCs||_d|_d|_zt||}Wn.tk rN|dkrJtd|j|fYn X|j|_g|_d|_ i|_ | t d| t d| td| td| td| tddS) NzNo testrzno such test method in %s: %sassertDictEqualassertListEqualassertTupleEqualassertSetEqualassertMultiLineEqual)_testMethodName_outcome_testMethodDocrre ValueError __class____doc__ _cleanups_subtest_type_equality_funcsaddTypeEqualityFuncdictr}rQr frozensetr)rZ methodName testMethodrrrrs(      zTestCase.__init__cCs||j|<dSr()r)rZtypeobjr,rrrrs zTestCase.addTypeEqualityFunccOst|dkr|^}}}nV|s&tdnHd|krZ|d}|^}}ddl}|jdtddntdt|dt|}|j|||fdS) Nz>descriptor 'addCleanup' of 'TestCase' object needs an argumentr,rz4Passing 'function' as keyword argument is deprecated) stacklevelz:addCleanup expected at least 1 positional argument, got %dr) rrar1rwarnDeprecationWarningrQrr)r-r.rr,rrrr addCleanups"     zTestCase.addCleanupz%($self, function, /, *args, **kwargs)cOs|j|||fdSr()_class_cleanupsr)clsr,r-r.rrraddClassCleanupszTestCase.addClassCleanupcCsdSr(rrirrrsetUpszTestCase.setUpcCsdSr(rrirrrtearDownszTestCase.tearDowncCsdSr(rrrrr setUpClassszTestCase.setUpClasscCsdSr(rrrrr tearDownClassszTestCase.tearDownClasscCsdS)NrrrirrrcountTestCasesszTestCase.countTestCasescCstSr()rZ TestResultrirrrdefaultTestResult szTestCase.defaultTestResultcCs$|j}|r |ddSdSN r)rstripsplitrdocrrrshortDescription szTestCase.shortDescriptioncCsdt|j|jfS)Nz%s.%srrrrirrridsz TestCase.idcCs t|t|k rtS|j|jkSr()r<NotImplementedrrotherrrr__eq__szTestCase.__eq__cCstt||jfSr()hashr<rrirrr__hash__ szTestCase.__hash__cCsd|jt|jfSNz%s (%s))rrrrirrr__str__#szTestCase.__str__cCsdt|j|jfS)Nz<%s testMethod=%s>rrirrr__repr__&szTestCase.__repr__cCs<t|dd}|dk r |||ntdtd||dS)NaddSkipz4TestResult has no addSkip method, skips not reportedr)rrrRuntimeWarning addSuccess)rrr"r9rrrr_addSkip*s  zTestCase._addSkipc ks|jdks|jjsdVdS|j}|dkr4t|}n |j|}t||||_zX|jj|jdd dVW5QRX|jjs|jj }|dk r|j rt n |jj rt W5||_XdS)NTr#) rrrrparams new_child_SubTestr%rrZfailfastrr)rrWrparentZ params_maprrrrsubTest3s$  zTestCase.subTestcCs`|D]V\}}t|tr(||j||q|dk rt|d|jrN|||q|||qdSr0)r;rrr"rSrX addFailureZaddError)rrrtestr!rrr_feedErrorsToResultRs  zTestCase._feedErrorsToResultcCsDz |j}Wn*tk r4tdt||Yn X|||dS)Nz@TestResult has no addExpectedFailure method, reporting as passes)addExpectedFailurererrrr)rrr!rrrr_addExpectedFailure\s zTestCase._addExpectedFailurec Cshz |j}WnPtk rZtdtz tdWn$tk rT||tYnXYn X||dS)NzCTestResult has no addUnexpectedSuccess method, reporting as failure) addUnexpectedSuccessrerrrrrr r!)rrrrrr_addUnexpectedSuccessfs  zTestCase._addUnexpectedSuccesscCs |dSr()rrirrr _callSetUpuszTestCase._callSetUpcCs |dSr(r)rmethodrrr_callTestMethodxszTestCase._callTestMethodcCs |dSr()rrirrr _callTearDown{szTestCase._callTearDowncOs|||dSr(rrr,r-r.rrr _callCleanup~szTestCase._callCleanupNc Cs|}|dkr.|}t|dd}|dk r.|||t||j}t|jdds^t|ddrz,t|jddpxt|dd}||||W5||XdSt|dd}t|dd}|p|}t|} z| |_ | || W5QRX| jr@|| _| j |dd ||W5QRXd| _| ||W5QRX|| jD]\} } ||| | qN||| j| jr|r| j r||| j n ||n |||WS|||dkrt|dd} | dk r| | j d| _ d|_ XdS) N startTestRunr?Fr@rCrK stopTestRunTr)rrZ startTestrrZstopTestrrrclearrrr%rrrrr doCleanupsrrrrr) rrZ orig_resultrrZskip_whyZexpecting_failure_methodZexpecting_failure_classroutcomerrr9rrrrunst               z TestCase.runc CsR|jp t}|jrL|j\}}}|||j|f||W5QRXq |jSr()rrrr1r%rr)rrr,r-r.rrrrs   zTestCase.doCleanupsc Csdg|_|jr`|j\}}}z|||Wqtk r\}z|jtW5d}~XYqXqdSr()ZtearDown_exceptionsrr1r2rr r!)rr,r-r.r4rrrdoClassCleanupsszTestCase.doClassCleanupscOs |j||Sr()r)rr-kwdsrrr__call__szTestCase.__call__cCsF|t||j||jrB|jd\}}}|||qdS)N)rrrrrr1rrrrdebugs zTestCase.debugcCs t|dSr(r6)rr9rrrskipTestszTestCase.skipTestcCs||dSr()rX)rrWrrrfailsz TestCase.failcCs&|r"||dt|}||dS)Nz%s is not falserVrrXrexprrWrrr assertFalseszTestCase.assertFalsecCs&|s"||dt|}||dS)Nz%s is not truer rrrr assertTrueszTestCase.assertTruecCsV|js|p |S|dkr|Szd||fWStk rPdt|t|fYSXdS)Nz%s : %s) longMessageUnicodeDecodeErrorr)rrWrYrrrrVs zTestCase._formatMessagecOs(t||}z|d||WSd}XdS)N assertRaisesrhrg)rexpected_exceptionr-r.contextrrrrs zTestCase.assertRaisescOst||}|d||S)N assertWarnsryrg)rexpected_warningr-r.rrrrr5s zTestCase.assertWarnscCs t|||Sr()r)rrrrrr assertLogsTszTestCase.assertLogscCsFt|t|kr@|jt|}|dk r@t|tr)r;rQ)rZtuple1Ztuple2rWrrrr`s zTestCase.assertTupleEqualc Cs`z||}Wn^tk r>}z|d|W5d}~XYn0tk rl}z|d|W5d}~XYnXz||}Wn^tk r}z|d|W5d}~XYn0tk r}z|d|W5d}~XYnX|s|sdSg}|r|d|D]}|t|q|r@|d|D]}|t|q*d|} |||| 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) differencerar rerreprr1rV) rZset1Zset2rWZ difference1r$Z difference2linesitemrYrrrrks2      zTestCase.assertSetEqualcCs2||kr.dt|t|f}||||dS)Nz%s not found in %srr rVrmember containerrWrYrrrassertIns zTestCase.assertIncCs2||kr.dt|t|f}||||dS)Nz%s unexpectedly found in %srCrDrrr assertNotIns zTestCase.assertNotIncCs2||k r.dt|t|f}||||dS)Nz %s is not %srCrZexpr1Zexpr2rWrYrrrassertIss zTestCase.assertIscCs,||kr(dt|f}||||dS)Nzunexpectedly identical: %srCrIrrr assertIsNotszTestCase.assertIsNotc Cs~||td||td||krzdt||}ddtt|t|}| ||}| | ||dS)Nz"First argument is not a dictionaryz#Second argument is not a dictionaryr r) assertIsInstancerrr1r2r3r4r5r6r7r rV)rZd1Zd2rWrYr)rrrrs    zTestCase.assertDictEqualc Cstdtg}g}|D]L\}}||kr8||q|||kr|dt|t|t||fq|sv|svdSd}|rdddd|D}|r|r|d7}|d d|7}||||dS) Nz&assertDictContainsSubset is deprecatedz%s, expected: %s, actual: %srCz Missing: %s,css|]}t|VqdSr()r)rMrrrrrPsz4TestCase.assertDictContainsSubset..z; zMismatched values: %s) rrritemsrrr1r rV) rZsubsetZ dictionaryrWmissingZ mismatchedkeyvaluerYrrrassertDictContainsSubsets4      z!TestCase.assertDictContainsSubsetc Cst|t|}}zt|}t|}Wntk rHt||}YnX||krVdSt||}|rd}dd|D}d|} ||| }|||}| |dS)NzElement counts were not equal: cSsg|] }d|qS)z First has %d, Second has %d: %rr)rMr)rrr sz-TestCase.assertCountEqual..r) r} collectionsCounterrarrr1r7rVr ) rrrrWZ first_seqZ second_seqZ differencesrYrAr:rrrassertCountEquals      zTestCase.assertCountEqualcCs||td||td||krt||jks@t||jkrN|||||jdd}|jdd}t|dkr|d|kr|dg}|dg}dt||}dd t ||}| ||}| | ||dS) NzFirst argument is not a stringzSecond argument is not a stringT)keependsrz rr rC)rLrr_diffThresholdrr6rrr1r2r3r7r rV)rrrrWZ firstlinesZ secondlinesrYr)rrrrs       zTestCase.assertMultiLineEqualcCs2||ks.dt|t|f}||||dS)Nz%s not less than %srCrabrWrYrrr assertLessszTestCase.assertLesscCs2||ks.dt|t|f}||||dS)Nz%s not less than or equal to %srCrYrrrassertLessEqualszTestCase.assertLessEqualcCs2||ks.dt|t|f}||||dS)Nz%s not greater than %srCrYrrr assertGreaterszTestCase.assertGreatercCs2||ks.dt|t|f}||||dS)Nz"%s not greater than or equal to %srCrYrrrassertGreaterEqual szTestCase.assertGreaterEqualcCs,|dk r(dt|f}||||dS)Nz%s is not NonerCrr)rWrYrrr assertIsNone&szTestCase.assertIsNonecCs"|dkrd}||||dS)Nzunexpectedly None)r rVr`rrrassertIsNotNone,szTestCase.assertIsNotNonecCs0t||s,dt||f}||||dS)Nz%s is not an instance of %rr;rr rVrr)rrWrYrrrrL2s zTestCase.assertIsInstancecCs0t||r,dt||f}||||dS)Nz%s is an instance of %rrcrdrrrassertNotIsInstance9s zTestCase.assertNotIsInstancecOst|||}|d||S)NassertRaisesRegexr)rrr^r-r.rrrrrf?s zTestCase.assertRaisesRegexcOst|||}|d||S)NassertWarnsRegexr)rrr^r-r.rrrrrgOs zTestCase.assertWarnsRegexcCsJt|ttfrt|}||sFd|j|f}|||}||dS)Nz&Regex didn't match: %r not found in %r) r;rbytesr\r]rqrrrVrX)rtextr^rWrYrrr assertRegexbs   zTestCase.assertRegexcCs`t|ttfrt|}||}|r\d||||j|f}| ||}| |dS)Nz"Regex matched: %r matches %r in %r) r;rrhr\r]rqstartendrrrVrX)rriZunexpected_regexrWmatchrYrrrassertNotRegexns   zTestCase.assertNotRegexcsfdd}|S)Ncs tdjtd||S)NzPlease use {0} instead.r)rrrlr rr7 original_funcrrdeprecated_func~s  z,TestCase._deprecate..deprecated_funcr)rprqrror _deprecate}s zTestCase._deprecate)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)dr r r AssertionErrorrXrr<rXZ_classSetupFailedrrrr__text_signature__ classmethodrrrrrrrrrrrrrrr&r'_subtest_msg_sentinelrrrrrrrrrrrrr r r rrrVrrrrrr!r"r*r+r;r7rrrrGrHrJrKrrRrVrr\r]r^r_rarbrLrerfrgrjrnrrZfailUnlessEqualZ assertEqualsZ failIfEqualZassertNotEqualsZfailUnlessAlmostEqualZassertAlmostEqualsZfailIfAlmostEqualZassertNotAlmostEqualsZ failUnlessZassert_ZfailUnlessRaisesZfailIfZassertRaisesRegexpZassertRegexpMatchesZassertNotRegexpMatchesrrrrrws!         E      !     - # c +                    rcsfeZdZdfdd ZddZddZdd Zd d Zd d ZddZ ddZ ddZ ddZ Z S)FunctionTestCaseNcs*tt|||_||_||_||_dSr()superrwr _setUpFunc _tearDownFunc _testFunc _description)rZtestFuncrr descriptionrrrrs zFunctionTestCase.__init__cCs|jdk r|dSr()ryrirrrrs zFunctionTestCase.setUpcCs|jdk r|dSr()rzrirrrrs zFunctionTestCase.tearDowncCs |dSr()r{rirrrrszFunctionTestCase.runTestcCs|jjSr()r{r rirrrrszFunctionTestCase.idcCs@t||jstS|j|jko>|j|jko>|j|jko>|j|jkSr()r;rrryrzr{r|rrrrrs     zFunctionTestCase.__eq__cCstt||j|j|j|jfSr()rr<ryrzr{r|rirrrrszFunctionTestCase.__hash__cCsdt|j|jjfSr)rrr{r rirrrrs zFunctionTestCase.__str__cCsdt|j|jfS)Nz <%s tec=%s>)rrr{rirrrrs zFunctionTestCase.__repr__cCs2|jdk r|jS|jj}|r.|ddp0dSr)r|r{rrrrrrrrs z!FunctionTestCase.shortDescription)NNN)r r r rrrrrrrrrr __classcell__rrr~rrws  rwcsDeZdZfddZddZddZddZd d Zd d ZZ S) rcs(t||_||_||_|j|_dSr()rxr_messager"rrX)rr"rrr~rrrs  z_SubTest.__init__cCs tddS)Nzsubtests cannot be run directly)r,rirrrrsz_SubTest.runTestcCs^g}|jtk r |d|j|jrPddd|jD}|d|d|p\dS)Nz[{}]z, css|]\}}d||VqdS)z{}={!r}N)rl)rMrrrrrrPsz+_SubTest._subDescription..z({}) z ())rrvrrlrr1rN)rpartsZ params_descrrr_subDescriptions  z_SubTest._subDescriptioncCsd|j|SNz{} {})rlr"rrrirrrrsz _SubTest.idcCs |jSr()r"rrirrrrsz_SubTest.shortDescriptioncCsd|j|Sr)rlr"rrirrrrsz_SubTest.__str__) r r r rrrrrrrrrr~rrs   r)3r r=r2rr4r\rrTr&rmrDrCrutilrrrrrZ __unittestobjectrvr=r2r rrrr*r+r/r5rFrIrJrrLrUr[rhry namedtuplerrrrChainMaprrrwrrrrrsb ( *%5, $: