from pathlib import Path from docforge.loaders import GriffeLoader, discover_module_paths from docforge import MCPRenderer def test_mcp_emits_all_modules(tmp_path: Path) -> None: project_root = Path(__file__).resolve().parents[3] loader = GriffeLoader() discovered_paths = discover_module_paths( "docforge", project_root=project_root, ) project = loader.load_project(discovered_paths) renderer = MCPRenderer() renderer.generate_sources(project, tmp_path) emitted = { p.relative_to(tmp_path).as_posix() for p in (tmp_path / "modules").rglob("*.json") } expected = { f"modules/{m.path}.json" for m in project.get_all_modules() } missing = expected - emitted assert not missing, f"Missing MCP module JSON files: {missing}" # also assert nav.json exists assert (tmp_path / "nav.json").exists()