def showDiff(achieved, expected, indent=''): diff = Differ().compare( expected.splitlines(), achieved.splitlines() ) for each in diff: if each[0] == '+': print(indent+succeed(each)) elif each[0] == '-': print(indent+info(each)) elif each[0] == '?': print(indent+status(each)) else: print(indent+each)
print(info(' Result : invalid return code:'), pipe.returncode) elif expectedResult != result: failures += 1 print(fail('Failure detected (%s):' % failures)) print(info(' Given:'), stimulus) print(info(' Result :'), '\n' + result) print(info(' Expected:')) for r, e in zip(result, expectedResult): if r == e: print(e, end='') else: print(fail(e), end='') print() elif printResults: print(succeed(' Result:'), result) for message in messages: print(succeed(' Message received:'), message) for warning in warnings: print(succeed(' Warning received:'), warning) # Print test summary {{{1 numTests = len(testCases) assert testsRun == numTests, "%s of %s tests run" % (testsRun, numTests) if printSummary: print('%s: %s tests run, %s failures detected.' % ( fail('FAIL') if failures else succeed('PASS'), testsRun, failures )) writeSummary(testsRun, failures) sys.exit(int(bool(failures)))
# Run tests {{{1 for case in testCases: testsRun += 1 if printTests: print(status("Trying %d (%s):" % (testsRun, case.name)), case.stimulus) failure = case.run() if failure: failures += 1 name, stimulus, result, expected, kind = failure print(fail("Unexpected %s (%s):" % (kind, failures))) print(info(" Case :"), name) print(info(" Given :"), stimulus) print(info(" Result :"), result) print(info(" Expected:"), expected) # Print test summary {{{1 numTests = 76 assert testsRun == numTests, "Incorrect number of tests run (%s of %s)." % (testsRun, numTests) if printSummary: print( "%s: %s tests run, %s failures detected." % (fail("FAIL") if failures else succeed("PASS"), testsRun, failures) ) writeSummary(testsRun, failures) sys.exit(int(bool(failures))) # vim: set sw=4 sts=4 et:
succeed, fail, status, pythonCmd, coverageCmd, ) import doctest import sys # Initialization {{{1 fast, printSummary, printTests, printResults, colorize, parent, coverage = cmdLineOpts( ) # use the inform color package before unloading it. failure = fail('FAIL:') success = succeed('PASS:'******'Trying:') # Unload the inform module so that it is reloaded during the doctests # This is needed because doctest replaces stdout with its own stream so it # can capture the output of the program being tested. Inform was imported from # runtests, and it already saved away stdout. By unloading it here, it will be # imported again after doctest has replaced stdout. def unload_inform(): to_delete = [m for m in sys.modules.keys() if m.startswith('inform')] for module in to_delete: del sys.modules[module] if coverage is False:
for case in testCases: testsRun += 1 if printTests: print(status('Trying %d (%s):' % (testsRun, case.name)), case.stimulus) failure = case.run() if failure: failures += 1 name, stimulus, result, expected, kind = failure print(fail('Unexpected %s (%s):' % (kind, failures))) print(info(' Case :'), name) print(info(' Given :'), format(stimulus)) print(info(' Result :'), format(result)) print(info(' Expected:'), format(expected)) if result and expected: print(info(' Diff:')) showDiff(result, expected, indent=8*' ') # Print test summary {{{1 numTests = len(testCases) assert testsRun == numTests, "Incorrect number of tests run (%s of %s)." % (testsRun, numTests) if printSummary: print('%s: %s tests run, %s failures detected.' % ( fail('FAIL') if failures else succeed('PASS'), testsRun, failures )) writeSummary(testsRun, failures) sys.exit(int(bool(failures)))
) ) if warnings != expectedWarnings: for warning in warnings: if warning not in expectedWarnings: print("%s: %s" % ( info(' Warning not expected'), warning) ) for warning in expectedWarnings: if warning not in warnings: print("%s: %s" % ( info(' Expected warning not received'), warning )) elif printResults: print("%s: %s" % (succeed(' Result'), result)) try: for message in messages: print("%s: %s" % (succeed(' Message received'), message)) except TypeError: pass # occurs if messages is True for warning in warnings: print("%s: %s" % (succeed(' Warning received'), warning)) except CalculatorError as err: calc.restoreStack() if expectedError != err.getMessage(): failures += 1 print("%s:" % fail('Failure detected (%s)' % failures)) print("%s: %s" % (info(' Given'), stimulus)) print("%s: %s" % (info(' Result '), err.message)) print("%s: %s" % (info(' Expected'), expectedError))
if printTests: print(status('Trying %d (%s):' % (testsRun, case.name)), case.stimulus) failure = case.run() if failure: failures += 1 name, stimulus, result, expected, kind = failure print(fail('Unexpected %s (%s):' % (kind, failures))) print(info(' Case :'), name) print(info(' Given :'), format(stimulus)) print(info(' Result :'), format(result)) print(info(' Expected:'), format(expected)) if result and expected: print(info(' Diff:')) showDiff(result, expected, indent=8*' ') # Print test summary {{{1 numTests = len(testCases) assert testsRun == numTests, "Incorrect number of tests run (%s of %s)." % (testsRun, numTests) if printSummary: print('%s: %s tests run, %s failures detected.' % ( fail('FAIL') if failures else succeed('PASS'), testsRun, failures )) writeSummary(testsRun, failures) sys.exit(int(bool(failures))) # vim: set sw=4 sts=4 et: