summaryrefslogtreecommitdiff
path: root/testing/test_terminal.py
diff options
context:
space:
mode:
authorRan Benita <ran@unusedvar.com>2020-09-29 09:29:27 +0300
committerRan Benita <ran@unusedvar.com>2020-09-29 15:23:47 +0300
commit61f80a783a38441040c5999a4033af8004ee4c6b (patch)
tree1d351b41e5268d14ceeb22a977f46440e8dc6c12 /testing/test_terminal.py
parentdb08c7fbb049592ef81485ceb40d41e5a3265840 (diff)
downloadpytest-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.py24
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()