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_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(): # bbcode_text appears to be empty. I'm not 100% sure why. Until that is # figured out we have to just get the text which stinks. var content = _gut.get_gui().get_text_box().text 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_summary_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