From e7eb7e799bdfbd9ec167cdd0684291216ef169a3 Mon Sep 17 00:00:00 2001 From: Daniel Hahler Date: Wed, 19 Sep 2018 12:31:00 +0200 Subject: [PATCH] logging: del item.catch_log_handler only in teardown Without this caplog.record_tuples etc is not available anymore when using `--pdb`. --- changelog/3998.bugfix.rst | 1 + src/_pytest/logging.py | 2 +- testing/test_pdb.py | 18 ++++++++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 changelog/3998.bugfix.rst diff --git a/changelog/3998.bugfix.rst b/changelog/3998.bugfix.rst new file mode 100644 index 000000000..9bb0fb7ad --- /dev/null +++ b/changelog/3998.bugfix.rst @@ -0,0 +1 @@ +Fix caplog's catch_log_handler not being available with --pdb diff --git a/src/_pytest/logging.py b/src/_pytest/logging.py index c9c65c4c1..2d0f54a64 100644 --- a/src/_pytest/logging.py +++ b/src/_pytest/logging.py @@ -445,8 +445,8 @@ class LoggingPlugin(object): try: yield # run test finally: - del item.catch_log_handler if when == "teardown": + del item.catch_log_handler del item.catch_log_handlers if self.print_logs: diff --git a/testing/test_pdb.py b/testing/test_pdb.py index ed1c49a1a..246f514b4 100644 --- a/testing/test_pdb.py +++ b/testing/test_pdb.py @@ -397,6 +397,24 @@ class TestPDB(object): child.read() self.flush(child) + def test_pdb_with_caplog_on_pdb_invocation(self, testdir): + p1 = testdir.makepyfile( + """ + def test_1(capsys, caplog): + import logging + logging.getLogger(__name__).warning("some_warning") + assert 0 + """ + ) + child = testdir.spawn_pytest("--pdb %s" % str(p1)) + child.send("caplog.record_tuples\n") + child.expect_exact( + "[('test_pdb_with_caplog_on_pdb_invocation', 30, 'some_warning')]" + ) + child.sendeof() + child.read() + self.flush(child) + def test_set_trace_capturing_afterwards(self, testdir): p1 = testdir.makepyfile( """