This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import logging
|
||||
import logzero
|
||||
from logzero import logger
|
||||
from logzero import setup_logger
|
||||
import pytest
|
||||
import tempfile
|
||||
import subprocess
|
||||
@@ -50,18 +50,17 @@ def test_custom_log_outputs(levelname, logfunc, message, capsys):
|
||||
|
||||
# Test subprocess: top-level import logs only once
|
||||
|
||||
def test_import_logging_once_per_module(caplog):
|
||||
caplog.set_level("TRACE")
|
||||
def test_import_logging_once_per_module(monkeypatch):
|
||||
captured = []
|
||||
|
||||
# Attach a logging handler so caplog can see logzero logs
|
||||
handler = logging.StreamHandler()
|
||||
logger.addHandler(handler)
|
||||
# Replace the trace method with a capturing lambda
|
||||
monkeypatch.setattr(logcfg.log, "trace", lambda msg: captured.append(msg))
|
||||
|
||||
import sys, importlib
|
||||
# Force re-import so the hook is triggered
|
||||
for m in ("math", "io", "random"):
|
||||
sys.modules.pop(m, None)
|
||||
importlib.import_module(m)
|
||||
|
||||
logs = [rec.message for rec in caplog.records]
|
||||
for mod in ["math", "io", "random"]:
|
||||
assert any(f"importing: {mod}" in msg for msg in logs), logs
|
||||
matches = [msg for msg in captured if f"importing: {mod}" in msg]
|
||||
assert len(matches) == 1, f"Expected 1 log for {mod}, got {len(matches)}; captured={captured}"
|
||||
Reference in New Issue
Block a user