Skip to content

Commit d714dd0

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 d714dd0

1 file changed

Lines changed: 21 additions & 7 deletions

File tree

tests/src/e2e/tools/test_create_custom_tool.py

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,21 +30,35 @@
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
3742

3843

3944
@pytest.fixture
40-
async def mcp_client_with_code_mode(code_mode_enabled, mcp_server):
41-
"""Create MCP client with code mode enabled."""
45+
async def mcp_client_with_code_mode(code_mode_enabled, ha_container_with_fresh_config):
46+
"""Create MCP client with a fresh server that has code mode enabled."""
4247
from fastmcp import Client
4348

44-
client = Client(mcp_server.mcp)
45-
async with client:
46-
logger.debug("FastMCP client with code mode connected")
47-
yield client
49+
from ha_mcp.client.rest_client import HomeAssistantClient
50+
from ha_mcp.server import HomeAssistantSmartMCPServer
51+
from tests.test_constants import TEST_TOKEN
52+
53+
container_info = ha_container_with_fresh_config
54+
base_url = container_info["base_url"]
55+
client = HomeAssistantClient(base_url=base_url, token=TEST_TOKEN)
56+
server = HomeAssistantSmartMCPServer(client=client)
57+
58+
mcp_client = Client(server.mcp)
59+
async with mcp_client:
60+
logger.debug("FastMCP client with code mode connected (fresh server)")
61+
yield mcp_client
4862

4963

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

0 commit comments

Comments
 (0)