Public Access
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
54 lines
1.8 KiB
Python
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
|