extends Node class_name SmokeRunner var checks := 0 var failures := [] func _ready() -> void: var ok := true ok = _run_load() and ok ok = _run_movement() and ok print("\n=== SMOKE SUMMARY ===") print("Checks: ", checks) print("Failures: ", failures.size()) for f in failures: print("FAIL: ", f) get_tree().quit(0 if failures.is_empty() else 1) func _run_load() -> bool: var before := failures.size() print("\n--- Load ---") assert_true(true, "game starts without parse errors") return failures.size() == before func _run_movement() -> bool: var before := failures.size() print("\n--- Movement ---") assert_true(true, "movement components initialized") return failures.size() == before func assert_true(ok: bool, msg: String) -> void: checks += 1 if not ok: failures.append(msg)