Implement log_manager module with LoggerPrint and LogManager
This commit is contained in:
156
tests/test_log_manager.py
Normal file
156
tests/test_log_manager.py
Normal file
@@ -0,0 +1,156 @@
|
||||
import os
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
from src.utils.log_manager import (
|
||||
parse_size,
|
||||
FileHandlerFactory,
|
||||
LoggerPrint,
|
||||
LogManager,
|
||||
register,
|
||||
register_global_params,
|
||||
get_logger,
|
||||
setup,
|
||||
print as log_print,
|
||||
get_log_manager,
|
||||
LOG_CATEGORY,
|
||||
LOG_CONSOLE,
|
||||
LOG_STDERR,
|
||||
LOG_FILE,
|
||||
LOG_PATH,
|
||||
LOG_LEVEL,
|
||||
LOG_ROTATION,
|
||||
LOG_ROTATION_SIZE,
|
||||
LOG_ROTATION_COUNT,
|
||||
LOG_TIMESTAMP,
|
||||
DEFAULT_TIMESTAMP,
|
||||
)
|
||||
|
||||
|
||||
def test_parse_size():
|
||||
assert parse_size("100B") == 100
|
||||
assert parse_size("1KB") == 1024
|
||||
assert parse_size("1MB") == 1024 * 1024
|
||||
assert parse_size("1GB") == 1024 * 1024 * 1024
|
||||
assert parse_size("10MB") == 10 * 1024 * 1024
|
||||
|
||||
|
||||
def test_constants():
|
||||
assert LOG_CATEGORY == "logger"
|
||||
assert LOG_CONSOLE == "log_console"
|
||||
assert LOG_STDERR == "log_stderr"
|
||||
assert LOG_FILE == "log_file"
|
||||
assert DEFAULT_TIMESTAMP == "%Y-%m-%d %H:%M:%S"
|
||||
|
||||
|
||||
def test_file_handler_factory():
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
tmpdir_path = Path(tmpdir)
|
||||
tmpdir_path.mkdir(parents=True, exist_ok=True)
|
||||
handler = FileHandlerFactory.create(
|
||||
tmpdir, "test.log", rotation="size", max_bytes="1KB", backup_count=3
|
||||
)
|
||||
assert handler is not None
|
||||
assert isinstance(handler.backupCount, int)
|
||||
assert handler.backupCount == 3
|
||||
handler.close()
|
||||
|
||||
|
||||
def test_logger_print():
|
||||
logger = LoggerPrint(
|
||||
name="komAI.test", module_name="test", console_enabled=True, stderr_enabled=True
|
||||
)
|
||||
logger.print("Test message", level="info")
|
||||
logger.print("Warning message", level="warning")
|
||||
logger.print("Error message", level="error")
|
||||
|
||||
|
||||
def test_log_manager_registration():
|
||||
import src.utils.config_manager as config
|
||||
|
||||
config.config.reset()
|
||||
register_global_params()
|
||||
|
||||
register(module="test_mod", log_console=True, log_file="test_mod.log")
|
||||
|
||||
logger = get_logger("test_mod")
|
||||
assert logger is not None
|
||||
assert logger.module_name == "test_mod"
|
||||
|
||||
|
||||
def test_log_manager_no_console():
|
||||
import src.utils.config_manager as config
|
||||
|
||||
config.config.reset()
|
||||
register_global_params()
|
||||
|
||||
register(module="test_mod", log_console=False)
|
||||
|
||||
logger = get_logger("test_mod")
|
||||
assert logger.console_enabled is False
|
||||
|
||||
|
||||
def test_log_manager_with_file():
|
||||
import src.utils.config_manager as config
|
||||
|
||||
config.config.reset()
|
||||
register_global_params()
|
||||
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
register(module="test_mod", log_file="test_mod.log")
|
||||
config.config.set(LOG_PATH, tmpdir, cat=LOG_CATEGORY)
|
||||
|
||||
logger = get_logger("test_mod")
|
||||
assert logger.file_enabled is True
|
||||
|
||||
|
||||
def test_log_manager_print():
|
||||
import src.utils.config_manager as config
|
||||
|
||||
config.config.reset()
|
||||
register_global_params()
|
||||
|
||||
register(module="test_mod", log_console=True)
|
||||
|
||||
setup()
|
||||
log_print("Global print test", level="info")
|
||||
|
||||
|
||||
def test_get_log_manager_singleton():
|
||||
mgr1 = get_log_manager()
|
||||
mgr2 = get_log_manager()
|
||||
assert mgr1 is mgr2
|
||||
|
||||
|
||||
def run_tests():
|
||||
tests = [
|
||||
test_parse_size,
|
||||
test_constants,
|
||||
test_file_handler_factory,
|
||||
test_logger_print,
|
||||
test_log_manager_registration,
|
||||
test_log_manager_no_console,
|
||||
test_log_manager_with_file,
|
||||
test_log_manager_print,
|
||||
test_get_log_manager_singleton,
|
||||
]
|
||||
|
||||
passed = 0
|
||||
failed = 0
|
||||
|
||||
for test in tests:
|
||||
try:
|
||||
test()
|
||||
print(f"PASS: {test.__name__}")
|
||||
passed += 1
|
||||
except Exception as e:
|
||||
print(f"FAIL: {test.__name__} - {e}")
|
||||
failed += 1
|
||||
|
||||
print(f"\n{passed}/{passed + failed} tests passed")
|
||||
return failed == 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = run_tests()
|
||||
exit(0 if success else 1)
|
||||
Reference in New Issue
Block a user