Files
slic/tests/test_utils_logign.py
T
tligui_y b163099c26
Run CI Tests / test (push) Successful in 28s
Update tests/test_utils_logign.py
2025-07-28 16:51:45 +02:00

107 lines
3.0 KiB
Python

import logging
import sys
import pytest
import logzero
from logzero import logger as log
from slic.utils.logcfg import add_log_Level, logcfg
from slic.utils.logign import ignore_log_msg
# Parametrize main test: filtering by level and message
@pytest.mark.parametrize("levelname,msg_to_ignore,msg_to_keep", [
("WARNING", "This should be ignored", "This should appear"),
("ENLARGE", "ENLARGE this", "Keep this ENLARGE"),
])
def test_ignore_log_msg_behavior(levelname, msg_to_ignore, msg_to_keep, capsys):
for h in log.handlers[:]:
log.removeHandler(h)
handler = logging.StreamHandler(sys.stderr)
formatter = logzero.LogFormatter()
handler.setFormatter(formatter)
log.addHandler(handler)
add_log_Level(log, "ENLARGE", logging.INFO + 6, func_name="enlarge")
logcfg("DEBUG")
capsys.readouterr()
with ignore_log_msg(log, lvl=levelname, msg=msg_to_ignore):
if levelname == "WARNING":
log.warning(msg_to_ignore)
log.warning(msg_to_keep)
elif levelname == "ENLARGE":
log.enlarge(msg_to_ignore)
log.enlarge(msg_to_keep)
captured = capsys.readouterr().err
assert msg_to_ignore not in captured
assert msg_to_keep in captured
# Filter by level only (msg=None)
def test_ignore_only_by_level(capsys):
for h in log.handlers[:]:
log.removeHandler(h)
handler = logging.StreamHandler(sys.stderr)
handler.setFormatter(logzero.LogFormatter())
log.addHandler(handler)
logcfg("DEBUG")
capsys.readouterr()
with ignore_log_msg(log, lvl="WARNING", msg=None):
log.warning("Should be hidden")
log.info("Should be visible")
captured = capsys.readouterr().err
assert "Should be hidden" not in captured
assert "Should be visible" in captured
# Filter by message only (lvl=None)
def test_ignore_only_by_msg(capsys):
for h in log.handlers[:]:
log.removeHandler(h)
handler = logging.StreamHandler(sys.stderr)
handler.setFormatter(logzero.LogFormatter())
log.addHandler(handler)
logcfg("DEBUG")
capsys.readouterr()
with ignore_log_msg(log, lvl=None, msg="skip this"):
log.warning("skip this")
log.warning("keep this")
captured = capsys.readouterr().err
assert "skip this" not in captured
assert "keep this" in captured
# Filter removed after context
def test_filter_removed_after_context(capsys):
for h in log.handlers[:]:
log.removeHandler(h)
handler = logging.StreamHandler(sys.stderr)
handler.setFormatter(logzero.LogFormatter())
log.addHandler(handler)
logcfg("DEBUG")
capsys.readouterr()
with ignore_log_msg(log, lvl="WARNING", msg="temp msg"):
log.warning("temp msg") # should be ignored
log.warning("temp msg") # should now appear
captured = capsys.readouterr().err
assert "temp msg" in captured
count = captured.count("temp msg")
assert count == 1, f"'temp msg' should appear exactly once, found {count}"