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. */
| 7776 | * Caller must free the server with cbm_mcp_server_free and |
| 7777 | * unlink the source file + rmdir manually. */ |
| 7778 | static cbm_mcp_server_t *setup_snippet_server(char *tmp_dir, size_t tmp_sz) { |
| 7779 | /* Create temp dir */ |
| 7780 | snprintf(tmp_dir, tmp_sz, "/tmp/cbm_snippet_test_XXXXXX"); |
| 7781 | if (!cbm_mkdtemp(tmp_dir)) |
| 7782 | return NULL; |
| 7783 | |
| 7784 | char proj_dir[512]; |
| 7785 | snprintf(proj_dir, sizeof(proj_dir), "%s/project", tmp_dir); |
| 7786 | cbm_mkdir(proj_dir); |
| 7787 | |
| 7788 | /* Write sample source file */ |
| 7789 | char src_path[512]; |
| 7790 | snprintf(src_path, sizeof(src_path), "%s/main.go", proj_dir); |
| 7791 | FILE *fp = fopen(src_path, "w"); |
| 7792 | if (!fp) |
| 7793 | return NULL; |
| 7794 | fprintf(fp, "package main\n" |
| 7795 | "\n" |
| 7796 | "func HandleRequest() error {\n" |
| 7797 | "\treturn nil\n" |
| 7798 | "}\n" |
| 7799 | "\n" |
| 7800 | "func ProcessOrder(id int) {\n" |
| 7801 | "\t// process\n" |
| 7802 | "}\n" |
| 7803 | "\n" |
| 7804 | "func Run() {\n" |
| 7805 | "\t// server\n" |
| 7806 | "}\n"); |
| 7807 | fclose(fp); |
| 7808 | |
| 7809 | /* Create server with in-memory store */ |
| 7810 | cbm_mcp_server_t *srv = cbm_mcp_server_new(NULL); |
| 7811 | if (!srv) |
| 7812 | return NULL; |
| 7813 | |
| 7814 | cbm_store_t *st = cbm_mcp_server_store(srv); |
| 7815 | if (!st) { |
| 7816 | cbm_mcp_server_free(srv); |
| 7817 | return NULL; |
| 7818 | } |
| 7819 | |
| 7820 | const char *proj_name = "test-project"; |
| 7821 | cbm_mcp_server_set_project(srv, proj_name); |
| 7822 | cbm_store_upsert_project(st, proj_name, proj_dir); |
| 7823 | |
| 7824 | /* Create nodes */ |
| 7825 | cbm_node_t n_hr = {0}; |
| 7826 | n_hr.project = proj_name; |
| 7827 | n_hr.label = "Function"; |
| 7828 | n_hr.name = "HandleRequest"; |
| 7829 | n_hr.qualified_name = "test-project.cmd.server.main.HandleRequest"; |
| 7830 | n_hr.file_path = "main.go"; |
| 7831 | n_hr.start_line = 3; |
| 7832 | n_hr.end_line = 5; |
| 7833 | n_hr.properties_json = "{\"signature\":\"func HandleRequest() error\"," |
| 7834 | "\"return_type\":\"error\"," |
| 7835 | "\"is_exported\":true," |
no test coverage detected