def run_tests_sequential(self): if self.ns.trace: import trace self.tracer = trace.Trace(trace=False, count=True) save_modules = sys.modules.keys() self.log("Run tests sequentially") #show used memory if sys.platform == 'OpenVMS': print('Used memory: %s' % format_mem(get_mem())) previous_test = None for test_index, test_name in enumerate(self.tests, 1): start_time = time.monotonic() text = test_name if previous_test: text = '%s -- %s' % (text, previous_test) self.display_progress(test_index, text) if self.tracer: # If we're tracing code coverage, then we don't exit with status # if on a false return value from main. cmd = ('result = runtest(self.ns, test_name); ' 'self.accumulate_result(result)') ns = dict(locals()) self.tracer.runctx(cmd, globals=globals(), locals=ns) result = ns['result'] else: result = runtest(self.ns, test_name) self.accumulate_result(result) if result.result == INTERRUPTED: break previous_test = format_test_result(result) test_time = time.monotonic() - start_time if test_time >= PROGRESS_MIN_TIME: previous_test = "%s in %s" % (previous_test, format_duration(test_time)) elif result.result == PASSED: # be quiet: say nothing if the test passed shortly previous_test = None # Unload the newly imported modules (best effort finalization) for module in sys.modules.keys(): if module not in save_modules and module.startswith("test."): support.unload(module) #show used memory if sys.platform == 'OpenVMS': print('Used memory: %s' % format_mem(get_mem())) if self.ns.failfast and is_failed(result, self.ns): break if previous_test: print(previous_test)
def must_stop(result, ns): if result.result == INTERRUPTED: return True if ns.failfast and is_failed(result, ns): return True return False
def must_stop(result: TestResult, ns: Namespace) -> bool: if isinstance(result, Interrupted): return True if ns.failfast and is_failed(result, ns): return True return False