1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
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
|