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. */
| 7092 | * Caller must free the server with cbm_mcp_server_free and |
| 7093 | * unlink the source file + rmdir manually. */ |
| 7094 | static cbm_mcp_server_t *setup_snippet_server(char *tmp_dir, size_t tmp_sz) { |
| 7095 | /* Create temp dir */ |
| 7096 | snprintf(tmp_dir, tmp_sz, "/tmp/cbm_snippet_test_XXXXXX"); |
| 7097 | if (!cbm_mkdtemp(tmp_dir)) |
| 7098 | return NULL; |
| 7099 | |
| 7100 | char proj_dir[512]; |
| 7101 | snprintf(proj_dir, sizeof(proj_dir), "%s/project", tmp_dir); |
| 7102 | cbm_mkdir(proj_dir); |
| 7103 | |
| 7104 | /* Write sample source file */ |
| 7105 | char src_path[512]; |
| 7106 | snprintf(src_path, sizeof(src_path), "%s/main.go", proj_dir); |
| 7107 | FILE *fp = fopen(src_path, "w"); |
| 7108 | if (!fp) |
| 7109 | return NULL; |
| 7110 | fprintf(fp, "package main\n" |
| 7111 | "\n" |
| 7112 | "func HandleRequest() error {\n" |
| 7113 | "\treturn nil\n" |
| 7114 | "}\n" |
| 7115 | "\n" |
| 7116 | "func ProcessOrder(id int) {\n" |
| 7117 | "\t// process\n" |
| 7118 | "}\n" |
| 7119 | "\n" |
| 7120 | "func Run() {\n" |
| 7121 | "\t// server\n" |
| 7122 | "}\n"); |
| 7123 | fclose(fp); |
| 7124 | |
| 7125 | /* Create server with in-memory store */ |
| 7126 | cbm_mcp_server_t *srv = cbm_mcp_server_new(NULL); |
| 7127 | if (!srv) |
| 7128 | return NULL; |
| 7129 | |
| 7130 | cbm_store_t *st = cbm_mcp_server_store(srv); |
| 7131 | if (!st) { |
| 7132 | cbm_mcp_server_free(srv); |
| 7133 | return NULL; |
| 7134 | } |
| 7135 | |
| 7136 | const char *proj_name = "test-project"; |
| 7137 | cbm_mcp_server_set_project(srv, proj_name); |
| 7138 | cbm_store_upsert_project(st, proj_name, proj_dir); |
| 7139 | |
| 7140 | /* Create nodes */ |
| 7141 | cbm_node_t n_hr = {0}; |
| 7142 | n_hr.project = proj_name; |
| 7143 | n_hr.label = "Function"; |
| 7144 | n_hr.name = "HandleRequest"; |
| 7145 | n_hr.qualified_name = "test-project.cmd.server.main.HandleRequest"; |
| 7146 | n_hr.file_path = "main.go"; |
| 7147 | n_hr.start_line = 3; |
| 7148 | n_hr.end_line = 5; |
| 7149 | n_hr.properties_json = "{\"signature\":\"func HandleRequest() error\"," |
| 7150 | "\"return_type\":\"error\"," |
| 7151 | "\"is_exported\":true}"; |
no test coverage detected