This commit is contained in:
@@ -6,26 +6,23 @@ from logzero import logger as log
|
|||||||
from slic.utils.logcfg import add_log_Level, logcfg
|
from slic.utils.logcfg import add_log_Level, logcfg
|
||||||
from slic.utils.logign import ignore_log_msg
|
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", [
|
@pytest.mark.parametrize("levelname,msg_to_ignore,msg_to_keep", [
|
||||||
("WARNING", "This should be ignored", "This should appear"),
|
("WARNING", "This should be ignored", "This should appear"),
|
||||||
("ENLARGE", "ENLARGE this", "Keep this ENLARGE"),
|
("ENLARGE", "ENLARGE this", "Keep this ENLARGE"),
|
||||||
])
|
])
|
||||||
def test_ignore_log_msg_behavior(levelname, msg_to_ignore, msg_to_keep, capsys):
|
def test_ignore_log_msg_behavior(levelname, msg_to_ignore, msg_to_keep, capsys):
|
||||||
# Remove all handlers
|
|
||||||
for h in log.handlers[:]:
|
for h in log.handlers[:]:
|
||||||
log.removeHandler(h)
|
log.removeHandler(h)
|
||||||
|
|
||||||
# Set handler manually like your working test
|
|
||||||
handler = logging.StreamHandler(sys.stderr)
|
handler = logging.StreamHandler(sys.stderr)
|
||||||
formatter = logzero.LogFormatter()
|
formatter = logzero.LogFormatter()
|
||||||
handler.setFormatter(formatter)
|
handler.setFormatter(formatter)
|
||||||
log.addHandler(handler)
|
log.addHandler(handler)
|
||||||
|
|
||||||
# Add custom level and set config
|
|
||||||
add_log_Level(log, "ENLARGE", logging.INFO + 6, func_name="enlarge")
|
add_log_Level(log, "ENLARGE", logging.INFO + 6, func_name="enlarge")
|
||||||
logcfg("DEBUG")
|
logcfg("DEBUG")
|
||||||
|
|
||||||
# Clear any prior capsys capture
|
|
||||||
capsys.readouterr()
|
capsys.readouterr()
|
||||||
|
|
||||||
with ignore_log_msg(log, lvl=levelname, msg=msg_to_ignore):
|
with ignore_log_msg(log, lvl=levelname, msg=msg_to_ignore):
|
||||||
@@ -36,10 +33,76 @@ def test_ignore_log_msg_behavior(levelname, msg_to_ignore, msg_to_keep, capsys):
|
|||||||
log.enlarge(msg_to_ignore)
|
log.enlarge(msg_to_ignore)
|
||||||
log.enlarge(msg_to_keep)
|
log.enlarge(msg_to_keep)
|
||||||
|
|
||||||
# Read captured stderr
|
|
||||||
captured = capsys.readouterr().err
|
captured = capsys.readouterr().err
|
||||||
print("Captured stderr:", repr(captured))
|
print("Captured stderr:", repr(captured))
|
||||||
|
|
||||||
# Assert the message to ignore is gone, the other one is present
|
assert msg_to_ignore not in captured
|
||||||
assert msg_to_ignore not in captured, f"'{msg_to_ignore}' should have been filtered"
|
assert msg_to_keep in captured
|
||||||
assert msg_to_keep in captured, f"'{msg_to_keep}' should have appeared"
|
|
||||||
|
|
||||||
|
# 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
|
||||||
|
print("Captured stderr (lvl only):", repr(captured))
|
||||||
|
|
||||||
|
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
|
||||||
|
print("Captured stderr (msg only):", repr(captured))
|
||||||
|
|
||||||
|
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
|
||||||
|
print("Captured stderr (after context):", repr(captured))
|
||||||
|
|
||||||
|
assert "temp msg" in captured
|
||||||
|
|||||||
Reference in New Issue
Block a user