Skip to main content
Glama

mcp-server-tree-sitter

by wrale
MIT License
175
  • Apple
  • Linux
test_config_manager.py4.11 kB
"""Tests for the new ConfigurationManager class.""" import os import tempfile import pytest import yaml # Import will fail initially until we implement the class @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 os.unlink(temp_file_path) def test_config_manager_initialization(): """Test that ConfigurationManager initializes with default config.""" # This test will fail until we implement ConfigurationManager from mcp_server_tree_sitter.config import ConfigurationManager manager = ConfigurationManager() config = manager.get_config() # Check default values assert config.cache.max_size_mb == 100 assert config.security.max_file_size_mb == 5 assert config.language.default_max_depth == 5 def test_config_manager_load_from_file(temp_yaml_file): """Test loading configuration from a file.""" # This test will fail until we implement ConfigurationManager from mcp_server_tree_sitter.config import ConfigurationManager manager = ConfigurationManager() manager.load_from_file(temp_yaml_file) config = manager.get_config() # Check loaded values assert config.cache.max_size_mb == 256 assert config.security.max_file_size_mb == 10 assert config.language.default_max_depth == 7 def test_config_manager_update_values(): """Test updating individual configuration values.""" # This test will fail until we implement ConfigurationManager from mcp_server_tree_sitter.config import ConfigurationManager manager = ConfigurationManager() # Update values manager.update_value("cache.max_size_mb", 512) manager.update_value("security.max_file_size_mb", 20) # Check updated values config = manager.get_config() assert config.cache.max_size_mb == 512 assert config.security.max_file_size_mb == 20 def test_config_manager_to_dict(): """Test converting configuration to dictionary.""" # This test will fail until we implement ConfigurationManager from mcp_server_tree_sitter.config import ConfigurationManager manager = ConfigurationManager() config_dict = manager.to_dict() # Check dictionary structure assert "cache" in config_dict assert "security" in config_dict assert "language" in config_dict assert config_dict["cache"]["max_size_mb"] == 100 def test_env_overrides_defaults(monkeypatch): """Environment variables should override hard-coded defaults.""" monkeypatch.setenv("MCP_TS_CACHE_MAX_SIZE_MB", "512") from mcp_server_tree_sitter.config import ConfigurationManager mgr = ConfigurationManager() cfg = mgr.get_config() assert cfg.cache.max_size_mb == 512, "Environment variable should override default value" # ensure other defaults stay intact assert cfg.security.max_file_size_mb == 5 assert cfg.language.default_max_depth == 5 def test_env_overrides_yaml(temp_yaml_file, monkeypatch): """Environment variables should take precedence over YAML values.""" # YAML sets 256; env var must win with 1024 monkeypatch.setenv("MCP_TS_CACHE_MAX_SIZE_MB", "1024") monkeypatch.setenv("MCP_TS_SECURITY_MAX_FILE_SIZE_MB", "15") from mcp_server_tree_sitter.config import ConfigurationManager mgr = ConfigurationManager() mgr.load_from_file(temp_yaml_file) cfg = mgr.get_config() assert cfg.cache.max_size_mb == 1024, "Environment variable should override YAML value" assert cfg.security.max_file_size_mb == 15, "Environment variable should override YAML value"

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