blob: 608fc2681ff9497d1d84dfcb4b6a16bbc791f30c (
plain)
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
|
extends Node2D
var Gut = load('res://addons/gut/gut.gd')
var ResultExporter = load('res://addons/gut/result_exporter.gd')
var GutConfig = load('res://addons/gut/gut_config.gd')
const RUNNER_JSON_PATH = 'res://.gut_editor_config.json'
const RESULT_FILE = 'user://.gut_editor.bbcode'
const RESULT_JSON = 'user://.gut_editor.json'
var _gut_config = null
var _gut = null;
var _wrote_results = false
# Flag for when this is being used at the command line. Otherwise it is
# assumed this is being used by the panel and being launched with
# play_custom_scene
var _cmdln_mode = false
onready var _gut_layer = $GutLayer
func _ready():
if(_gut_config == null):
_gut_config = GutConfig.new()
_gut_config.load_panel_options(RUNNER_JSON_PATH)
# The command line will call run_tests on its own. When used from the panel
# we have to kick off the tests ourselves b/c there's no way I know of to
# interact with the scene that was run via play_custom_scene.
if(!_cmdln_mode):
call_deferred('run_tests')
func run_tests():
if(_gut == null):
_gut = Gut.new()
_gut.set_add_children_to(self)
if(_gut_config.options.gut_on_top):
_gut_layer.add_child(_gut)
else:
add_child(_gut)
if(!_cmdln_mode):
_gut.connect('tests_finished', self, '_on_tests_finished',
[_gut_config.options.should_exit, _gut_config.options.should_exit_on_success])
_gut_config.config_gut(_gut)
if(_gut_config.options.gut_on_top):
_gut.get_gui().goto_bottom_right_corner()
var run_rest_of_scripts = _gut_config.options.unit_test_name == ''
_gut.test_scripts(run_rest_of_scripts)
func _write_results():
var content = _gut.get_logger().get_gui_bbcode()
var f = File.new()
var result = f.open(RESULT_FILE, f.WRITE)
if(result == OK):
f.store_string(content)
f.close()
else:
print('ERROR Could not save bbcode, result = ', result)
var exporter = ResultExporter.new()
var f_result = exporter.write_json_file(_gut, RESULT_JSON)
_wrote_results = true
func _exit_tree():
if(!_wrote_results and !_cmdln_mode):
_write_results()
func _on_tests_finished(should_exit, should_exit_on_success):
_write_results()
if(should_exit):
get_tree().quit()
elif(should_exit_on_success and _gut.get_fail_count() == 0):
get_tree().quit()
func get_gut():
if(_gut == null):
_gut = Gut.new()
return _gut
func set_gut_config(which):
_gut_config = which
func set_cmdln_mode(is_it):
_cmdln_mode = is_it
|