| 148 | } |
| 149 | |
| 150 | static bool cross_repo_exec(const cross_repo_fixture_t *fixture, const char *project, |
| 151 | const char *sql) { |
| 152 | char path[512]; |
| 153 | if (!cross_repo_project_path(fixture, project, path, sizeof(path))) { |
| 154 | return false; |
| 155 | } |
| 156 | cbm_store_t *store = cbm_store_open_path_existing(path); |
| 157 | if (!store) { |
| 158 | return false; |
| 159 | } |
| 160 | char *error = NULL; |
| 161 | int rc = sqlite3_exec(cbm_store_get_db(store), sql, NULL, NULL, &error); |
| 162 | sqlite3_free(error); |
| 163 | cbm_store_close(store); |
| 164 | return rc == SQLITE_OK; |
| 165 | } |
| 166 | |
| 167 | static int cross_repo_count_edges(const cross_repo_fixture_t *fixture, const char *project, |
| 168 | const char *edge_type) { |
no test coverage detected