test: add 106 unit + smoke tests, 93% coverage

- pytest + respx + pytest-cov added as dev dependencies
- tests/smoke/test_registration.py: verify all 66 tools registered and unique
- tests/unit/: 12 files covering every tool — HTTP method, URL, params/body, errors
- tests/config.test.json + conftest.py: zero-network test setup via GITEA_CONFIG
- CLAUDE.md: developer guide with testing philosophy, pyramid, and commands
- server/gitea_mcp.py: get_commit, list_pr_files tools added
- README.md: tool count corrected to 66
This commit is contained in:
2026-06-08 09:09:44 +03:00
parent 50cd8e85e6
commit a6162a855c
23 changed files with 1722 additions and 4 deletions
+27
View File
@@ -0,0 +1,27 @@
import asyncio
from server.gitea_mcp import mcp
EXPECTED_TOOL_COUNT = 66
def test_all_tools_registered():
tools = asyncio.run(mcp.list_tools())
names = sorted(t.name for t in tools)
assert len(tools) == EXPECTED_TOOL_COUNT, (
f"Expected {EXPECTED_TOOL_COUNT} tools, found {len(tools)}.\n"
f"Tools: {names}"
)
def test_tool_names_unique():
tools = asyncio.run(mcp.list_tools())
names = [t.name for t in tools]
assert len(names) == len(set(names)), (
f"Duplicate tool names: {[n for n in names if names.count(n) > 1]}"
)
def test_all_tools_have_description():
tools = asyncio.run(mcp.list_tools())
missing = [t.name for t in tools if not t.description]
assert not missing, f"Tools without description: {missing}"