3 \G@sndZddlZddlZddlZddlmZddlmZdZGddde Z Gd d d ej Z Gd d d e Z dS) z Running testsN)result)registerResultTc@s*eZdZdZddZddZd ddZdS) _WritelnDecoratorz@Used to decorate file-like objects with a handy 'writeln' methodcCs ||_dS)N)stream)selfrr'/usr/lib64/python3.6/unittest/runner.py__init__sz_WritelnDecorator.__init__cCs|dkrt|t|j|S)Nr __getstate__)rr )AttributeErrorgetattrr)rattrrrr __getattr__sz_WritelnDecorator.__getattr__NcCs|r|j||jddS)N )write)rargrrr writelns z_WritelnDecorator.writeln)N)__name__ __module__ __qualname____doc__r rrrrrr r srcseZdZdZddZddZfddZddZfd d Zfd d Z fd dZ fddZ fddZ fddZ fddZddZddZZS)TextTestResultzhA test result class that can print formatted text results to a stream. Used by TextTestRunner. =F-cs8tt|j|||||_|dk|_|dk|_||_dS)Nr)superrr rshowAlldots descriptions)rrr verbosity) __class__rr r %s   zTextTestResult.__init__cCs0|j}|jr$|r$djt||fSt|SdS)Nr)ZshortDescriptionrjoinstr)rtestZdoc_first_linerrr getDescription,s zTextTestResult.getDescriptioncsBtt|j||jr>|jj|j||jjd|jjdS)Nz ... )rr startTestrrrr%flush)rr$)r!rr r&3s  zTextTestResult.startTestcsDtt|j||jr$|jjdn|jr@|jjd|jjdS)Nok.) rr addSuccessrrrrrr')rr$)r!rr r*:s  zTextTestResult.addSuccesscsFtt|j|||jr&|jjdn|jrB|jjd|jjdS)NERRORE) rraddErrorrrrrrr')rr$err)r!rr r-Bs  zTextTestResult.addErrorcsFtt|j|||jr&|jjdn|jrB|jjd|jjdS)NFAILF) rr addFailurerrrrrr')rr$r.)r!rr r1Js  zTextTestResult.addFailurecsLtt|j|||jr,|jjdj|n|jrH|jjd|jj dS)Nz skipped {0!r}s) rraddSkiprrrformatrrr')rr$reason)r!rr r3Rs  zTextTestResult.addSkipcsFtt|j|||jr&|jjdn|jrB|jjd|jjdS)Nzexpected failurex) rraddExpectedFailurerrrrrr')rr$r.)r!rr r7Zs  z!TextTestResult.addExpectedFailurecsDtt|j||jr$|jjdn|jr@|jjd|jjdS)Nzunexpected successu) rraddUnexpectedSuccessrrrrrr')rr$)r!rr r9bs  z#TextTestResult.addUnexpectedSuccesscCs6|js |jr|jj|jd|j|jd|jdS)Nr+r/)rrrrprintErrorListerrorsfailures)rrrr printErrorsjs  zTextTestResult.printErrorscCs\xV|D]N\}}|jj|j|jjd||j|f|jj|j|jjd|qWdS)Nz%s: %sz%s)rr separator1r% separator2)rZflavourr;r$r.rrr r:ps zTextTestResult.printErrorList)rrrrr>r?r r%r&r*r-r1r3r7r9r=r: __classcell__rr)r!r rs        rc@s4eZdZdZeZd ddddZd d Zd d ZdS)TextTestRunnerzA test runner class that displays results in textual form. It prints out the names of tests as they are run, errors as they occur, and a summary of the results at the end of the test run. NTrF) tb_localsc CsN|dkrtj}t||_||_||_||_||_||_||_ |dk rJ||_ dS)zConstruct a TextTestRunner. Subclasses should accept **kwargs to ensure compatibility as the interface changes. N) sysstderrrrrr failfastbufferrBwarnings resultclass) rrrr rErFrHrGrBrrr r s zTextTestRunner.__init__cCs|j|j|j|jS)N)rHrrr )rrrr _makeResultszTextTestRunner._makeResultcCs4|j}t||j|_|j|_|j|_tj|jr^tj|j|jdkr^tjdt ddt j }t |dd}|dk r|z ||Wdt |dd}|dk r|Xt j }WdQRX||}|j t |d r|jj|j|j}|jjd ||d krd pd |f|jjd} } } ytt|j|j|jf} Wntk rVYn X| \} } } g} |js|jjdt|jt|j}}|r| jd||r| jd|n |jjd| r| jd| | r| jd| | r| jd| | r$|jjddj| fn |jjd|S)z&Run the given test case or test suite.defaultalwaysmodulezPlease use assert\w+ instead.)categorymessage startTestRunN stopTestRunr?zRan %d test%s in %.3fsrr2rZFAILEDz failures=%dz errors=%dZOKz skipped=%dzexpected failures=%dzunexpected successes=%dz (%s)z, r)rJrK)rIrrErFrBrGcatch_warnings simplefilterfilterwarningsDeprecationWarningtimer r=hasattrrrr?ZtestsRunmaplenZexpectedFailuresunexpectedSuccessesskippedr Z wasSuccessfulrr<r;appendr")rr$rZ startTimerOrPZstopTimeZ timeTakenrunZ expectedFailsrZr[ZresultsZinfosZfailedZerroredrrr r]sr              zTextTestRunner.run)NTrFFNN) rrrrrrHr rIr]rrrr rAxsrA)rrCrVrGrQrZsignalsrZ __unittestobjectrZ TestResultrrArrrr s  [