Stub llm_core via monkeypatch.setitem so the cross-tenant test does not leak its fake into later test modules

This commit is contained in:
afonsopc
2026-06-05 00:04:15 +01:00
parent 1801ba9a0d
commit 9be2862e4e

View File

@@ -32,16 +32,20 @@ def _load_extractor():
return mod
def _install_llm_stub(facts_json):
def _install_llm_stub(monkeypatch, facts_json):
mod = types.ModuleType("src.llm_core")
async def llm_call_async(*a, **k):
return facts_json
mod.llm_call_async = llm_call_async
# Use monkeypatch.setitem so sys.modules is restored at teardown. A raw
# assignment here permanently replaced the real src.llm_core with this
# stripped stub, leaking "My home is in Lisbon" (and hiding _detect_provider)
# into every later-collected test that imports the real module.
src_pkg = sys.modules.get("src") or types.ModuleType("src")
sys.modules["src"] = src_pkg
sys.modules["src.llm_core"] = mod
monkeypatch.setitem(sys.modules, "src", src_pkg)
monkeypatch.setitem(sys.modules, "src.llm_core", mod)
class FakeSession:
@@ -95,7 +99,7 @@ def test_vector_match_from_other_tenant_does_not_drop_users_fact(monkeypatch):
])
# The vector store reports user B's new fact as a near-duplicate of a1.
vec = FakeVector(match_id="a1")
_install_llm_stub('["My home is in Lisbon"]')
_install_llm_stub(monkeypatch, '["My home is in Lisbon"]')
memory_extractor = _load_extractor()