From f795d542f6ad5819aa0a59a8130f67452f191ea8 Mon Sep 17 00:00:00 2001 From: Jakub Wolniewicz <4850809+frizikk@users.noreply.github.com> Date: Tue, 14 Jul 2026 10:59:26 +0200 Subject: [PATCH] test(session-search): guard projected enrichment --- tests/test_hermes_state.py | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/tests/test_hermes_state.py b/tests/test_hermes_state.py index 9460e6bf2a046..67cad709cbf5c 100644 --- a/tests/test_hermes_state.py +++ b/tests/test_hermes_state.py @@ -677,9 +677,45 @@ class TestFTS5Search: ] assert all("context" in row and row["context"] for row in default) + def test_search_projection_skips_context_enrichment_queries(self, db): + db.create_session(session_id="s1", source="cli") + db.append_message("s1", role="user", content="before") + db.append_message("s1", role="assistant", content="projectionneedle") + db.append_message("s1", role="user", content="after") + statements = [] + read_conn = db._get_read_conn() or db._conn + traced_connections = [db._conn] + if read_conn is not db._conn: + traced_connections.append(read_conn) + for conn in traced_connections: + conn.set_trace_callback(statements.append) + def context_query_count(): + normalized = (" ".join(sql.upper().split()) for sql in statements) + return sum("WITH TARGET AS (" in sql for sql in normalized) + try: + projected = db.search_messages( + "projectionneedle", fields=("session_id", "snippet") + ) + assert len(projected) == 1 + assert context_query_count() == 0 + + full = db.search_messages( + "projectionneedle", fields=("session_id", "context") + ) + assert len(full) == 1 + assert full[0]["context"] + assert context_query_count() == 1 + + default = db.search_messages("projectionneedle") + assert len(default) == 1 + assert default[0]["context"] + assert context_query_count() == 2 + finally: + for conn in traced_connections: + conn.set_trace_callback(None) def test_sanitize_fts5_query_strips_dangerous_chars(self): """Unit test for _sanitize_fts5_query static method."""