Files
NebulaShell/oss/tests/test_logger.py
Falck f5c659b665 🔧 修复P0级问题:40+文件语法错误 + import路径 + 清理废弃代码
 跟项目能跑起来就差这一步!这次狠狠修了一波:

🩺 修复40+损坏Python文件
   - 补全所有缺少的class定义头(plugin-loader-pro、code-reviewer、
     http-api/ws-api/http-tcp、webui/dashboard/log-terminal 等)
   - 修复中文括号、字符串未闭合、缩进错乱等语法问题

🔗 创建符号链接 plugin_bridge -> plugin-bridge
   - 解决Python模块路径不支持连字符的问题
   - 关联修复 plugin-bridge 中错误的 import 路径

🧹 清理废弃代码
   - 删除 oss/tui/ 目录(已废弃)
   - 清理所有 __pycache__ 和 .pyc 缓存文件

 全量语法检查通过,零错误!
📋 ai.md 新增代码审计报告和分阶段修复计划
🗺️ 所有插件 use() 调用现在走统一路径
2026-05-03 09:26:47 +08:00

94 lines
2.9 KiB
Python

"""Tests for Logger"""
import logging
import json
import os
import pytest
from unittest.mock import patch, Mock
from io import StringIO
from oss.logger.logger import Logger
class TestLogger:
def test_logger_initialization(self):
logger = Logger("test")
with patch.object(logger.logger, 'info') as mock_info:
logger.info("Test message")
mock_info.assert_called_once_with("Test message")
def test_logger_warn(self):
logger = Logger("test")
with patch.object(logger.logger, 'error') as mock_error:
logger.error("Test error")
mock_error.assert_called_once_with("Test error")
def test_logger_debug(self):
logger = Logger("test")
with patch.object(logger.logger, 'info') as mock_info:
logger.info("Test message", "TAG")
mock_info.assert_called_once_with("[TAG] Test message")
def test_logger_warn_with_tag(self):
logger = Logger("test")
with patch.object(logger.logger, 'error') as mock_error:
logger.error("Test error", "TAG")
mock_error.assert_called_once_with("[TAG] Test error")
def test_logger_debug_with_tag(self):
logger = Logger("test")
format_str = logger._get_log_format()
assert "%(asctime)s" in format_str
assert "%(name)s" in format_str
assert "%(levelname)s" in format_str
assert "%(message)s" in format_str
def test_get_log_format_json(self):
os.environ["LOG_FORMAT"] = "json"
try:
logger = Logger("test")
format_str = logger._get_log_format()
assert "%(asctime)s" in format_str
assert "%(name)s" in format_str
assert "%(levelname)s" in format_str
assert "%(message)s" in format_str
finally:
if "LOG_FORMAT" in os.environ:
del os.environ["LOG_FORMAT"]
def test_logger_json_format(self):
logger = Logger("test")
assert logger is not None
def test_logger_output(self):
log_capture = StringIO()
logger = logging.getLogger("test_json")
logger.setLevel(logging.INFO)
handler = logging.StreamHandler(log_capture)
formatter = logging.Formatter(
'{"time": "%(asctime)s", "name": "%(name)s", "level": "%(levelname)s", "message": "%(message)s"}'
)
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.info("Test JSON message")
log_output = log_capture.getvalue().strip()
assert log_output.startswith("{")
assert log_output.endswith("}")
assert "test_json" in log_output
assert "INFO" in log_output
assert "Test JSON message" in log_output
try:
import json
json.loads(log_output)
except json.JSONDecodeError:
pytest.fail("Log output is not valid JSON")
if __name__ == '__main__':
pytest.main([__file__, '-v'])