def process_result(index, _input_data, output_data): """ This is a callback function that Processes the result of a test. @ In, index, int, Index into functions list. @ In, _input_data, ignored, the input data passed to the function @ In, output_data, Tester.TestResult the output data passed to the function @ Out, None """ group = output_data.group process_test_name = test_name_list[index] if group == Tester.group_success: results["pass"] += 1 for postreq in function_postreq.get(process_test_name, []): if postreq in name_to_id: job_id = name_to_id[postreq] print("Enabling", postreq, job_id) run_pool.enable_job(job_id) okaycolor = Colors.okay elif group == Tester.group_skip: results["skipped"] += 1 print(output_data.message) okaycolor = Colors.skip else: results["fail"] += 1 failed_list.append( Tester.get_group_name(group) + " " + process_test_name) print("Output of'" + process_test_name + "':") print(output_data.output) print(output_data.message) okaycolor = Colors.fail number_done = sum(results.values()) if results["fail"] > 0: done = "{0}F{1}".format(number_done, results["fail"]) else: done = number_done print(' '.join([ "({done}/{togo})", "{statcolor}{status:7s}{normcolor}" "({timecolor}{time}{normcolor})" "{namecolor}{test}{normcolor}" ]).format(done=done, togo=len(function_list), statcolor=okaycolor, normcolor=Colors.norm, namecolor=Colors.name, timecolor=Colors.time, status=Tester.get_group_name(group), time=sec_format(output_data.runtime), test=process_test_name))
def process_result(index, _input_data, output_data): """ This is a callback function that Processes the result of a test. @ In, index, int, Index into functions list. @ In, _input_data, ignored, the input data passed to the function @ In, output_data, Tester.TestResult the output data passed to the function @ Out, None """ group = output_data.group process_test_name = test_name_list[index] # TODO add feature to turn coloring on and off norm_color = '\033[0m' #reset color skip_color = '\033[90m' #dark grey fail_color = '\033[91m' #red pass_color = '\033[92m' #green name_color = '\033[93m' #yellow if group == Tester.group_success: results["pass"] += 1 for postreq in function_postreq.get(process_test_name, []): if postreq in name_to_id: job_id = name_to_id[postreq] print("Enabling", postreq, job_id) run_pool.enable_job(job_id) okaycolor = pass_color elif group == Tester.group_skip: results["skipped"] += 1 print(output_data.message) okaycolor = skip_color else: results["fail"] += 1 failed_list.append(Tester.get_group_name(group)+" "+process_test_name) print("Output of'"+process_test_name+"':") print(output_data.output) print(output_data.message) okaycolor = fail_color number_done = sum(results.values()) print("({done}/{togo}) {statcolor}{status:7s}{normcolor} ({time}) {namecolor}{test}{normcolor}" .format(done=number_done, togo=len(function_list), statcolor=okaycolor, normcolor=norm_color, namecolor=name_color, status=Tester.get_group_name(group), time=sec_format(output_data.runtime), test=process_test_name))
failed_list = [] output_list = run_pool.process_results(process_result) run_pool.wait() if results["fail"] > 0: print("{}FAILED:".format(Colors.fail)) for path in failed_list: print(path) print(Colors.norm) with open("test_report.csv", "w") as csv_report: csv_report.write(",".join(["name", "passed", "group", "time"]) + "\n") for result, test_name in zip(output_list, test_name_list): if result is not None: group_name = Tester.get_group_name(result.group) out_line = ",".join([ test_name, str(result.group == Tester.group_success), group_name, str(result.runtime) ]) else: out_line = ",".join( [test_name, str(False), "NO_PREREQ", str(0.0)]) csv_report.write(out_line + "\n") csv_report.close() print("PASSED: {}{}{}".format(Colors.okay, results["pass"], Colors.norm)) print("SKIPPED: {}{}{}".format(Colors.skip, results["skipped"], Colors.norm))