| 4197 | } |
| 4198 | |
| 4199 | static void coverage_add_row_json(yyjson_mut_doc *doc, yyjson_mut_val *array, |
| 4200 | const cbm_coverage_row_t *row, const char *requested_path) { |
| 4201 | yyjson_mut_val *item = yyjson_mut_obj(doc); |
| 4202 | yyjson_mut_obj_add_strcpy(doc, item, "path", row->rel_path ? row->rel_path : ""); |
| 4203 | yyjson_mut_obj_add_strcpy(doc, item, "kind", row->kind ? row->kind : ""); |
| 4204 | yyjson_mut_obj_add_strcpy(doc, item, "detail", row->detail ? row->detail : ""); |
| 4205 | if (requested_path) { |
| 4206 | yyjson_mut_obj_add_str( |
| 4207 | doc, item, "match", |
| 4208 | row->rel_path && strcmp(row->rel_path, requested_path) == 0 ? "exact" : "ancestor"); |
| 4209 | } |
| 4210 | if (row->kind && strcmp(row->kind, "parse_partial") == 0) { |
| 4211 | coverage_add_ranges(doc, item, row->detail); |
| 4212 | } |
| 4213 | yyjson_mut_arr_add_val(array, item); |
| 4214 | } |
| 4215 | |
| 4216 | static const char *coverage_status(const cbm_coverage_row_t *rows, int count, |
| 4217 | const char *requested_path, const char *recording_status, |
no test coverage detected