Skip to content

Commit 79d0d3e

Browse files
authored
Merge pull request #7676 from bluetech/backport-7673
[6.0.x] logging: fix handler level restored incorrectly if caplog.set_level is called more than once
2 parents 6110f84 + 834f55e commit 79d0d3e

File tree

3 files changed

+4
-1
lines changed

3 files changed

+4
-1
lines changed

changelog/7672.bugfix.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fixed log-capturing level restored incorrectly if ``caplog.set_level`` is called more than once.

src/_pytest/logging.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,8 @@ def set_level(self, level: Union[int, str], logger: Optional[str] = None) -> Non
437437
# save the original log-level to restore it during teardown
438438
self._initial_logger_levels.setdefault(logger, logger_obj.level)
439439
logger_obj.setLevel(level)
440-
self._initial_handler_level = self.handler.level
440+
if self._initial_handler_level is None:
441+
self._initial_handler_level = self.handler.level
441442
self.handler.setLevel(level)
442443

443444
@contextmanager

testing/logging/test_fixture.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,7 @@ def test_change_level_undos_handler_level(testdir: Testdir) -> None:
6565
6666
def test1(caplog):
6767
assert caplog.handler.level == 0
68+
caplog.set_level(9999)
6869
caplog.set_level(41)
6970
assert caplog.handler.level == 41
7071

0 commit comments

Comments
 (0)