Create an MCP server pre-populated with nodes/edges matching Go testSnippetServer. * Writes a source file to tmp_dir/project/main.go. * Caller must free the server with cbm_mcp_server_free and * unlink the source file + rmdir manually. */
| 7240 | * Caller must free the server with cbm_mcp_server_free and |
| 7241 | * unlink the source file + rmdir manually. */ |
| 7242 | static cbm_mcp_server_t *setup_snippet_server(char *tmp_dir, size_t tmp_sz) { |
| 7243 | /* Create temp dir */ |
| 7244 | snprintf(tmp_dir, tmp_sz, "/tmp/cbm_snippet_test_XXXXXX"); |
| 7245 | if (!cbm_mkdtemp(tmp_dir)) |
| 7246 | return NULL; |
| 7247 | |
| 7248 | char proj_dir[512]; |
| 7249 | snprintf(proj_dir, sizeof(proj_dir), "%s/project", tmp_dir); |
| 7250 | cbm_mkdir(proj_dir); |
| 7251 | |
| 7252 | /* Write sample source file */ |
| 7253 | char src_path[512]; |
| 7254 | snprintf(src_path, sizeof(src_path), "%s/main.go", proj_dir); |
| 7255 | FILE *fp = fopen(src_path, "w"); |
| 7256 | if (!fp) |
| 7257 | return NULL; |
| 7258 | fprintf(fp, "package main\n" |
| 7259 | "\n" |
| 7260 | "func HandleRequest() error {\n" |
| 7261 | "\treturn nil\n" |
| 7262 | "}\n" |
| 7263 | "\n" |
| 7264 | "func ProcessOrder(id int) {\n" |
| 7265 | "\t// process\n" |
| 7266 | "}\n" |
| 7267 | "\n" |
| 7268 | "func Run() {\n" |
| 7269 | "\t// server\n" |
| 7270 | "}\n"); |
| 7271 | fclose(fp); |
| 7272 | |
| 7273 | /* Create server with in-memory store */ |
| 7274 | cbm_mcp_server_t *srv = cbm_mcp_server_new(NULL); |
| 7275 | if (!srv) |
| 7276 | return NULL; |
| 7277 | |
| 7278 | cbm_store_t *st = cbm_mcp_server_store(srv); |
| 7279 | if (!st) { |
| 7280 | cbm_mcp_server_free(srv); |
| 7281 | return NULL; |
| 7282 | } |
| 7283 | |
| 7284 | const char *proj_name = "test-project"; |
| 7285 | cbm_mcp_server_set_project(srv, proj_name); |
| 7286 | cbm_store_upsert_project(st, proj_name, proj_dir); |
| 7287 | |
| 7288 | /* Create nodes */ |
| 7289 | cbm_node_t n_hr = {0}; |
| 7290 | n_hr.project = proj_name; |
| 7291 | n_hr.label = "Function"; |
| 7292 | n_hr.name = "HandleRequest"; |
| 7293 | n_hr.qualified_name = "test-project.cmd.server.main.HandleRequest"; |
| 7294 | n_hr.file_path = "main.go"; |
| 7295 | n_hr.start_line = 3; |
| 7296 | n_hr.end_line = 5; |
| 7297 | n_hr.properties_json = "{\"signature\":\"func HandleRequest() error\"," |
| 7298 | "\"return_type\":\"error\"," |
| 7299 | "\"is_exported\":true}"; |
no test coverage detected