+ results, count = run_tests(parsed, target, todo)
+
+ header("ran %d tests in %.0fs" % (count, time.time() - overall_start),
+ dash=':')
+
+ return print_results(results)
+
+good_results = set(('pass', 'not_applicable'))
+def run_tests(parsed, target, todo):
+ results = {}
+ count = 0
+
+ for name, definition, hart in todo:
+ log_name = os.path.join(parsed.logs, "%s-%s-%s.log" %
+ (time.strftime("%Y%m%d-%H%M%S"), type(target).__name__, name))
+ log_fd = open(log_name, 'w')
+ print "[%s] Starting > %s" % (name, log_name)
+ instance = definition(target, hart)
+ sys.stdout.flush()
+ log_fd.write("Test: %s\n" % name)
+ log_fd.write("Target: %s\n" % type(target).__name__)
+ start = time.time()
+ global real_stdout # pylint: disable=global-statement
+ real_stdout = sys.stdout
+ sys.stdout = log_fd
+ try:
+ result = instance.run()
+ log_fd.write("Result: %s\n" % result)
+ log_fd.write("Logfile: %s\n" % log_name)
+ log_fd.write("Reproduce: %s %s %s\n" % (sys.argv[0], parsed.target,
+ name))
+ finally:
+ sys.stdout = real_stdout
+ log_fd.write("Time elapsed: %.2fs\n" % (time.time() - start))
+ log_fd.flush()
+ print "[%s] %s in %.2fs" % (name, result, time.time() - start)
+ if result not in good_results and parsed.print_failures:
+ sys.stdout.write(open(log_name).read())
+ sys.stdout.flush()
+ results.setdefault(result, []).append((name, log_name))