Files
NebulaShell/tests/test_config.py
qwen.ai[bot] 97ced1b5e6 Title: Implement minimal core framework with PL injection and update build config
Key features implemented:
- Updated package metadata and dependencies in PKG-INFO, setup files
- Added main.py entry point for backward compatibility with README launch method
- Enhanced CLI with config options, system info command, and proper signal handling
- Implemented minimal PluginManager loading only plugin-loader core plugin
- Refactored PluginLoader to follow minimal core design, removed sandbox/isolation complexity
- Updated auto-dependency plugin with safer PL injection mechanism and disabled pl_injection
- Removed legacy plugin files (firewall, frp_proxy, ftp_server, multi_lang_deploy, ops_toolbox, security_gateway) as functionality moved to core plugin system
- Improved gitignore with comprehensive ignore patterns

The changes implement a minimal core framework design where only the plugin-loader is directly loaded by the core, with all other plugins managed through the PL injection mechanism, significantly simplifying the architecture.
2026-04-25 10:47:26 +00:00

106 lines
3.4 KiB
Python

"""配置管理测试"""
import os
import pytest
from pathlib import Path
import tempfile
import json
from oss.config.config import Config
class TestConfig:
"""配置管理测试类"""
def test_default_values(self):
"""测试默认配置值"""
config = Config()
assert config.http_api_port == 8080
assert config.http_tcp_port == 8082
assert config.host == "0.0.0.0"
assert config.log_level == "INFO"
assert config.permission_check is True
def test_env_override(self, monkeypatch):
"""测试环境变量覆盖"""
monkeypatch.setenv("HTTP_API_PORT", "9999")
monkeypatch.setenv("LOG_LEVEL", "DEBUG")
config = Config()
assert config.http_api_port == 9999
assert config.log_level == "DEBUG"
def test_file_config(self):
"""测试配置文件加载"""
with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f:
json.dump({"HTTP_API_PORT": 7777, "LOG_LEVEL": "WARNING"}, f)
temp_path = f.name
try:
config = Config(temp_path)
assert config.http_api_port == 7777
assert config.log_level == "WARNING"
finally:
os.unlink(temp_path)
def test_env_priority_over_file(self, monkeypatch):
"""测试环境变量优先级高于配置文件"""
with tempfile.NamedTemporaryFile(mode='w', suffix='.json', delete=False) as f:
json.dump({"HTTP_API_PORT": 7777}, f)
temp_path = f.name
try:
monkeypatch.setenv("HTTP_API_PORT", "8888")
config = Config(temp_path)
assert config.http_api_port == 8888 # 环境变量优先
finally:
os.unlink(temp_path)
monkeypatch.delenv("HTTP_API_PORT", raising=False)
def test_get_set(self):
"""测试 get/set 方法"""
config = Config()
assert config.get("HTTP_API_PORT") == 8080
config.set("HTTP_API_PORT", 6666)
assert config.get("HTTP_API_PORT") == 6666
def test_properties(self):
"""测试属性访问"""
config = Config()
assert isinstance(config.data_dir, Path)
assert isinstance(config.store_dir, Path)
assert config.data_dir.name == "data"
assert config.store_dir.name == "store"
def test_all_method(self):
"""测试 all() 方法返回所有配置"""
config = Config()
all_config = config.all()
assert "HTTP_API_PORT" in all_config
assert "HOST" in all_config
assert len(all_config) > 5
def test_bool_conversion(self, monkeypatch):
"""测试布尔值转换"""
monkeypatch.setenv("PERMISSION_CHECK", "false")
config = Config()
assert config.permission_check is False
monkeypatch.setenv("PERMISSION_CHECK", "true")
config = Config()
assert config.permission_check is True
def test_int_conversion(self, monkeypatch):
"""测试整数转换"""
monkeypatch.setenv("MAX_WORKERS", "8")
config = Config()
assert config.get("MAX_WORKERS") == 8
# 无效值应该保持默认
monkeypatch.setenv("MAX_WORKERS", "invalid")
config = Config()
assert config.get("MAX_WORKERS") == 4 # 默认值
if __name__ == "__main__":
pytest.main([__file__, "-v"])