Skip to main content
Glama

mcp-server-tree-sitter

by wrale
MIT License
175
  • Apple
  • Linux
test_yaml_config.py7.97 kB
"""Tests for configuration loading from YAML files. This file is being kept as an integration test but has been updated to fully use DI. """ import os import tempfile import pytest import yaml from mcp_server_tree_sitter.config import ServerConfig from mcp_server_tree_sitter.di import get_container from tests.test_helpers import configure @pytest.fixture def temp_yaml_file(): """Create a temporary YAML file with test configuration.""" with tempfile.NamedTemporaryFile(suffix=".yaml", mode="w+", delete=False) as temp_file: test_config = { "cache": {"enabled": True, "max_size_mb": 256, "ttl_seconds": 3600}, "security": {"max_file_size_mb": 10, "excluded_dirs": [".git", "node_modules", "__pycache__", ".cache"]}, "language": {"auto_install": True, "default_max_depth": 7}, } yaml.dump(test_config, temp_file) temp_file.flush() temp_file_path = temp_file.name yield temp_file_path # Clean up the temporary file os.unlink(temp_file_path) def test_server_config_from_file(temp_yaml_file): """Test the ServerConfig.from_file method directly.""" # Print debug information print(f"Temporary YAML file created at: {temp_yaml_file}") with open(temp_yaml_file, "r") as f: print(f"File contents:\n{f.read()}") # Call from_file directly config = ServerConfig.from_file(temp_yaml_file) # Print the result for debugging print(f"ServerConfig from file: {config}") # Verify that the config object has the expected values assert config.cache.enabled is True assert config.cache.max_size_mb == 256 assert config.cache.ttl_seconds == 3600 assert config.security.max_file_size_mb == 10 assert ".git" in config.security.excluded_dirs assert config.language.auto_install is True assert config.language.default_max_depth == 7 def test_load_config_function_di(temp_yaml_file): """Test the config loading with DI container.""" # Print debug information print(f"Temporary YAML file created at: {temp_yaml_file}") # Get the container directly container = get_container() original_config = container.get_config() # Save original values to restore later original_cache_size = original_config.cache.max_size_mb original_security_size = original_config.security.max_file_size_mb original_depth = original_config.language.default_max_depth try: # Load config file using container's config manager container.config_manager.load_from_file(temp_yaml_file) config = container.get_config() # Verify that the config values were loaded correctly assert config.cache.max_size_mb == 256 assert config.security.max_file_size_mb == 10 assert config.language.default_max_depth == 7 finally: # Restore original values container.config_manager.update_value("cache.max_size_mb", original_cache_size) container.config_manager.update_value("security.max_file_size_mb", original_security_size) container.config_manager.update_value("language.default_max_depth", original_depth) def test_configure_helper(temp_yaml_file): """Test that the configure helper function properly loads values from a YAML file.""" # Print debug information print(f"Temporary YAML file created at: {temp_yaml_file}") print(f"File exists: {os.path.exists(temp_yaml_file)}") # Get container to save original values container = get_container() original_config = container.get_config() # Save original values to restore later original_cache_size = original_config.cache.max_size_mb original_security_size = original_config.security.max_file_size_mb original_depth = original_config.language.default_max_depth try: # Call the configure helper with the path to the temp file result = configure(config_path=temp_yaml_file) # Print the result for debugging print(f"Configure result: {result}") # Verify the returned configuration matches the expected values # Cache settings assert result["cache"]["enabled"] is True assert result["cache"]["max_size_mb"] == 256 assert result["cache"]["ttl_seconds"] == 3600 # Security settings assert result["security"]["max_file_size_mb"] == 10 assert ".git" in result["security"]["excluded_dirs"] # Language settings assert result["language"]["auto_install"] is True assert result["language"]["default_max_depth"] == 7 # Also verify the container's config was updated config = container.get_config() assert config.cache.max_size_mb == 256 assert config.security.max_file_size_mb == 10 assert config.language.default_max_depth == 7 finally: # Restore original values container.config_manager.update_value("cache.max_size_mb", original_cache_size) container.config_manager.update_value("security.max_file_size_mb", original_security_size) container.config_manager.update_value("language.default_max_depth", original_depth) def test_real_yaml_example(): """Test with a real-world example like the one in the issue.""" with tempfile.NamedTemporaryFile(suffix=".yaml", mode="w+", delete=False) as temp_file: # Copy the example from the issue temp_file.write("""cache: enabled: true max_size_mb: 256 ttl_seconds: 3600 security: max_file_size_mb: 10 excluded_dirs: - .git - node_modules - __pycache__ - .cache - .claude - .config - .idea - .llm-context - .local - .npm - .phpstorm_helpers - .tmp - .venv - .vscode - .w3m - admin/logs - cache - logs - tools/data_management/.error_codes_journal - tools/code_management/.patch_journal - runtime - vendor - venv - .aider* - .bash* - .claude-preferences.json - .codeiumignore - .continuerules - .env - .lesshst - .php_history - .python-version - .viminfo - .wget-hsts - .windsurfrules language: auto_install: true default_max_depth: 7 """) temp_file.flush() temp_file_path = temp_file.name try: # Get container to save original values container = get_container() original_config = container.get_config() # Save original values to restore later original_cache_size = original_config.cache.max_size_mb original_security_size = original_config.security.max_file_size_mb original_depth = original_config.language.default_max_depth try: # Call configure helper result = configure(config_path=temp_file_path) # Print the result for debugging print(f"Configure result: {result}") # Verify the returned configuration matches the expected values assert result["cache"]["max_size_mb"] == 256 assert result["security"]["max_file_size_mb"] == 10 assert ".claude" in result["security"]["excluded_dirs"] assert result["language"]["auto_install"] is True assert result["language"]["default_max_depth"] == 7 # Also verify the container's config was updated config = container.get_config() assert config.cache.max_size_mb == 256 assert config.security.max_file_size_mb == 10 assert config.language.default_max_depth == 7 finally: # Restore original values container.config_manager.update_value("cache.max_size_mb", original_cache_size) container.config_manager.update_value("security.max_file_size_mb", original_security_size) container.config_manager.update_value("language.default_max_depth", original_depth) finally: # Clean up the temporary file os.unlink(temp_file_path)

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/wrale/mcp-server-tree-sitter'

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