Compare commits

...

2 Commits

Author SHA1 Message Date
df22b3dd3d test: cover logger propagation behavior 2025-12-30 18:11:48 +01:00
8c0bbceeac fix: disable skywipe log propagation 2025-12-30 18:11:38 +01:00
2 changed files with 45 additions and 0 deletions

View File

@@ -36,9 +36,13 @@ class LevelFilter(logging.Filter):
def setup_logger(verbose: bool = False, log_file: Path | None = None) -> logging.Logger:
logger = logging.getLogger("skywipe")
logger.propagate = False
target_level = logging.DEBUG if verbose else logging.INFO
logger.setLevel(target_level)
progress_logger = logging.getLogger("skywipe.progress")
progress_logger.propagate = False
info_handler = None
error_handler = None
file_handlers = []

View File

@@ -124,6 +124,47 @@ def test_setup_logger_does_not_duplicate_handlers():
assert first_count == second_count
def test_setup_logger_disables_propagation():
root_logger = logging.getLogger()
root_messages = []
original_root_level = root_logger.level
class RootHandler(logging.Handler):
def emit(self, record):
root_messages.append(self.format(record))
root_handler = RootHandler()
root_handler.setLevel(logging.INFO)
root_logger.addHandler(root_handler)
root_logger.setLevel(logging.INFO)
logger = logging.getLogger("skywipe")
original_handlers = list(logger.handlers)
for handler in original_handlers:
logger.removeHandler(handler)
try:
setup_logger(verbose=False)
assert logger.propagate is False
progress_logger = logging.getLogger("skywipe.progress")
assert progress_logger.propagate is False
logger.info("Test message")
progress_logger.info("Progress message")
assert len(root_messages) == 0
finally:
root_handler.close()
root_logger.removeHandler(root_handler)
root_logger.setLevel(original_root_level)
for handler in list(logger.handlers):
handler.close()
logger.removeHandler(handler)
for handler in original_handlers:
logger.addHandler(handler)
def test_setup_logger_file_handler_lifecycle(tmp_path):
logger = logging.getLogger("skywipe")
original_handlers = list(logger.handlers)