test: cover logger helpers
This commit is contained in:
89
tests/test_logger.py
Normal file
89
tests/test_logger.py
Normal file
@@ -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)
|
||||||
Reference in New Issue
Block a user