diff options
author | Ran Benita <ran@unusedvar.com> | 2020-09-29 09:29:27 +0300 |
---|---|---|
committer | Ran Benita <ran@unusedvar.com> | 2020-09-29 15:23:47 +0300 |
commit | 61f80a783a38441040c5999a4033af8004ee4c6b (patch) | |
tree | 1d351b41e5268d14ceeb22a977f46440e8dc6c12 /testing/test_terminal.py | |
parent | db08c7fbb049592ef81485ceb40d41e5a3265840 (diff) | |
download | pytest-61f80a783a38441040c5999a4033af8004ee4c6b.tar.gz |
terminal: fix crash in header reporting when absolute testpaths is used
Regressed in 6.1.0 in 62e249a1f934d1073c9a0167077e133c5e0f6270.
The `x` is an `str` but is expected to be a `pathlib.Path`. Not caught
by mypy because `config.getini()` returns `Any`.
Fix by just removing the `bestrelpath` call:
- testpaths are always relative to the rootdir, it thus would be very
unusual to specify an absolute path there.
- The code was wrong even before the regression: `py.path.local`'s
`bestrelpath` function expects a `py.path.local`, not an `str`. But it
had some weird `try ... except AttributeError` fallback which just
returns the argument, i.e. it was a no-op. So there is no behavior
change.
- It seems reasonable to me to just print the full path if that's what
the ini specifies.
Diffstat (limited to 'testing/test_terminal.py')
-rw-r--r-- | testing/test_terminal.py | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/testing/test_terminal.py b/testing/test_terminal.py index 57db1b9a5..51fdf728e 100644 --- a/testing/test_terminal.py +++ b/testing/test_terminal.py @@ -18,6 +18,7 @@ import pytest from _pytest._io.wcwidth import wcswidth from _pytest.config import Config from _pytest.config import ExitCode +from _pytest.monkeypatch import MonkeyPatch from _pytest.pathlib import Path from _pytest.pytester import Testdir from _pytest.reports import BaseReport @@ -749,6 +750,29 @@ class TestTerminalFunctional: result = testdir.runpytest("tests") result.stdout.fnmatch_lines(["rootdir: *test_header0, configfile: tox.ini"]) + def test_header_absolute_testpath( + self, testdir: Testdir, monkeypatch: MonkeyPatch + ) -> None: + """Regresstion test for #7814.""" + tests = testdir.tmpdir.join("tests") + tests.ensure_dir() + testdir.makepyprojecttoml( + """ + [tool.pytest.ini_options] + testpaths = ['{}'] + """.format( + tests + ) + ) + result = testdir.runpytest() + result.stdout.fnmatch_lines( + [ + "rootdir: *absolute_testpath0, configfile: pyproject.toml, testpaths: {}".format( + tests + ) + ] + ) + def test_no_header(self, testdir): testdir.tmpdir.join("tests").ensure_dir() testdir.tmpdir.join("gui").ensure_dir() |