The test was hardcoded to check /usr/bin/esptool, but esptool lives in ~/.local/bin/ on this system. Use shutil.which() to properly search PATH.
85 lines
2.4 KiB
Python
85 lines
2.4 KiB
Python
"""
|
|
Test configuration management
|
|
"""
|
|
|
|
import os
|
|
import shutil
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
from mcp_esptool_server.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
|