summaryrefslogtreecommitdiff
path: root/testing/test_config.py
diff options
context:
space:
mode:
authorBruno Oliveira <nicoddemus@gmail.com>2020-05-16 16:05:12 -0300
committerBruno Oliveira <nicoddemus@gmail.com>2020-05-17 11:26:30 -0300
commit9e1e7fcabe4ebcdbcdadbd1f3eb8866f3c1821a7 (patch)
tree5e9f854dd301ff19d0ad9de604b900a39e28f7e6 /testing/test_config.py
parent5eaebc1900e2c5c0fb911ff9c325efa80441d030 (diff)
downloadpytest-9e1e7fcabe4ebcdbcdadbd1f3eb8866f3c1821a7.tar.gz
Use a nice string repr for ConftestImportFailure
The default message is often hard to read: E _pytest.config.ConftestImportFailure: (local('D:\\projects\\pytest\\.tmp\\root\\foo\\conftest.py'), (<class 'RuntimeError'>, RuntimeError('some error',), <traceback object at 0x000001CCC3E39348>)) Using a shorter message is better: E _pytest.config.ConftestImportFailure: RuntimeError: some error (from D:\projects\pytest\.tmp\root\foo\conftest.py) And we don't really lose any information due to exception chaining.
Diffstat (limited to 'testing/test_config.py')
-rw-r--r--testing/test_config.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/testing/test_config.py b/testing/test_config.py
index f6bf0499f..7d553e63b 100644
--- a/testing/test_config.py
+++ b/testing/test_config.py
@@ -10,6 +10,7 @@ import pytest
from _pytest.compat import importlib_metadata
from _pytest.config import _iter_rewritable_modules
from _pytest.config import Config
+from _pytest.config import ConftestImportFailure
from _pytest.config import ExitCode
from _pytest.config.exceptions import UsageError
from _pytest.config.findpaths import determine_setup
@@ -1471,3 +1472,19 @@ class TestPytestPluginsVariable:
assert res.ret == 0
msg = "Defining 'pytest_plugins' in a non-top-level conftest is no longer supported"
assert msg not in res.stdout.str()
+
+
+def test_conftest_import_error_repr(tmpdir):
+ """
+ ConftestImportFailure should use a short error message and readable path to the failed
+ conftest.py file
+ """
+ path = tmpdir.join("foo/conftest.py")
+ with pytest.raises(
+ ConftestImportFailure,
+ match=re.escape("RuntimeError: some error (from {})".format(path)),
+ ):
+ try:
+ raise RuntimeError("some error")
+ except Exception:
+ raise ConftestImportFailure(path, sys.exc_info())