caplog un-disable logging, add missing test coverage
- Address review ad rebase to latest from main - Make `force_enable_logging` private. Issue: https://github.com/pytest-dev/pytest/issues/8711 PR: https://github.com/pytest-dev/pytest/pull/8758
This commit is contained in:
parent
150914d70a
commit
7f89996717
|
@ -458,22 +458,22 @@ class LogCaptureFixture:
|
||||||
"""Reset the list of log records and the captured log text."""
|
"""Reset the list of log records and the captured log text."""
|
||||||
self.handler.clear()
|
self.handler.clear()
|
||||||
|
|
||||||
def force_enable_logging(
|
def _force_enable_logging(
|
||||||
self, level: Union[int, str], logger_obj: logging.Logger
|
self, level: Union[int, str], logger_obj: logging.Logger
|
||||||
) -> int:
|
) -> int:
|
||||||
"""Enable the desired logging level if the level was disabled.
|
"""Enable the desired logging level if the global level was disabled via ``logging.disabled``.
|
||||||
|
|
||||||
Only enables logging levels greater than or equal to the requested ``level``.
|
Only enables logging levels greater than or equal to the requested ``level``.
|
||||||
|
|
||||||
Does nothing if the desired ``level`` wasn't disabled.
|
Does nothing if the desired ``level`` wasn't disabled.
|
||||||
|
|
||||||
:param Union[int, str] level:
|
:param level:
|
||||||
The logger level caplog should capture.
|
The logger level caplog should capture.
|
||||||
All logging is enabled if a non-standard logging level string is supplied.
|
All logging is enabled if a non-standard logging level string is supplied.
|
||||||
Valid level strings are in :data:`logging._nameToLevel`.
|
Valid level strings are in :data:`logging._nameToLevel`.
|
||||||
:param Logger logger_obj: The logger object to check.
|
:param logger_obj: The logger object to check.
|
||||||
|
|
||||||
:return int: The original disabled logging level.
|
:return: The original disabled logging level.
|
||||||
"""
|
"""
|
||||||
original_disable_level: int = logger_obj.manager.disable # type: ignore[attr-defined]
|
original_disable_level: int = logger_obj.manager.disable # type: ignore[attr-defined]
|
||||||
|
|
||||||
|
@ -511,7 +511,7 @@ class LogCaptureFixture:
|
||||||
if self._initial_handler_level is None:
|
if self._initial_handler_level is None:
|
||||||
self._initial_handler_level = self.handler.level
|
self._initial_handler_level = self.handler.level
|
||||||
self.handler.setLevel(level)
|
self.handler.setLevel(level)
|
||||||
initial_disabled_logging_level = self.force_enable_logging(level, logger_obj)
|
initial_disabled_logging_level = self._force_enable_logging(level, logger_obj)
|
||||||
if self._initial_disabled_logging_level is None:
|
if self._initial_disabled_logging_level is None:
|
||||||
self._initial_disabled_logging_level = initial_disabled_logging_level
|
self._initial_disabled_logging_level = initial_disabled_logging_level
|
||||||
|
|
||||||
|
@ -533,7 +533,7 @@ class LogCaptureFixture:
|
||||||
logger_obj.setLevel(level)
|
logger_obj.setLevel(level)
|
||||||
handler_orig_level = self.handler.level
|
handler_orig_level = self.handler.level
|
||||||
self.handler.setLevel(level)
|
self.handler.setLevel(level)
|
||||||
original_disable_level = self.force_enable_logging(level, logger_obj)
|
original_disable_level = self._force_enable_logging(level, logger_obj)
|
||||||
try:
|
try:
|
||||||
yield
|
yield
|
||||||
finally:
|
finally:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# type: ignore[attr-defined]
|
# mypy: disable-error-code="attr-defined"
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
|
@ -88,7 +88,7 @@ def test_change_level_undo(pytester: Pytester) -> None:
|
||||||
def test_change_disabled_level_undo(
|
def test_change_disabled_level_undo(
|
||||||
pytester: Pytester, cleanup_disabled_logging
|
pytester: Pytester, cleanup_disabled_logging
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Ensure that 'force_enable_logging' in 'set_level' is undone after the end of the test.
|
"""Ensure that '_force_enable_logging' in 'set_level' is undone after the end of the test.
|
||||||
|
|
||||||
Tests the logging output themselves (affected by disabled logging level).
|
Tests the logging output themselves (affected by disabled logging level).
|
||||||
"""
|
"""
|
||||||
|
@ -200,7 +200,7 @@ def test_with_statement_logging_disabled(caplog, cleanup_disabled_logging):
|
||||||
def test_force_enable_logging_level_string(
|
def test_force_enable_logging_level_string(
|
||||||
caplog, cleanup_disabled_logging, level_str, expected_disable_level
|
caplog, cleanup_disabled_logging, level_str, expected_disable_level
|
||||||
):
|
):
|
||||||
"""Test force_enable_logging using a level string.
|
"""Test _force_enable_logging using a level string.
|
||||||
|
|
||||||
``expected_disable_level`` is one level below ``level_str`` because the disabled log level
|
``expected_disable_level`` is one level below ``level_str`` because the disabled log level
|
||||||
always needs to be *at least* one level lower than the level that caplog is trying to capture.
|
always needs to be *at least* one level lower than the level that caplog is trying to capture.
|
||||||
|
@ -211,7 +211,7 @@ def test_force_enable_logging_level_string(
|
||||||
# Make sure all logging is disabled.
|
# Make sure all logging is disabled.
|
||||||
assert not test_logger.isEnabledFor(logging.CRITICAL)
|
assert not test_logger.isEnabledFor(logging.CRITICAL)
|
||||||
# Un-disable logging for `level_str`.
|
# Un-disable logging for `level_str`.
|
||||||
caplog.force_enable_logging(level_str, test_logger)
|
caplog._force_enable_logging(level_str, test_logger)
|
||||||
# Make sure that the disabled level is now one below the requested logging level.
|
# Make sure that the disabled level is now one below the requested logging level.
|
||||||
# We don't use `isEnabledFor` here because that also checks the level set by
|
# We don't use `isEnabledFor` here because that also checks the level set by
|
||||||
# `logging.setLevel()` which is irrelevant to `logging.disable()`.
|
# `logging.setLevel()` which is irrelevant to `logging.disable()`.
|
||||||
|
|
Loading…
Reference in New Issue