Skip to main content
Glama
by elusznik
test_config_loading.py3.68 kB
import json import sys from pathlib import Path from unittest.mock import patch import pytest # Import the module under test # We need to add the repo root to sys.path to import the module sys.path.insert(0, str(Path(__file__).parents[1])) from mcp_server_code_execution_mode import MCPBridge, MCPServerInfo @pytest.fixture def mock_bridge(): bridge = MCPBridge() # Mock the internal caches to avoid side effects bridge.servers = {} return bridge def test_discover_servers_vscode_global(mock_bridge, tmp_path): """Test discovery of VS Code global settings.""" # Create a mock settings.json settings_content = { "mcpServers": {"vscode-global-server": {"command": "echo", "args": ["hello"]}} } settings_file = tmp_path / "settings.json" settings_file.write_text(json.dumps(settings_content)) # Create a mock ConfigSource from mcp_server_code_execution_mode import ConfigSource mock_sources = [ConfigSource(settings_file, "file", name="VS Code Global")] # Patch CONFIG_SOURCES with patch("mcp_server_code_execution_mode.CONFIG_SOURCES", mock_sources): # Run discovery import asyncio asyncio.run(mock_bridge.discover_servers()) # Verify assert "vscode-global-server" in mock_bridge.servers server = mock_bridge.servers["vscode-global-server"] assert server.command == "echo" assert server.args == ["hello"] def test_discover_servers_antigravity(mock_bridge, tmp_path): """Test discovery of Antigravity IDE settings.""" # Create a mock settings.json settings_content = { "mcpServers": { "antigravity-server": {"command": "python", "args": ["-m", "http.server"]} } } settings_file = tmp_path / "settings.json" settings_file.write_text(json.dumps(settings_content)) # Create a mock ConfigSource from mcp_server_code_execution_mode import ConfigSource mock_sources = [ConfigSource(settings_file, "file", name="Antigravity IDE")] # Patch CONFIG_SOURCES with patch("mcp_server_code_execution_mode.CONFIG_SOURCES", mock_sources): # Run discovery import asyncio asyncio.run(mock_bridge.discover_servers()) # Verify assert "antigravity-server" in mock_bridge.servers server = mock_bridge.servers["antigravity-server"] assert server.command == "python" assert server.args == ["-m", "http.server"] def test_discover_servers_precedence(mock_bridge, tmp_path): """Test that earlier discovered servers take precedence.""" # Mock existing server mock_bridge.servers["conflict-server"] = MCPServerInfo( name="conflict-server", command="original", args=[], env={} ) # Create a mock config that tries to override it settings_content = { "mcpServers": { "conflict-server": {"command": "override", "args": []}, "new-server": {"command": "new", "args": []}, } } settings_file = tmp_path / "settings.json" settings_file.write_text(json.dumps(settings_content)) # Create a mock ConfigSource from mcp_server_code_execution_mode import ConfigSource mock_sources = [ConfigSource(settings_file, "file", name="Test Config")] # Patch CONFIG_SOURCES with patch("mcp_server_code_execution_mode.CONFIG_SOURCES", mock_sources): import asyncio asyncio.run(mock_bridge.discover_servers()) # Verify original was NOT overridden assert mock_bridge.servers["conflict-server"].command == "original" # Verify new server WAS added assert "new-server" in mock_bridge.servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/elusznik/mcp-server-code-execution-mode'

If you have feedback or need assistance with the MCP directory API, please join our Discord server