andrewyng--aisuite
78 行
2.1 KiB
Python
78 行
2.1 KiB
Python
"""
|
|
Pytest fixtures for MCP integration tests.
|
|
"""
|
|
|
|
import pytest
|
|
import tempfile
|
|
import os
|
|
from pathlib import Path
|
|
|
|
# Load environment variables from .env file
|
|
try:
|
|
from dotenv import load_dotenv
|
|
|
|
load_dotenv()
|
|
except ImportError:
|
|
# dotenv not installed, that's okay
|
|
pass
|
|
|
|
|
|
@pytest.fixture
|
|
def temp_test_dir():
|
|
"""
|
|
Create a temporary directory with test files for filesystem MCP server.
|
|
|
|
This fixture creates a temp directory with sample files that can be used
|
|
to test the Anthropic filesystem MCP server.
|
|
|
|
Yields:
|
|
str: Real path to the temporary test directory (resolves symlinks)
|
|
|
|
Example:
|
|
>>> def test_mcp(temp_test_dir):
|
|
... mcp = MCPClient(
|
|
... command="npx",
|
|
... args=["-y", "@modelcontextprotocol/server-filesystem", temp_test_dir]
|
|
... )
|
|
"""
|
|
with tempfile.TemporaryDirectory() as tmpdir:
|
|
# Resolve real path to handle symlinks (e.g., /var -> /private/var on macOS)
|
|
real_tmpdir = os.path.realpath(tmpdir)
|
|
|
|
# Create test files
|
|
test_file = Path(real_tmpdir) / "test.txt"
|
|
test_file.write_text("Hello from MCP test!")
|
|
|
|
readme = Path(real_tmpdir) / "README.md"
|
|
readme.write_text("# Test Directory\n\nThis is a test README file.")
|
|
|
|
data_file = Path(real_tmpdir) / "data.json"
|
|
data_file.write_text('{"key": "value", "number": 42}')
|
|
|
|
# Create a subdirectory
|
|
subdir = Path(real_tmpdir) / "subdir"
|
|
subdir.mkdir()
|
|
(subdir / "nested.txt").write_text("Nested file content")
|
|
|
|
yield real_tmpdir
|
|
|
|
|
|
@pytest.fixture
|
|
def skip_if_no_npx():
|
|
"""
|
|
Skip test if npx is not available.
|
|
|
|
This fixture checks if npx (Node.js package executor) is installed,
|
|
which is required to run the Anthropic filesystem MCP server.
|
|
|
|
Raises:
|
|
pytest.skip: If npx is not found in PATH
|
|
"""
|
|
import shutil
|
|
|
|
if not shutil.which("npx"):
|
|
pytest.skip(
|
|
"npx not found. Install Node.js to run MCP integration tests. "
|
|
"See: https://nodejs.org/"
|
|
)
|