# ------------------------------------------------------------------------------ # Creates a structure that contains all the data about the results of running # tests. This was created to make an intermediate step organizing the result # of a run and exporting it in a specific format. This can also serve as a # unofficial GUT export format. # ------------------------------------------------------------------------------ var _utils = load('res://addons/gut/utils.gd').get_instance() var json = JSON.new() func _export_tests(summary_script): var to_return = {} var tests = summary_script.get_tests() for key in tests.keys(): to_return[key] = { "status":tests[key].get_status(), "passing":tests[key].pass_texts, "failing":tests[key].fail_texts, "pending":tests[key].pending_texts, "orphans":tests[key].orphans } return to_return # TODO # errors func _export_scripts(summary): if(summary == null): return {} var scripts = {} for s in summary.get_scripts(): scripts[s.name] = { 'props':{ "tests":s._tests.size(), "pending":s.get_pending_count(), "failures":s.get_fail_count(), }, "tests":_export_tests(s) } return scripts func _make_results_dict(): var result = { 'test_scripts':{ "props":{ "pending":0, "failures":0, "passing":0, "tests":0, "time":0, "orphans":0, "errors":0, "warnings":0 }, "scripts":[] } } return result # TODO # time # errors func get_results_dictionary(gut, include_scripts=true): var summary = gut.get_summary() var scripts = [] if(include_scripts): scripts = _export_scripts(summary) var result = _make_results_dict() if(summary != null): var totals = summary.get_totals() var props = result.test_scripts.props props.pending = totals.pending props.failures = totals.failing props.passing = totals.passing_tests props.tests = totals.tests props.errors = gut.logger.get_errors().size() props.warnings = gut.logger.get_warnings().size() props.time = gut.get_elapsed_time() props.orphans = gut.get_orphan_counter().get_counter('total') result.test_scripts.scripts = scripts return result func write_json_file(gut, path): var dict = get_results_dictionary(gut) var json_text = json.stringify(dict, ' ') var f_result = _utils.write_file(path, json_text) if(f_result != OK): var msg = str("Error: ", f_result, ". Could not create export file ", path) _utils.get_logger().error(msg) return f_result func write_summary_file(gut, path): var dict = get_results_dictionary(gut, false) var json_text = json.stringify(dict, ' ') var f_result = _utils.write_file(path, json_text) if(f_result != OK): var msg = str("Error: ", f_result, ". Could not create export file ", path) _utils.get_logger().error(msg) return f_result