Go table-driven tests
When adding tests in this codebase:
Stay offline. Use
mockllm+memfs(or at.TempDir()for file-backed adapters). Never hit a live model or the network in a test.Prefer table-driven cases for any behaviour with multiple inputs:
func TestThing(t *testing.T) { cases := []struct { name string in string want string }{ {name: "empty", in: "", want: ""}, {name: "basic", in: "x", want: "X"}, } for _, tc := range cases { t.Run(tc.name, func(t *testing.T) { if got := Thing(tc.in); got != tc.want { t.Errorf("Thing(%q) = %q, want %q", tc.in, got, tc.want) } }) } }Assert error results, not panics. Tool-level failures come back as an error
ToolResult(res.IsError), not a Go error — check the result.Run the suite with
task test(which uses-race).