Merge pull request #7244 from DahlitzFlorian/fix-issue-7150
Prevent hiding underlying exception when ConfTestImportFailure is raised
This commit is contained in:
commit
45f53266e6
|
@ -0,0 +1 @@
|
||||||
|
Prevent hiding the underlying exception when ``ConfTestImportFailure`` is raised.
|
|
@ -4,6 +4,7 @@ import functools
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
from _pytest import outcomes
|
from _pytest import outcomes
|
||||||
|
from _pytest.config import ConftestImportFailure
|
||||||
from _pytest.config import hookimpl
|
from _pytest.config import hookimpl
|
||||||
from _pytest.config.exceptions import UsageError
|
from _pytest.config.exceptions import UsageError
|
||||||
|
|
||||||
|
@ -338,6 +339,10 @@ def _postmortem_traceback(excinfo):
|
||||||
# A doctest.UnexpectedException is not useful for post_mortem.
|
# A doctest.UnexpectedException is not useful for post_mortem.
|
||||||
# Use the underlying exception instead:
|
# Use the underlying exception instead:
|
||||||
return excinfo.value.exc_info[2]
|
return excinfo.value.exc_info[2]
|
||||||
|
elif isinstance(excinfo.value, ConftestImportFailure):
|
||||||
|
# A config.ConftestImportFailure is not useful for post_mortem.
|
||||||
|
# Use the underlying exception instead:
|
||||||
|
return excinfo.value.excinfo[2]
|
||||||
else:
|
else:
|
||||||
return excinfo._excinfo[2]
|
return excinfo._excinfo[2]
|
||||||
|
|
||||||
|
|
|
@ -342,6 +342,15 @@ class TestPDB:
|
||||||
child.sendeof()
|
child.sendeof()
|
||||||
self.flush(child)
|
self.flush(child)
|
||||||
|
|
||||||
|
def test_pdb_prevent_ConftestImportFailure_hiding_exception(self, testdir):
|
||||||
|
testdir.makepyfile("def test_func(): pass")
|
||||||
|
sub_dir = testdir.tmpdir.join("ns").ensure_dir()
|
||||||
|
sub_dir.join("conftest").new(ext=".py").write("import unknown")
|
||||||
|
sub_dir.join("test_file").new(ext=".py").write("def test_func(): pass")
|
||||||
|
|
||||||
|
result = testdir.runpytest_subprocess("--pdb", ".")
|
||||||
|
result.stdout.fnmatch_lines(["-> import unknown"])
|
||||||
|
|
||||||
def test_pdb_interaction_capturing_simple(self, testdir):
|
def test_pdb_interaction_capturing_simple(self, testdir):
|
||||||
p1 = testdir.makepyfile(
|
p1 = testdir.makepyfile(
|
||||||
"""
|
"""
|
||||||
|
|
Loading…
Reference in New Issue