Merge pull request #1188 from nicoddemus/pytest_enter_pdb

Pass pytest config object to pytest_enter_pdb
This commit is contained in:
Ronny Pfannschmidt 2015-11-23 20:55:33 +01:00
commit df767cca8f
5 changed files with 17 additions and 6 deletions

View File

@ -7,6 +7,9 @@
`Config.fromdictargs` now represents its input much more faithfully. `Config.fromdictargs` now represents its input much more faithfully.
Thanks to Buck Evan for the complete PR. Thanks to Buck Evan for the complete PR.
* `pytest_enter_pdb` now optionally receives the pytest config object.
Thanks Bruno Oliveira for the PR.
2.8.2.dev 2.8.2.dev
--------- ---------

View File

@ -290,5 +290,10 @@ def pytest_exception_interact(node, call, report):
that is not an internal exception like "skip.Exception". that is not an internal exception like "skip.Exception".
""" """
def pytest_enter_pdb(): def pytest_enter_pdb(config):
""" called upon pdb.set_trace()""" """ called upon pdb.set_trace(), can be used by plugins to take special
action just before the python debugger enters in interactive mode.
:arg config: pytest config object
:type config: _pytest.config.Config
"""

View File

@ -37,7 +37,6 @@ class pytestPDB:
""" invoke PDB set_trace debugging, dropping any IO capturing. """ """ invoke PDB set_trace debugging, dropping any IO capturing. """
import _pytest.config import _pytest.config
frame = sys._getframe().f_back frame = sys._getframe().f_back
capman = None
if self._pluginmanager is not None: if self._pluginmanager is not None:
capman = self._pluginmanager.getplugin("capturemanager") capman = self._pluginmanager.getplugin("capturemanager")
if capman: if capman:
@ -45,7 +44,7 @@ class pytestPDB:
tw = _pytest.config.create_terminal_writer(self._config) tw = _pytest.config.create_terminal_writer(self._config)
tw.line() tw.line()
tw.sep(">", "PDB set_trace (IO-capturing turned off)") tw.sep(">", "PDB set_trace (IO-capturing turned off)")
self._pluginmanager.hook.pytest_enter_pdb() self._pluginmanager.hook.pytest_enter_pdb(config=self._config)
pdb.Pdb().set_trace(frame) pdb.Pdb().set_trace(frame)

View File

@ -501,7 +501,7 @@ reporting or interaction with exceptions:
.. autofunction:: pytest_internalerror .. autofunction:: pytest_internalerror
.. autofunction:: pytest_keyboard_interrupt .. autofunction:: pytest_keyboard_interrupt
.. autofunction:: pytest_exception_interact .. autofunction:: pytest_exception_interact
.. autofunction:: pytest_enter_pdb
Reference of objects involved in hooks Reference of objects involved in hooks

View File

@ -275,8 +275,12 @@ class TestPDB:
def test_enter_pdb_hook_is_called(self, testdir): def test_enter_pdb_hook_is_called(self, testdir):
testdir.makeconftest(""" testdir.makeconftest("""
def pytest_enter_pdb(): def pytest_enter_pdb(config):
assert config.testing_verification == 'configured'
print 'enter_pdb_hook' print 'enter_pdb_hook'
def pytest_configure(config):
config.testing_verification = 'configured'
""") """)
p1 = testdir.makepyfile(""" p1 = testdir.makepyfile("""
import pytest import pytest