MCPunk

  • tests
import hashlib from collections.abc import Generator from pathlib import Path import pytest from mcpunk.dependencies import deps from mcpunk.settings import Settings @pytest.fixture(scope="function", autouse=True) def fiddle_settings() -> Generator[None, None, None]: """Fiddle misc settings for consistency in testing.""" settings = Settings( include_chars_in_response=False, file_watch_refresh_freq_seconds=0.0, ) with deps.override(settings_partial=settings): yield @pytest.fixture def test_id(request: pytest.FixtureRequest) -> str: """A (probably) unique ID for each test""" test_hash = hashlib.md5(request.node.nodeid.encode()).hexdigest() # noqa: S324 assert len(test_hash) == 32 return f"{request.node.name[: (60 - len(test_hash) - 1)]}_{test_hash}" class FileSet: def __init__(self, root: Path) -> None: self.root = root def add_file(self, fname: str, src: str) -> None: new_path = self.root / fname new_path.parent.mkdir(parents=True, exist_ok=True) new_path.write_text(src) @pytest.fixture def basic_file_set(tmp_path_factory: pytest.TempPathFactory) -> FileSet: """A basic file set with two files.""" tmp_path = tmp_path_factory.mktemp("test") fs = FileSet(tmp_path) fs.add_file("a.py", "a=1") fs.add_file("b.py", "b=2\ndef f(a: int=1):\n return a") return fs