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