fix(tests): clean agent loop import stubs

This commit is contained in:
nubs
2026-06-04 02:44:49 +00:00
committed by GitHub
parent 03dbf976a5
commit 37e1d401cf

View File

@@ -4,22 +4,57 @@ and _append_tool_results. Uses mock imports to avoid loading the full app stack.
import sys
from unittest.mock import MagicMock
# Mock heavy dependencies before importing
for mod in [
_MOCKED_IMPORTS = [
'sqlalchemy', 'sqlalchemy.orm', 'sqlalchemy.ext', 'sqlalchemy.ext.declarative',
'sqlalchemy.ext.hybrid', 'sqlalchemy.sql', 'sqlalchemy.sql.expression',
'src.database',
'src.agent_tools',
'core.models', 'core.database',
]:
if mod not in sys.modules:
sys.modules[mod] = MagicMock()
]
_INJECTED_IMPORT_STUBS = {}
_PREEXISTING_AGENT_LOOP = sys.modules.get("src.agent_loop")
from src.agent_loop import (
_detect_admin_intent,
_compute_final_metrics,
_append_tool_results,
)
def _drop_module_if_same(name, expected):
if sys.modules.get(name) is expected:
sys.modules.pop(name, None)
parent_name, _, attr = name.rpartition(".")
parent = sys.modules.get(parent_name)
if parent is not None and getattr(parent, "__dict__", {}).get(attr) is expected:
delattr(parent, attr)
# Mock heavy dependencies before importing. Only clean up stubs this file
# created so pre-existing conftest/pytest modules keep their intended state.
for mod in _MOCKED_IMPORTS:
if mod not in sys.modules:
stub = MagicMock()
sys.modules[mod] = stub
_INJECTED_IMPORT_STUBS[mod] = stub
_IMPORTED_AGENT_LOOP = None
try:
from src.agent_loop import (
_detect_admin_intent,
_compute_final_metrics,
_append_tool_results,
)
_IMPORTED_AGENT_LOOP = sys.modules.get("src.agent_loop")
finally:
if _PREEXISTING_AGENT_LOOP is None and _IMPORTED_AGENT_LOOP is not None:
_drop_module_if_same("src.agent_loop", _IMPORTED_AGENT_LOOP)
for _mod, _stub in _INJECTED_IMPORT_STUBS.items():
_drop_module_if_same(_mod, _stub)
def test_import_stubs_do_not_leak_into_later_tests():
leaked = [
mod for mod, stub in _INJECTED_IMPORT_STUBS.items()
if sys.modules.get(mod) is stub
]
assert leaked == []
if _PREEXISTING_AGENT_LOOP is None:
assert sys.modules.get("src.agent_loop") is not _IMPORTED_AGENT_LOOP
# ---------------------------------------------------------------------------