from __future__ import annotations import asyncio import pytest from personal_mcp import mcp as mcp_module def _listed_tool_names() -> set[str]: tools = asyncio.run(mcp_module.mcp.list_tools()) return {tool.name for tool in tools} @pytest.fixture def listed_tool_names() -> set[str]: return _listed_tool_names() def test_canonical_step6_tools_are_listed(listed_tool_names: set[str]) -> None: assert { "list_resources", "read_resource", "search_patterns", "get_pattern_by_id", "get_skill_document_by_id", "search_prompts", "get_prompt_by_id", }.issubset(listed_tool_names) def test_catalog_compatibility_alias_tools_are_listed( listed_tool_names: set[str], ) -> None: assert { "catalog_search_patterns", "catalog_get_pattern_by_id", "catalog_get_skill_document_by_id", "catalog_search_prompts", "catalog_get_prompt_by_id", }.issubset(listed_tool_names) @pytest.mark.parametrize( "skill_id", [mcp_module.REGISTRY.skills_in_load_order[0], "missing-step6-skill"], ) def test_skill_document_alias_matches_canonical_payload(skill_id: str) -> None: canonical = mcp_module.get_skill_document_by_id(skill_id) alias = mcp_module.catalog_get_skill_document_by_id(skill_id) assert alias == canonical def test_search_and_pattern_aliases_match_canonical_payloads() -> None: search_canonical = mcp_module.search_patterns( query="mcp", tags=[], skip=0, limit=5, ) search_alias = mcp_module.catalog_search_patterns( query="mcp", tags=[], skip=0, limit=5, ) assert search_alias == search_canonical sample_skill_id = mcp_module.REGISTRY.skills_in_load_order[0] pattern_canonical = mcp_module.get_pattern_by_id(sample_skill_id) pattern_alias = mcp_module.catalog_get_pattern_by_id(sample_skill_id) assert pattern_alias == pattern_canonical def test_prompt_aliases_match_canonical_payloads() -> None: search_canonical = mcp_module.search_prompts( query="test", tags=[], skip=0, limit=5, ) search_alias = mcp_module.catalog_search_prompts( query="test", tags=[], skip=0, limit=5, ) assert search_alias == search_canonical sample_prompt_id = mcp_module.REGISTRY.prompts_in_load_order[0] prompt_canonical = mcp_module.get_prompt_by_id(sample_prompt_id) prompt_alias = mcp_module.catalog_get_prompt_by_id(sample_prompt_id) assert prompt_alias == prompt_canonical