diff --git a/_pytest/debugging.py b/_pytest/debugging.py index d7dca7809..e458406b5 100644 --- a/_pytest/debugging.py +++ b/_pytest/debugging.py @@ -95,13 +95,17 @@ def _enter_pdb(node, excinfo, rep): def _postmortem_traceback(excinfo): - # A doctest.UnexpectedException is not useful for post_mortem. - # Use the underlying exception instead: - from doctest import UnexpectedException - if isinstance(excinfo.value, UnexpectedException): - return excinfo.value.exc_info[2] - else: - return excinfo._excinfo[2] + try: + from doctest import UnexpectedException + if isinstance(excinfo.value, UnexpectedException): + # A doctest.UnexpectedException is not useful for post_mortem. + # Use the underlying exception instead: + return excinfo.value.exc_info[2] + except ImportError: + # If we fail to import, continue quietly (if we ran out of file descriptors, for example: #1810) + pass + + return excinfo._excinfo[2] def _find_last_non_hidden_frame(stack): diff --git a/changelog/1810.bugfix b/changelog/1810.bugfix new file mode 100644 index 000000000..6e9389671 --- /dev/null +++ b/changelog/1810.bugfix @@ -0,0 +1 @@ +If we fail to import doctest.UnexpectedException during postmortem, fail quietly and continue. \ No newline at end of file