diff options
Diffstat (limited to 'addons/gut/result_exporter.gd')
| -rw-r--r-- | addons/gut/result_exporter.gd | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/addons/gut/result_exporter.gd b/addons/gut/result_exporter.gd new file mode 100644 index 0000000..3a529ed --- /dev/null +++ b/addons/gut/result_exporter.gd @@ -0,0 +1,111 @@ +# ------------------------------------------------------------------------------ +# 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() + +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.get_logger().get_errors().size() + props.warnings = gut.get_logger().get_warnings().size() + props.time = gut.get_gui().elapsed_time_as_str().replace('s', '') + 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 = JSON.print(dict, ' ') + + var f_result = _utils.write_file(path, json) + 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 = JSON.print(dict, ' ') + + var f_result = _utils.write_file(path, json) + if(f_result != OK): + var msg = str("Error: ", f_result, ". Could not create export file ", path) + _utils.get_logger().error(msg) + + return f_result |
