extends SceneTree ## Headless smoke test: ## /Applications/Godot.app/Contents/MacOS/Godot --headless --path . --script tests/smoke.gd ## Registry finds content, game boots, car drives forward under throttle. func _initialize() -> void: _run() func _run() -> void: var cars := Registry.cars() var levels := Registry.levels() assert(not cars.is_empty(), "no cars found") assert(not levels.is_empty(), "no levels found") for p in cars.values(): var s: CarStats = load(p) assert(s != null and s.engine_power > 0.0, "bad stats: %s" % p) Game.car_path = cars.values()[0] Game.level_path = levels.values()[0] var game: Game = (load("res://src/game.tscn") as PackedScene).instantiate() root.add_child(game) await process_frame # _ready doesn't run until the main loop starts var start: Vector3 = game.car.global_position Input.action_press("throttle") for i in 180: await physics_frame var dist := start.distance_to(game.car.global_position) assert(dist > 5.0, "car didn't move (%.1f m)" % dist) print("smoke ok: %d cars, %d levels, drove %.1f m, %.0f km/h" % [cars.size(), levels.size(), dist, game.car.speed_kmh()]) quit(0)