mirror of
https://github.com/DeusData/codebase-memory-mcp.git
synced 2026-11-01 07:44:01 +08:00
test(mcp): ask for JSON where the coverage test asserts a JSON field
#1787 landed correct production code and a test that cannot pass on today's
main. The test is the only thing wrong, and only in how it asks.
check_index_coverage answers in the compact table by default, where a field
name never appears:
main.go main.go coverage_unavailable metadata_match read_source_and_reindex []
The test asserts on the JSON field spelling:
strstr(response, "\"freshness\":\"metadata_match\"")
Both halves are right; they were simply written against different response
formats. The branch was cut on 2026-09-02, before that default changed, and
was never rebased -- its CI green is from a main that no longer exists. The
neighbouring coverage tests already pass "format":"json" for exactly this
reason; this one predates them.
So the request gains format=json and the assertions are untouched. Asserting
the field rather than a bare strstr for "metadata_match" is what keeps the
check exact: the value also appears in the table's recommended_action column
and would be matched by any other path's row.
Verified: build/c/test-runner mcp -> 318 passed, 0 failed, 4 skipped. Before
this change the same suite reported 317 passed, 1 failed on identical
production code.
What this is NOT: a production defect. coverage_path_freshness on main uses
cbm_path_info_utf8, exactly as #1787 intended, and the Windows second-vs-
nanosecond truncation it fixes is gone. I checked that by reading origin/main
rather than the local checkout, which was stale at 59a05eb1 and still carried
the old helper -- that misreading briefly convinced me the merge had dropped
the fix, and it had not.
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
This commit is contained in:
+11
-4
@@ -5800,8 +5800,14 @@ TEST(tool_check_index_coverage_freshness_uses_indexer_mtime_source_issue1714) {
|
||||
info.size),
|
||||
CBM_STORE_OK);
|
||||
|
||||
char *response = cbm_mcp_handle_tool(
|
||||
srv, "check_index_coverage", "{\"project\":\"test-project\",\"paths\":[\"main.go\"]}");
|
||||
/* format=json, like every other coverage test here: the DEFAULT response is
|
||||
* the compact table, in which a field name never appears. Keeping the
|
||||
* assertion on the JSON field is what makes it exact — a bare strstr for
|
||||
* "metadata_match" would also be satisfied by a neighbouring column or by
|
||||
* another path's row. */
|
||||
char *response = cbm_mcp_handle_tool(srv, "check_index_coverage",
|
||||
"{\"project\":\"test-project\",\"paths\":[\"main.go\"],"
|
||||
"\"format\":\"json\"}");
|
||||
ASSERT_NOT_NULL(response);
|
||||
ASSERT_NOT_NULL(strstr(response, "\"freshness\":\"metadata_match\""));
|
||||
free(response);
|
||||
@@ -5815,8 +5821,9 @@ TEST(tool_check_index_coverage_freshness_uses_indexer_mtime_source_issue1714) {
|
||||
ASSERT_EQ(cbm_store_upsert_file_hash(store, "test-project", "main.go", "",
|
||||
seconds_mtime_ns, info.size),
|
||||
CBM_STORE_OK);
|
||||
response = cbm_mcp_handle_tool(
|
||||
srv, "check_index_coverage", "{\"project\":\"test-project\",\"paths\":[\"main.go\"]}");
|
||||
response = cbm_mcp_handle_tool(srv, "check_index_coverage",
|
||||
"{\"project\":\"test-project\",\"paths\":[\"main.go\"],"
|
||||
"\"format\":\"json\"}");
|
||||
ASSERT_NOT_NULL(response);
|
||||
ASSERT_NOT_NULL(strstr(response, "\"freshness\":\"metadata_changed\""));
|
||||
free(response);
|
||||
|
||||
Reference in New Issue
Block a user