[pytest-dev] Disabling timeout for pdb

holger krekel holger at merlinux.eu
Sun Sep 14 17:00:43 CEST 2014


Hi Wolfgang, Bruno,

On Sat, Sep 13, 2014 at 15:53 -0300, Bruno Oliveira wrote:
> Hi,
> 
> > 1. Am I missing something or does pytest indeed completely seal off its
> internals?
> 
> Not really, you can access _pytest module directly:
> >>> import _pytest.pdb
> >>> _pytest.pdb.pytestPDB
> <class _pytest.pdb.pytestPDB at 0x026F0500>

Right, pytest's functionality is implemented in core builtin 
plugins living at _pytest/*.py (except for core.py which is the plugin
mechanism itself).  Core and 3rd party plugins expose functions/objects
to be exposed at "pytest.*" via the pytest_namespace hook.  This
approach has advantages but also disadvantages in that it's not easy to
just read the source and discover how pytest startup actually happens.

> > 2. Am I approaching this wrong? How else could I go about achieving my
> goal of disabling the timeout?
> 
> Personally I would try to implement this in pytest-timeout instead,
> possibly by adding a `disable_all_timeouts()` API function would be called
> automatically when `pdb.set_trace()` is called. This also leaves room for
> other code to disable timeout handling if needed.

What we probabl need is a new hook, "pytest_enter_pdb" maybe, which
pytest-timeout can implement to switch off timeout  handling.
pytest would call this hook in the "pdb.set_trace()" interception 
code around _pytest/pdb.py:34.

best,
holger


More information about the Pytest-dev mailing list