fastmcp/tests/tasks/server/conftest.py

45 lines
1.5 KiB
Python

"""Configuration for server task tests."""
import secrets
from pathlib import Path
import pytest
from fastmcp.utilities.tests import temporary_settings
@pytest.fixture(autouse=True)
def reset_docket_memory_server():
"""Reset the shared memory:// Docket server between tests.
Docket keeps a process-wide ``Docket._memory_server`` singleton for
``memory://`` backends. It persists across tests and across event loops, so a
test that inherits a stale server from a previous loop can fail (e.g.
``tasks/get`` raising ``TypeError`` from the dead client). Clearing it before
and after each test keeps the task suite isolation-safe rather than
order-dependent.
"""
from docket import Docket
if hasattr(Docket, "_memory_server"):
delattr(Docket, "_memory_server")
yield
if hasattr(Docket, "_memory_server"):
delattr(Docket, "_memory_server")
@pytest.fixture(autouse=True)
def isolate_settings_home(_settings_home_root: Path):
"""Task-local override of the repo-wide ``isolate_settings_home`` fixture.
Docket configuration moved out of core ``Settings`` into
``fastmcp_tasks.settings.DocketSettings``, so the repo-wide fixture's
``docket__*`` kwargs no longer resolve against core settings. This
override keeps the per-test settings-home isolation while dropping the
removed docket kwargs.
"""
test_home = _settings_home_root / secrets.token_hex(8)
test_home.mkdir()
with temporary_settings(home=test_home, client_disconnect_timeout=1):
yield