-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
tester.gd
54 lines (47 loc) · 1.09 KB
/
tester.gd
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
extends Node
var current = null
var tests = []
var frame_time = 0.0
var fixed_time = 0.0
func _ready():
var dirs = ["tests"]
while not dirs.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:
current.queue_free()
current = null
func _end_tests():
print("Tests ends")
set_process(false)
set_physics_process(false)
get_tree().quit()
func _expand(p_name, r_dirs):
var dir = Directory.new()
dir.open("res://")
if dir.change_dir(p_name) != OK:
print("Unable to chdir into: %s" % p_name)
return
dir.list_dir_begin(true, true)
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()