Skip to content

Commit 65d958c

Browse files
kingpanther13claude
andcommitted
fix(test): create fresh server in code mode E2E fixture
The session-scoped mcp_server fixture is created before the module-scoped code_mode_enabled fixture can set ENABLE_CODE_MODE. Fix by creating a fresh HomeAssistantSmartMCPServer instance in the test fixture after the env var is set, and resetting the settings singleton so the new server reads the updated config. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent b3d5d5e commit 65d958c

1 file changed

Lines changed: 25 additions & 6 deletions

File tree

tests/src/e2e/tools/test_create_custom_tool.py

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,40 @@
3030
@pytest.fixture(scope="module")
3131
def code_mode_enabled(ha_container_with_fresh_config):
3232
"""Enable code mode feature flag for the test module."""
33+
old_val = os.environ.get(FEATURE_FLAG, "")
3334
os.environ[FEATURE_FLAG] = "true"
35+
# Reset cached settings so the new server reads the fresh env var
36+
import ha_mcp.config
37+
ha_mcp.config._settings = None
3438
logger.info("Code mode feature flag enabled")
3539
yield
36-
os.environ.pop(FEATURE_FLAG, None)
40+
os.environ["ENABLE_CODE_MODE"] = old_val
41+
ha_mcp.config._settings = None
42+
43+
44+
@pytest.fixture(scope="module")
45+
async def _code_mode_server(code_mode_enabled, ha_container_with_fresh_config):
46+
"""Create a single MCP server with code mode enabled for the module."""
47+
from ha_mcp.client.rest_client import HomeAssistantClient
48+
from ha_mcp.server import HomeAssistantSmartMCPServer
49+
from tests.test_constants import TEST_TOKEN
50+
51+
container_info = ha_container_with_fresh_config
52+
base_url = container_info["base_url"]
53+
client = HomeAssistantClient(base_url=base_url, token=TEST_TOKEN)
54+
server = HomeAssistantSmartMCPServer(client=client)
55+
yield server
3756

3857

3958
@pytest.fixture
40-
async def mcp_client_with_code_mode(code_mode_enabled, mcp_server):
41-
"""Create MCP client with code mode enabled."""
59+
async def mcp_client_with_code_mode(_code_mode_server):
60+
"""Create MCP client connected to the code-mode-enabled server."""
4261
from fastmcp import Client
4362

44-
client = Client(mcp_server.mcp)
45-
async with client:
63+
mcp_client = Client(_code_mode_server.mcp)
64+
async with mcp_client:
4665
logger.debug("FastMCP client with code mode connected")
47-
yield client
66+
yield mcp_client
4867

4968

5069
async def _check_tool_available(mcp_client) -> tuple[bool, str | None]:

0 commit comments

Comments
 (0)