This commit is contained in:
+23
-98
@@ -10,112 +10,37 @@ from slic.utils.logcfg import add_log_Level, logcfg
|
||||
import logzero
|
||||
from logzero import logger as log, LogFormatter
|
||||
|
||||
import logging
|
||||
import pytest
|
||||
import sys
|
||||
from logzero import logger as log, LogFormatter
|
||||
|
||||
|
||||
# Setup custom levels for testing
|
||||
@pytest.fixture(scope="module", autouse=True)
|
||||
@pytest.fixture(scope="function", autouse=True) # Changé à "function"
|
||||
def setup_logger():
|
||||
add_log_Level(log, "ENLARGE", logging.INFO + 5, func_name="enlarge")
|
||||
logcfg("DEBUG")
|
||||
reconfigure_logzero_to_stderr()
|
||||
|
||||
|
||||
def reconfigure_logzero_to_stderr():
|
||||
# Remove all existing handlers
|
||||
# Configure le logger avant CHAQUE test
|
||||
for h in log.handlers[:]:
|
||||
log.removeHandler(h)
|
||||
|
||||
# Create handler with the current sys.stderr (which may be captured)
|
||||
handler = logging.StreamHandler(sys.stderr)
|
||||
handler.setFormatter(LogFormatter())
|
||||
handler.setLevel(logging.DEBUG)
|
||||
log.addHandler(handler)
|
||||
|
||||
log.setLevel(logging.DEBUG)
|
||||
add_log_Level(log, "ENLARGE", logging.INFO + 5, func_name="enlarge")
|
||||
log.setLevel(logging.DEBUG) # Niveau global
|
||||
|
||||
@pytest.mark.parametrize("level,msg,should_appear", [
|
||||
("WARNING", "warn to ignore", False),
|
||||
("WARNING", "warn to keep", True),
|
||||
("INFO", "info message", True),
|
||||
("ENLARGE", "enlarge to ignore", False),
|
||||
("ENLARGE", "other enlarge", True),
|
||||
])
|
||||
def test_ignore_log_msg_filter(capfd, level, msg, should_appear):
|
||||
# Clear captured output before logging
|
||||
reconfigure_logzero_to_stderr()
|
||||
def test_ignore_log_msg_filter(capfd):
|
||||
"""Test inspiré de celui qui fonctionne dans test_utils_logcfg.py"""
|
||||
# Clear capture
|
||||
capfd.readouterr()
|
||||
|
||||
# Set up filter
|
||||
with ignore_log_msg(log, lvl=level, msg=msg):
|
||||
# Trigger all log levels
|
||||
log.warning("warn to ignore")
|
||||
log.warning("warn to keep")
|
||||
log.info("info message")
|
||||
log.enlarge("enlarge to ignore")
|
||||
log.enlarge("other enlarge")
|
||||
|
||||
sys.stderr.flush()
|
||||
|
||||
# Capture the output
|
||||
out = capfd.readouterr().out + capfd.readouterr().err
|
||||
|
||||
print(">>> Captured output:")
|
||||
print(repr(out)) # Use repr to see special characters and emptiness
|
||||
|
||||
# Check if the message appears
|
||||
if should_appear:
|
||||
assert msg in out, f"Expected '{msg}' to appear in logs"
|
||||
else:
|
||||
assert msg not in out, f"Expected '{msg}' to be filtered from logs"
|
||||
|
||||
|
||||
def test_ignore_only_by_level(capfd):
|
||||
reconfigure_logzero_to_stderr()
|
||||
capfd.readouterr()
|
||||
|
||||
with ignore_log_msg(log, lvl="WARNING", msg=None):
|
||||
log.warning("should be ignored")
|
||||
log.info("should appear")
|
||||
|
||||
out = capfd.readouterr().err
|
||||
assert "should be ignored" not in out
|
||||
assert "should appear" in out
|
||||
|
||||
|
||||
def test_ignore_only_by_msg(capfd):
|
||||
reconfigure_logzero_to_stderr()
|
||||
capfd.readouterr()
|
||||
|
||||
with ignore_log_msg(log, lvl=None, msg="skip this"):
|
||||
log.warning("skip this")
|
||||
log.warning("keep this")
|
||||
|
||||
out = capfd.readouterr().err
|
||||
assert "skip this" not in out
|
||||
assert "keep this" in out
|
||||
|
||||
|
||||
def test_ignore_nothing_when_all_none(capfd):
|
||||
reconfigure_logzero_to_stderr()
|
||||
capfd.readouterr()
|
||||
|
||||
with ignore_log_msg(log, lvl=None, msg=None):
|
||||
log.warning("warning")
|
||||
log.info("info")
|
||||
|
||||
out = capfd.readouterr().err
|
||||
assert "warning" not in out # because logcfg("DEBUG") sets level > warning by default
|
||||
assert "info" in out
|
||||
|
||||
|
||||
def test_filter_removed_after_context(capfd):
|
||||
reconfigure_logzero_to_stderr()
|
||||
capfd.readouterr()
|
||||
|
||||
with ignore_log_msg(log, lvl="WARNING", msg="temp msg"):
|
||||
log.warning("temp msg")
|
||||
|
||||
# Now outside context: should appear again
|
||||
log.warning("temp msg")
|
||||
out = capfd.readouterr().err
|
||||
assert "temp msg" in out
|
||||
|
||||
# Test
|
||||
with ignore_log_msg(log, lvl="WARNING", msg="test msg"):
|
||||
log.warning("test msg")
|
||||
log.warning("other msg")
|
||||
|
||||
# Capture
|
||||
captured = capfd.readouterr().err
|
||||
print("CAPTURED:", repr(captured)) # Debug
|
||||
|
||||
assert "test msg" not in captured
|
||||
assert "other msg" in captured
|
||||
Reference in New Issue
Block a user