From 02364e54c6df923322dabc294724574ea50be6e2 Mon Sep 17 00:00:00 2001 From: Kharec Date: Tue, 23 Dec 2025 04:46:49 +0100 Subject: [PATCH] test: cover logger helpers --- tests/test_logger.py | 89 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 tests/test_logger.py diff --git a/tests/test_logger.py b/tests/test_logger.py new file mode 100644 index 0000000..857107a --- /dev/null +++ b/tests/test_logger.py @@ -0,0 +1,89 @@ +import logging + +from skywipe.logger import LevelFilter, ProgressTracker, setup_logger + + +def test_level_filter_accepts_in_range(): + logger = logging.getLogger("test.level_filter") + record = logger.makeRecord( + name="test.level_filter", + level=logging.INFO, + fn="test", + lno=1, + msg="message", + args=(), + exc_info=None, + ) + level_filter = LevelFilter(logging.DEBUG, logging.INFO) + assert level_filter.filter(record) is True + + +def test_level_filter_rejects_out_of_range(): + logger = logging.getLogger("test.level_filter") + record = logger.makeRecord( + name="test.level_filter", + level=logging.ERROR, + fn="test", + lno=1, + msg="message", + args=(), + exc_info=None, + ) + level_filter = LevelFilter(logging.DEBUG, logging.INFO) + assert level_filter.filter(record) is False + + +def test_progress_tracker_updates_counts(): + tracker = ProgressTracker(operation="Testing") + tracker.update() + tracker.update(2) + assert tracker.current == 3 + + +def test_setup_logger_does_not_duplicate_handlers(): + logger = logging.getLogger("skywipe") + original_handlers = list(logger.handlers) + for handler in original_handlers: + logger.removeHandler(handler) + + try: + setup_logger(verbose=False) + first_count = len(logger.handlers) + setup_logger(verbose=False) + second_count = len(logger.handlers) + finally: + for handler in list(logger.handlers): + logger.removeHandler(handler) + for handler in original_handlers: + logger.addHandler(handler) + + assert first_count == second_count + + +def test_setup_logger_file_handler_lifecycle(tmp_path): + logger = logging.getLogger("skywipe") + original_handlers = list(logger.handlers) + for handler in original_handlers: + logger.removeHandler(handler) + + log_file = tmp_path / "skywipe.log" + try: + setup_logger(verbose=False, log_file=log_file) + file_handlers = [ + handler for handler in logger.handlers + if isinstance(handler, logging.FileHandler) + ] + assert len(file_handlers) == 1 + assert file_handlers[0].baseFilename == str(log_file) + + setup_logger(verbose=False, log_file=None) + file_handlers = [ + handler for handler in logger.handlers + if isinstance(handler, logging.FileHandler) + ] + assert file_handlers == [] + finally: + for handler in list(logger.handlers): + logger.removeHandler(handler) + for handler in original_handlers: + logger.addHandler(handler)