diff --git a/tests/test_utils_logign.py b/tests/test_utils_logign.py index 374749b67..296a8ad33 100644 --- a/tests/test_utils_logign.py +++ b/tests/test_utils_logign.py @@ -6,26 +6,23 @@ 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): - # Remove all handlers for h in log.handlers[:]: log.removeHandler(h) - # Set handler manually like your working test handler = logging.StreamHandler(sys.stderr) formatter = logzero.LogFormatter() handler.setFormatter(formatter) log.addHandler(handler) - # Add custom level and set config add_log_Level(log, "ENLARGE", logging.INFO + 6, func_name="enlarge") logcfg("DEBUG") - # Clear any prior capsys capture capsys.readouterr() 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_keep) - # Read captured stderr captured = capsys.readouterr().err print("Captured stderr:", repr(captured)) - # Assert the message to ignore is gone, the other one is present - assert msg_to_ignore not in captured, f"'{msg_to_ignore}' should have been filtered" - assert msg_to_keep in captured, f"'{msg_to_keep}' should have appeared" + 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 + 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