Merge pull request #10051 from EmptyRabbit/dev_main
Fix stage caplog records not clear
This commit is contained in:
commit
966d4fb3e4
1
AUTHORS
1
AUTHORS
|
@ -366,5 +366,6 @@ Yuval Shimon
|
||||||
Zac Hatfield-Dodds
|
Zac Hatfield-Dodds
|
||||||
Zachary Kneupper
|
Zachary Kneupper
|
||||||
Zachary OBrien
|
Zachary OBrien
|
||||||
|
Zhouxin Qiu
|
||||||
Zoltán Máté
|
Zoltán Máté
|
||||||
Zsolt Cserna
|
Zsolt Cserna
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Ensure ``caplog.get_records(when)`` returns current/correct data after invoking ``caplog.clear()``.
|
|
@ -40,7 +40,6 @@ if TYPE_CHECKING:
|
||||||
else:
|
else:
|
||||||
logging_StreamHandler = logging.StreamHandler
|
logging_StreamHandler = logging.StreamHandler
|
||||||
|
|
||||||
|
|
||||||
DEFAULT_LOG_FORMAT = "%(levelname)-8s %(name)s:%(filename)s:%(lineno)d %(message)s"
|
DEFAULT_LOG_FORMAT = "%(levelname)-8s %(name)s:%(filename)s:%(lineno)d %(message)s"
|
||||||
DEFAULT_LOG_DATE_FORMAT = "%H:%M:%S"
|
DEFAULT_LOG_DATE_FORMAT = "%H:%M:%S"
|
||||||
_ANSI_ESCAPE_SEQ = re.compile(r"\x1b\[[\d;]+m")
|
_ANSI_ESCAPE_SEQ = re.compile(r"\x1b\[[\d;]+m")
|
||||||
|
@ -345,6 +344,10 @@ class LogCaptureHandler(logging_StreamHandler):
|
||||||
self.records = []
|
self.records = []
|
||||||
self.stream = StringIO()
|
self.stream = StringIO()
|
||||||
|
|
||||||
|
def clear(self) -> None:
|
||||||
|
self.records.clear()
|
||||||
|
self.stream = StringIO()
|
||||||
|
|
||||||
def handleError(self, record: logging.LogRecord) -> None:
|
def handleError(self, record: logging.LogRecord) -> None:
|
||||||
if logging.raiseExceptions:
|
if logging.raiseExceptions:
|
||||||
# Fail the test if the log message is bad (emit failed).
|
# Fail the test if the log message is bad (emit failed).
|
||||||
|
@ -440,7 +443,7 @@ class LogCaptureFixture:
|
||||||
|
|
||||||
def clear(self) -> None:
|
def clear(self) -> None:
|
||||||
"""Reset the list of log records and the captured log text."""
|
"""Reset the list of log records and the captured log text."""
|
||||||
self.handler.reset()
|
self.handler.clear()
|
||||||
|
|
||||||
def set_level(self, level: Union[int, str], logger: Optional[str] = None) -> None:
|
def set_level(self, level: Union[int, str], logger: Optional[str] = None) -> None:
|
||||||
"""Set the level of a logger for the duration of a test.
|
"""Set the level of a logger for the duration of a test.
|
||||||
|
|
|
@ -172,6 +172,24 @@ def test_caplog_captures_for_all_stages(caplog, logging_during_setup_and_teardow
|
||||||
assert set(caplog._item.stash[caplog_records_key]) == {"setup", "call"}
|
assert set(caplog._item.stash[caplog_records_key]) == {"setup", "call"}
|
||||||
|
|
||||||
|
|
||||||
|
def test_clear_for_call_stage(caplog, logging_during_setup_and_teardown):
|
||||||
|
logger.info("a_call_log")
|
||||||
|
assert [x.message for x in caplog.get_records("call")] == ["a_call_log"]
|
||||||
|
assert [x.message for x in caplog.get_records("setup")] == ["a_setup_log"]
|
||||||
|
assert set(caplog._item.stash[caplog_records_key]) == {"setup", "call"}
|
||||||
|
|
||||||
|
caplog.clear()
|
||||||
|
|
||||||
|
assert caplog.get_records("call") == []
|
||||||
|
assert [x.message for x in caplog.get_records("setup")] == ["a_setup_log"]
|
||||||
|
assert set(caplog._item.stash[caplog_records_key]) == {"setup", "call"}
|
||||||
|
|
||||||
|
logging.info("a_call_log_after_clear")
|
||||||
|
assert [x.message for x in caplog.get_records("call")] == ["a_call_log_after_clear"]
|
||||||
|
assert [x.message for x in caplog.get_records("setup")] == ["a_setup_log"]
|
||||||
|
assert set(caplog._item.stash[caplog_records_key]) == {"setup", "call"}
|
||||||
|
|
||||||
|
|
||||||
def test_ini_controls_global_log_level(pytester: Pytester) -> None:
|
def test_ini_controls_global_log_level(pytester: Pytester) -> None:
|
||||||
pytester.makepyfile(
|
pytester.makepyfile(
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue