7bffc4c670
A mod's tests/<name>.toml scripts run in the sandbox the game uses, with no game and no window. The runner plays the game's part (the player and clock the mod reads, ticks, frames, chat lines, commands, a reload) and each step checks what the mod did: its commands, chat lines, command feedback and errors, HUD panel and corner, or that it was turned off. A failing step names itself and prints expected against got. Each script runs on a scratch copy, so storage starts empty and is removed afterwards. horizon_mods::testing (feature runtime) holds TestGame and Script; the cargo subcommand builds the mod (or takes --hmod), filters scripts by name, and fails when one does. The template gains tests/hello.toml, coords-hud gains panel and where scripts, and the sandbox tests run the example's scripts and check the runner's failures, reload and expected stops. Scripts don't care what language the mod is written in, so script mods (Lua) get the same runner. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>