diff options
author | Bruno Oliveira <nicoddemus@gmail.com> | 2020-05-16 16:05:12 -0300 |
---|---|---|
committer | Bruno Oliveira <nicoddemus@gmail.com> | 2020-05-17 11:26:30 -0300 |
commit | 9e1e7fcabe4ebcdbcdadbd1f3eb8866f3c1821a7 (patch) | |
tree | 5e9f854dd301ff19d0ad9de604b900a39e28f7e6 /testing/test_config.py | |
parent | 5eaebc1900e2c5c0fb911ff9c325efa80441d030 (diff) | |
download | pytest-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.py | 17 |
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()) |