Skip to content

Commit 834f55e

Browse files
committed
Merge pull request #7673 from bluetech/logging-fix-handler-restore
logging: fix handler level restored incorrectly if caplog.set_level is called more than once (cherry picked from commit 143e3ab)
1 parent 6110f84 commit 834f55e

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)