mirror of
https://github.com/nesquena/hermes-webui.git
synced 2026-05-30 21:50:16 +00:00
ci: install mcp + pytest-asyncio in CI; importorskip in test_mcp_server.py
CI failed on stage-323 because: 1. mcp_server.py imports the 'mcp' package (optional runtime dep) — only users who actually run the MCP integration install it. CI runs with stdlib-only deps (pyyaml + pytest + pytest-timeout). 2. tests/test_mcp_server.py uses pytest.mark.asyncio which requires pytest-asyncio — not installed in CI. Fix: - Add pytest-asyncio to CI install line. - Try-install mcp; if it fails (Python 3.13 wheel issues, etc.) the test module uses pytest.importorskip and skips cleanly without breaking the matrix. - tests/test_mcp_server.py: add module-level importorskip for both 'mcp' and 'pytest_asyncio' as a safety net. Local: 4947/4947 still pass after change.
This commit is contained in:
@@ -24,7 +24,14 @@ jobs:
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
python -m pip install --upgrade pip
|
||||
pip install pyyaml>=6.0 pytest pytest-timeout
|
||||
pip install pyyaml>=6.0 pytest pytest-timeout pytest-asyncio
|
||||
# Install the `mcp` package so tests/test_mcp_server.py runs in CI.
|
||||
# The package is an optional runtime dep of mcp_server.py — users
|
||||
# who run the MCP integration install it themselves; CI installs
|
||||
# it so test coverage exists. If mcp install fails (Python 3.13
|
||||
# wheel not yet available, etc.), tests/test_mcp_server.py uses
|
||||
# importorskip and the matrix stays green.
|
||||
pip install mcp || echo "mcp install failed — test_mcp_server.py will importorskip"
|
||||
|
||||
- name: Run tests
|
||||
run: pytest tests/ -v --timeout=60
|
||||
|
||||
@@ -17,6 +17,17 @@ from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
# Skip the entire module when the optional `mcp` package isn't installed.
|
||||
# CI runs with stdlib-only deps (pyyaml + pytest + pytest-timeout), and the
|
||||
# `mcp` package is only required for users who actually run the MCP server.
|
||||
# Locally with `pip install mcp pytest-asyncio` these tests run; on CI they
|
||||
# skip cleanly without breaking the matrix.
|
||||
pytest.importorskip("mcp", reason="mcp package not installed (optional MCP server dep)")
|
||||
|
||||
# pytest-asyncio is also optional but always installed alongside mcp tests
|
||||
# in our local runs. If absent, importorskip the asyncio plugin gracefully.
|
||||
pytest.importorskip("pytest_asyncio", reason="pytest-asyncio required for MCP server tests")
|
||||
|
||||
pytestmark = pytest.mark.asyncio
|
||||
|
||||
# ── Ensure repo root on path ──────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user