Skip to content

Commit

Permalink
Merge pull request #7676 from bluetech/backport-7673
Browse files Browse the repository at this point in the history
[6.0.x] logging: fix handler level restored incorrectly if caplog.set_level is called more than once
  • Loading branch information
bluetech committed Aug 23, 2020
2 parents 6110f84 + 834f55e commit 79d0d3e
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 1 deletion.
1 change: 1 addition & 0 deletions changelog/7672.bugfix.rst
@@ -0,0 +1 @@
Fixed log-capturing level restored incorrectly if ``caplog.set_level`` is called more than once.
3 changes: 2 additions & 1 deletion src/_pytest/logging.py
Expand Up @@ -437,7 +437,8 @@ def set_level(self, level: Union[int, str], logger: Optional[str] = None) -> Non
# save the original log-level to restore it during teardown
self._initial_logger_levels.setdefault(logger, logger_obj.level)
logger_obj.setLevel(level)
self._initial_handler_level = self.handler.level
if self._initial_handler_level is None:
self._initial_handler_level = self.handler.level
self.handler.setLevel(level)

@contextmanager
Expand Down
1 change: 1 addition & 0 deletions testing/logging/test_fixture.py
Expand Up @@ -65,6 +65,7 @@ def test_change_level_undos_handler_level(testdir: Testdir) -> None:
def test1(caplog):
assert caplog.handler.level == 0
caplog.set_level(9999)
caplog.set_level(41)
assert caplog.handler.level == 41
Expand Down

0 comments on commit 79d0d3e

Please sign in to comment.