Skip to content

Commit

Permalink
Merge pull request #7842 from bluetech/backport-7817
Browse files Browse the repository at this point in the history
[6.1.x] terminal: fix crash in header reporting when absolute testpaths is used
  • Loading branch information
bluetech committed Oct 3, 2020
2 parents bcb94c4 + 1521849 commit 9df5267
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 3 deletions.
1 change: 1 addition & 0 deletions changelog/7814.bugfix.rst
@@ -0,0 +1 @@
Fixed crash in header reporting when :confval:`testpaths` is used and contains absolute paths (regression in 6.1.0).
6 changes: 3 additions & 3 deletions src/_pytest/terminal.py
Expand Up @@ -718,10 +718,10 @@ def pytest_report_header(self, config: Config) -> List[str]:
if config.inipath:
line += ", configfile: " + bestrelpath(config.rootpath, config.inipath)

testpaths = config.getini("testpaths")
testpaths = config.getini("testpaths") # type: List[str]
if testpaths and config.args == testpaths:
rel_paths = [bestrelpath(config.rootpath, x) for x in testpaths]
line += ", testpaths: {}".format(", ".join(rel_paths))
line += ", testpaths: {}".format(", ".join(testpaths))

result = [line]

plugininfo = config.pluginmanager.list_plugin_distinfo()
Expand Down
24 changes: 24 additions & 0 deletions testing/test_terminal.py
Expand Up @@ -18,6 +18,7 @@
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
Expand Down Expand Up @@ -749,6 +750,29 @@ def test_header(self, testdir):
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()
Expand Down

0 comments on commit 9df5267

Please sign in to comment.