"""Shared pytest configuration — runs before any test module is imported. Patches MCPToolAdapter at the sys.modules level so that importing backend.agent.coding_agent never tries to start real MCP subprocess servers. """ import sys from unittest.mock import AsyncMock, MagicMock # Build a fake adapter instance whose async methods return immediately. _mock_adapter = MagicMock() _mock_adapter.initialize_all_servers = AsyncMock(return_value=None) _mock_adapter.get_all_tools = MagicMock(return_value=[]) _mock_adapter.call_tool = AsyncMock(return_value=MagicMock(isError=False, content=[])) # Wrap as a class mock: calling MCPToolAdapter() returns _mock_adapter. _mock_adapter_cls = MagicMock(return_value=_mock_adapter) # Inject before any test imports coding_agent so the module-level # asyncio.run(adapter.initialize_all_servers()) uses the mock. sys.modules.setdefault( "backend.agent.mcp_server_adapter", MagicMock(MCPToolAdapter=_mock_adapter_cls), )