mcesptool/tests/test_config.py
Ryan Malloy d5dc9c99c0 Rename package to mcesptool
- Rename mcp-esptool-server -> mcesptool
- Update all imports and references
- Single entry point: mcesptool command
- New home: git.supported.systems/MCP/mcesptool
2026-02-06 21:08:53 -07:00

85 lines
2.4 KiB
Python

"""
Test configuration management
"""
import os
import shutil
from pathlib import Path
import pytest
from mcesptool.config import ESPToolServerConfig
def test_config_from_environment():
"""Test configuration creation from environment variables"""
config = ESPToolServerConfig.from_environment()
assert config.esptool_path == "esptool" # default value
assert config.default_baud_rate == 460800
assert config.connection_timeout == 30
assert config.enable_stub_flasher is True
assert config.production_mode is False
def test_config_environment_override():
"""Test environment variable override"""
from unittest.mock import patch
# Set test environment variables
test_env = {
"ESPTOOL_PATH": "/custom/esptool",
"ESP_DEFAULT_BAUD_RATE": "115200",
"PRODUCTION_MODE": "true",
}
# Temporarily override environment
original_env = {}
for key, value in test_env.items():
original_env[key] = os.getenv(key)
os.environ[key] = value
try:
# Mock tool availability check to always return True
with patch.object(ESPToolServerConfig, "_check_tool_availability", return_value=True):
config = ESPToolServerConfig.from_environment()
assert config.esptool_path == "/custom/esptool"
assert config.default_baud_rate == 115200
assert config.production_mode is True
finally:
# Restore original environment
for key, value in original_env.items():
if value is None:
os.environ.pop(key, None)
else:
os.environ[key] = value
def test_config_to_dict():
"""Test configuration serialization"""
config = ESPToolServerConfig()
config_dict = config.to_dict()
assert isinstance(config_dict, dict)
assert "esptool_path" in config_dict
assert "default_baud_rate" in config_dict
assert "production_mode" in config_dict
def test_common_ports():
"""Test common port detection"""
config = ESPToolServerConfig()
ports = config.get_common_ports()
assert isinstance(ports, list)
assert len(ports) > 0 # Should return some ports for any platform
@pytest.mark.skipif(not shutil.which("esptool"), reason="esptool not found in PATH")
def test_tool_availability():
"""Test tool availability check"""
config = ESPToolServerConfig()
available = config._check_tool_availability("esptool")
assert available is True