U g @s8dZddlZddlZddlZddlZddlZddlZddlmm Z ddl m Z Gdddej Z GdddZdd d Zdd d Zed kr4GdddejZeZeeeeZeeddejDZeejZeeZ e!de"e!ddde #e $D]Z%e!e%&ddqe!dS)z=Test runner and result class for the regression test suite. N)datetimecseZdZdZdZfddZeddZfddZd"d d Z d d Z eddZ fddZ fddZ fddZfddZfddZfddZddZddZd d!ZZS)#RegressionTestResultzG====================================================================== zG---------------------------------------------------------------------- cs\tj||ddd|_td|_|jdt dd|_ d|_ g|_ t ||_dS)Nr)stream descriptions verbosityTZ testsuitestart )super__init__bufferETZElement_RegressionTestResult__suitesetrZutcnowZ isoformat_RegressionTestResult__e!_RegressionTestResult__start_timeZ_RegressionTestResult__resultsbool_RegressionTestResult__verbose)selfrrr __class__-/usr/lib/python3.8/test/support/testresult.pyr s zRegressionTestResult.__init__cCsVz |j}Wntk r&t|YSXz|WStk rLt|YSXt|SN)idAttributeErrorstr TypeErrorrepr)clstestZtest_idrrrZ__getIds zRegressionTestResult.__getIdcsVt|t|jd|_}t|_|j rR|j | |d|j dS)NZtestcasez ... )r startTestr SubElementr rtime perf_counterrrrwritegetDescriptionflush)rrerrrr +s   zRegressionTestResult.startTestFc KsD|j}d|_|dkrdS|d|d|||d|dd|d|dd|jrz|dt|jd|r|jdk r|j }|t |d_ |j dk r|j  }|t |d _ |D]l\}}|r|sqt ||} t|d r4|D],\} } | r$| | t| n t| | _ qqt|| _ qdS) NnameZstatusrunresultZ completedr"z0.6fz system-outz system-erritems)rrpop_RegressionTestResult__getIdrr"r#Z_stdout_buffergetvaluerstripr r!textZ_stderr_bufferr+hasattrr) rrZcaptureargsr'stdoutstderrkvZe2Zk2Zv2rrr _add_result3s4    z RegressionTestResult._add_resultcCs|jr|j|ddS)N )rrr$)rcZwordrrrZ__writeSszRegressionTestResult.__writecCslt|tr0|jdkr|j}q8|jd|j}nt|}t||d}t|||}|d|d|dS)Nbuiltins.)typemessager<) isinstancer= __module____name__r tracebackformat_exceptionjoin)rZerr_typeZ err_valueZerr_tbtypenamemsgtbrrrZ__makeErrorDictWs  z$RegressionTestResult.__makeErrorDictcs4|j|d|j|dt|||dddS)NT)errorEERROR)r7$_RegressionTestResult__makeErrorDictr addError_RegressionTestResult__writerrerrrrrrLjszRegressionTestResult.addErrorcs4|j|d|j|dt|||dddS)NT)outputxzexpected failure)r7rKr addExpectedFailurerMrNrrrrRosz'RegressionTestResult.addExpectedFailurecs4|j|d|j|dt|||dddS)NT)ZfailureFFAIL)r7rKr addFailurerMrNrrrrUtszRegressionTestResult.addFailurecs2|j||dt|||dd|dS)N)ZskippedSzskipped )r7r addSkiprM)rrreasonrrrrWyszRegressionTestResult.addSkipcs&||t||dddS)Nr;ok)r7r addSuccessrMrrrrrrZ~s  zRegressionTestResult.addSuccesscs*|j|ddt||dddS)NZUNEXPECTED_SUCCESS)Zoutcomeuzunexpected success)r7r addUnexpectedSuccessrMr[rrrr]s z)RegressionTestResult.addUnexpectedSuccesscCs2|jr|jd|d|j|d|jdS)Nr8rJrT)rrr$printErrorListerrorsfailuresrrrr printErrorss z RegressionTestResult.printErrorscCs\|D]R\}}|j|j|j|d||d|j|j|jd|qdS)Nz: r8z%s )rr$ separator1r% separator2)rZflavorr_rrOrrrr^s  z#RegressionTestResult.printErrorListcCsH|j}|dt|j|dtt|j|dtt|j|S)NZtestsr_r`)r rrZtestsRunlenr_r`)rr'rrrget_xml_elements z$RegressionTestResult.get_xml_element)F)rAr@ __qualname__rcrdr classmethodr-r r7rMrKrLrRrUrWrZr]rbr^rf __classcell__rrrrrs&          rc@seZdZdddZddZdS)QuietRegressionTestRunnerFcCst|dd|_||j_dS)Nr)rr*r )rrr rrrr sz"QuietRegressionTestRunner.__init__cCs||j|jSr)r*r[rrrr)s zQuietRegressionTestRunner.runN)F)rAr@rgr r)rrrrrjs rjFcCs&|rtjtjt||dStjt|dS)N)Z resultclassr r)r ) functoolspartialunittestZTextTestRunnerrrj)rr rrrget_test_runner_classsrncCst|||Sr)rn)rrZcapture_outputrrrget_test_runnersro__main__c@s,eZdZddZddZddZddZd S) TestTestscCsdSrrrarrr test_passszTestTests.test_passcCstddS)Ng?)r"sleeprarrrtest_pass_slowszTestTests.test_pass_slowcCs*tdtjdtdtjd|ddS)Nr3filer4zfailure message)printsysr3r4Zfailrarrr test_failszTestTests.test_failcCs(tdtjdtdtjdtddS)Nr3rur4z error message)rwrxr3r4 RuntimeErrorrarrr test_errorszTestTests.test_errorN)rAr@rgrrrtryr{rrrrrqsrqccs|]}|dkVqdS)z-vNr).0arrr sr~zOutput:zXML: r<)end)F)F)'__doc__rkiorxr"rBrmZxml.etree.ElementTreeZetreeZ ElementTreer rZTextTestResultrrjrnrorAZTestCaserqZ TestSuiteZsuiteZaddTestZ makeSuiteStringIOrsumargvZ runner_clsr3Zrunnerr)r*rwr.Z tostringlistrfsdecoderrrrs4