Files
devx/tests/unit/test_utils_logging.py
emil ef3b882e5b
Post-merge / detect-type (push) Successful in 13s
Post-merge / validate-commit-msg (push) Successful in 10s
Post-merge / configure-repo (push) Successful in 28s
Post-merge / vikunja (push) Successful in 44s
Post-merge / sync-wiki (push) Successful in 58s
Post-merge / release (push) Successful in 1m7s
Post-merge / publish (push) Successful in 44s
Post-merge / badges (push) Successful in 1m6s
DEVX-124: feat: extract shared utilities from infra and grm into devx
2026-07-09 11:51:50 +00:00

54 lines
1.8 KiB
Python

"""Unit tests for devx.utils.logging."""
from __future__ import annotations
import logging
from pathlib import Path
from unittest.mock import patch
from devx.utils.logging import get_logger
class TestGetLogger:
def test_returns_logger_with_handlers(self) -> None:
logger = get_logger("test_devx_unit_1")
assert logger.handlers
assert isinstance(logger.handlers[0], logging.FileHandler)
def test_idempotent(self) -> None:
logger1 = get_logger("test_devx_unit_2")
initial_count = len(logger1.handlers)
logger2 = get_logger("test_devx_unit_2")
assert logger1 is logger2
assert len(logger2.handlers) == initial_count
def test_log_level_is_debug(self) -> None:
logger = get_logger("test_devx_unit_3")
assert logger.level == logging.DEBUG
def test_file_handler_level_is_debug(self) -> None:
logger = get_logger("test_devx_unit_4")
file_handler = logger.handlers[0]
assert file_handler.level == logging.DEBUG
def test_default_name(self) -> None:
logger = get_logger()
assert logger.name == "devx"
def test_creates_log_directory(self, tmp_path: Path) -> None:
with patch.object(Path, "home", return_value=tmp_path):
get_logger("test_app_creates_dir")
log_dir = tmp_path / ".local" / "state" / "test_app_creates_dir" / "logs"
assert log_dir.exists()
assert (log_dir / "test_app_creates_dir.log").exists()
def test_formatter_includes_timestamp(self) -> None:
logger = get_logger("test_devx_unit_5")
file_handler = logger.handlers[0]
fmt = file_handler.formatter
assert fmt is not None
assert "%(asctime)s" in fmt._fmt
assert "%(levelname)s" in fmt._fmt
assert "%(name)s" in fmt._fmt
assert "%(message)s" in fmt._fmt