Archived
1
0
Fork 0
This repository has been archived on 2026-01-19. You can view files and clone it, but cannot push or open issues or pull requests.
Danmaku/client/test_suite/tester.gd

56 lines
1.2 KiB
GDScript

extends Node
var current = null
var tests = []
var frame_time = 0.0
var fixed_time = 0.0
var dirs = ["tests"]
func _ready():
while not dirs.is_empty():
var d = dirs.pop_front()
_expand(d, dirs)
print("Running %d tests:\n%s" % [tests.size(), tests])
func _process(delta):
frame_time += delta
_check_end()
func _physics_process(delta):
fixed_time += delta
_check_end()
func _check_end():
if current == null:
if tests.size() == 0:
_end_tests()
return
current = load(tests.pop_front()).new()
add_child(current)
elif current._quit:
if not current._success:
_end_tests()
current.queue_free()
current = null
func _end_tests():
print("======= TESTS END")
set_process(false)
set_physics_process(false)
await get_tree().create_timer(1.0).timeout
get_tree().call_deferred("quit")
func _expand(p_name, r_dirs):
var dir = DirAccess.open("res://")
if dir.change_dir(p_name) != OK:
print("Unable to chdir into: %s" % p_name)
return
dir.list_dir_begin()
var f = dir.get_next()
while f != "":
if dir.current_is_dir():
r_dirs.append("%s/%s" % [p_name, f])
if f.ends_with("_test.gd"):
tests.append("%s/%s" % [p_name, f])
f = dir.get_next()
dir.list_dir_end()