(t *testing.T)
| 157 | } |
| 158 | |
| 159 | func TestCodeModeTool_CallEcho(t *testing.T) { |
| 160 | t.Parallel() |
| 161 | type EchoArgs struct { |
| 162 | Message string `json:"message" jsonschema:"Message to echo"` |
| 163 | } |
| 164 | |
| 165 | tool := Wrap(&testToolSet{ |
| 166 | tools: []tools.Tool{{ |
| 167 | Name: "echo", |
| 168 | Handler: tools.NewHandler(func(ctx context.Context, args map[string]any) (*tools.ToolCallResult, error) { |
| 169 | return tools.ResultSuccess("ECHO"), nil |
| 170 | }), |
| 171 | Parameters: tools.MustSchemaFor[EchoArgs](), |
| 172 | }}, |
| 173 | }) |
| 174 | |
| 175 | allTools, err := tool.Tools(t.Context()) |
| 176 | require.NoError(t, err) |
| 177 | require.Len(t, allTools, 1) |
| 178 | |
| 179 | result, err := allTools[0].Handler(t.Context(), tools.ToolCall{ |
| 180 | Function: tools.FunctionCall{ |
| 181 | Arguments: `{"script":"return echo({'message':'ECHO'});"}`, |
| 182 | }, |
| 183 | }) |
| 184 | require.NoError(t, err) |
| 185 | |
| 186 | var scriptResult ScriptResult |
| 187 | err = json.Unmarshal([]byte(result.Output), &scriptResult) |
| 188 | require.NoError(t, err) |
| 189 | |
| 190 | require.Equal(t, "ECHO", scriptResult.Value) |
| 191 | require.Empty(t, scriptResult.StdErr) |
| 192 | require.Empty(t, scriptResult.StdOut) |
| 193 | } |
| 194 | |
| 195 | // TestCodeModeTool_StartRollsBackOnError verifies that when one toolset fails |
| 196 | // to start, all successfully-started toolsets are stopped (rolled back). |
nothing calls this directly
no test coverage detected