At long last I have updated my pytest-timeout plugin. pytest-timeout is a plugin to py.test which will interrupt tests which are taking longer then a set time and dump the stack traces of all threads. This was initially developed in order to debug some some tests which would occasionally hang on a CI server and can be used in a variety of similar situations where getting some output is more useful then getting a clean testrun.
The main new feature of this release is that the plugin now finally
works nicely with the
--pdb option from py.test. When using this
option the timeout plugin will now no longer interrupt the interactive
pdb session after the given timeout.
Secondly this release fixes an important bug which meant that a
timeout in the finaliser of a fixture at the end of the session would
not be caught by the plugin. This was mainly because pytest-timeout
was not updated since py.test changed the way fixtures where cached
on their scope, the introduction of
even though this was a long time ago.
So if you use py.test and a CI server I suggest now is as good a time as any to configure it to use pytest-timeout, using a fairly large timeout of say 300 seconds, then forget about it forever. Until maybe one day it will suddenly save you a lot of head scratching and time.