chore: add GUT test framework
This commit is contained in:
75
addons/gut/scenes/TestGutControl.gd
Normal file
75
addons/gut/scenes/TestGutControl.gd
Normal file
@@ -0,0 +1,75 @@
|
||||
extends Node2D
|
||||
@onready var _gut_control = $GutControl
|
||||
|
||||
var _current_script_object = null
|
||||
var _current_test_name = null
|
||||
|
||||
|
||||
func _ready():
|
||||
_gut_control.load_config_file('res://test/resources/GutControlDirs/gut_control_config.json')
|
||||
|
||||
# Returns a gut_config.gd instance.
|
||||
var config = _gut_control.get_config()
|
||||
# Override soecific values for the purposes of this
|
||||
# scene. You can see all the options available in
|
||||
# the default_options dictionary in gut_config.gd
|
||||
config.options.should_exit = false
|
||||
config.options.compact_mode = false
|
||||
|
||||
call_deferred('_post_ready_setup')
|
||||
|
||||
|
||||
func _post_ready_setup():
|
||||
var gut = _gut_control.get_gut()
|
||||
gut.start_run.connect(_on_gut_run_start)
|
||||
|
||||
gut.start_script.connect(_on_gut_start_script)
|
||||
gut.end_script.connect(_on_gut_end_script)
|
||||
|
||||
gut.start_test.connect(_on_gut_start_test)
|
||||
gut.end_test.connect(_on_gut_end_test)
|
||||
|
||||
gut.end_run.connect(_on_gut_run_end)
|
||||
|
||||
|
||||
func _on_gut_run_start():
|
||||
print('Starting tests')
|
||||
|
||||
|
||||
# This signal passes a TestCollector.gd/TestScript instance
|
||||
func _on_gut_start_script(script_obj):
|
||||
print(script_obj.get_full_name(), ' has ', script_obj.tests.size(), ' tests')
|
||||
_current_script_object = script_obj
|
||||
|
||||
|
||||
func _on_gut_end_script():
|
||||
var pass_count = 0
|
||||
for test in _current_script_object.tests:
|
||||
if(test.did_pass()):
|
||||
pass_count += 1
|
||||
print(pass_count, '/', _current_script_object.tests.size(), " passed\n")
|
||||
_current_script_object = null
|
||||
|
||||
|
||||
func _on_gut_start_test(test_name):
|
||||
_current_test_name = test_name
|
||||
print(' ', test_name)
|
||||
|
||||
|
||||
func _on_gut_end_test():
|
||||
# get_test_named returns a TestCollector.gd/Test instance for the name
|
||||
# passed in.
|
||||
var test_object = _current_script_object.get_test_named(_current_test_name)
|
||||
var status = "failed"
|
||||
if(test_object.did_pass()):
|
||||
status = "passed"
|
||||
elif(test_object.pending):
|
||||
status = "pending"
|
||||
|
||||
print(' ', status)
|
||||
_current_test_name = null
|
||||
|
||||
|
||||
func _on_gut_run_end():
|
||||
print('Tests Done')
|
||||
#
|
||||
Reference in New Issue
Block a user