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. */
| 15138 | * Caller must free the server with cbm_mcp_server_free and |
| 15139 | * unlink the source file + rmdir manually. */ |
| 15140 | static cbm_mcp_server_t *setup_snippet_server(char *tmp_dir, size_t tmp_sz) { |
| 15141 | /* Create temp dir */ |
| 15142 | snprintf(tmp_dir, tmp_sz, "/tmp/cbm_snippet_test_XXXXXX"); |
| 15143 | if (!cbm_mkdtemp(tmp_dir)) |
| 15144 | return NULL; |
| 15145 | |
| 15146 | char proj_dir[512]; |
| 15147 | snprintf(proj_dir, sizeof(proj_dir), "%s/project", tmp_dir); |
| 15148 | cbm_mkdir(proj_dir); |
| 15149 | |
| 15150 | /* Write sample source file */ |
| 15151 | char src_path[512]; |
| 15152 | snprintf(src_path, sizeof(src_path), "%s/main.go", proj_dir); |
| 15153 | FILE *fp = fopen(src_path, "w"); |
| 15154 | if (!fp) |
| 15155 | return NULL; |
| 15156 | fprintf(fp, "package main\n" |
| 15157 | "\n" |
| 15158 | "func HandleRequest() error {\n" |
| 15159 | "\treturn nil\n" |
| 15160 | "}\n" |
| 15161 | "\n" |
| 15162 | "func ProcessOrder(id int) {\n" |
| 15163 | "\t// process\n" |
| 15164 | "}\n" |
| 15165 | "\n" |
| 15166 | "func Run() {\n" |
| 15167 | "\t// server\n" |
| 15168 | "}\n"); |
| 15169 | fclose(fp); |
| 15170 | |
| 15171 | /* Create server with in-memory store */ |
| 15172 | cbm_mcp_server_t *srv = cbm_mcp_server_new(NULL); |
| 15173 | if (!srv) |
| 15174 | return NULL; |
| 15175 | |
| 15176 | cbm_store_t *st = cbm_mcp_server_store(srv); |
| 15177 | if (!st) { |
| 15178 | cbm_mcp_server_free(srv); |
| 15179 | return NULL; |
| 15180 | } |
| 15181 | |
| 15182 | const char *proj_name = "test-project"; |
| 15183 | cbm_mcp_server_set_project(srv, proj_name); |
| 15184 | cbm_store_upsert_project(st, proj_name, proj_dir); |
| 15185 | |
| 15186 | /* Create nodes */ |
| 15187 | cbm_node_t n_hr = {0}; |
| 15188 | n_hr.project = proj_name; |
| 15189 | n_hr.label = "Function"; |
| 15190 | n_hr.name = "HandleRequest"; |
| 15191 | n_hr.qualified_name = "test-project.cmd.server.main.HandleRequest"; |
| 15192 | n_hr.file_path = "main.go"; |
| 15193 | n_hr.start_line = 3; |
| 15194 | n_hr.end_line = 5; |
| 15195 | n_hr.properties_json = "{\"signature\":\"func HandleRequest() error\"," |
| 15196 | "\"return_type\":\"error\"," |
| 15197 | "\"is_exported\":true," |
no test coverage detected