Fix nodes._check_initialpaths_for_relpath for dirs
Ref: https://github.com/pytest-dev/pytest/issues/4321#issuecomment-436951894 Hardens some of the not many tests affected by this: 1. `testing/test_session.py::test_rootdir_option_arg` displayed: > root/test_rootdir_option_arg2/test_rootdir_option_arg.py 2. `test_cmdline_python_namespace_package` displayed "hello/" prefix for: > hello/test_hello.py::test_hello > hello/test_hello.py::test_other
This commit is contained in:
parent
e00f3a2fb7
commit
bee72a6622
|
@ -447,7 +447,7 @@ class Collector(Node):
|
|||
def _check_initialpaths_for_relpath(session, fspath):
|
||||
for initial_path in session._initialpaths:
|
||||
if fspath.common(initial_path) == initial_path:
|
||||
return fspath.relto(initial_path.dirname)
|
||||
return fspath.relto(initial_path)
|
||||
|
||||
|
||||
class FSCollector(Collector):
|
||||
|
|
|
@ -663,11 +663,11 @@ class TestInvocationVariants(object):
|
|||
assert result.ret == 0
|
||||
result.stdout.fnmatch_lines(
|
||||
[
|
||||
"*test_hello.py::test_hello*PASSED*",
|
||||
"*test_hello.py::test_other*PASSED*",
|
||||
"*test_world.py::test_world*PASSED*",
|
||||
"*test_world.py::test_other*PASSED*",
|
||||
"*4 passed*",
|
||||
"test_hello.py::test_hello*PASSED*",
|
||||
"test_hello.py::test_other*PASSED*",
|
||||
"ns_pkg/world/test_world.py::test_world*PASSED*",
|
||||
"ns_pkg/world/test_world.py::test_other*PASSED*",
|
||||
"*4 passed in*",
|
||||
]
|
||||
)
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
import py
|
||||
|
||||
import pytest
|
||||
from _pytest import nodes
|
||||
|
||||
|
@ -29,3 +31,23 @@ def test_std_warn_not_pytestwarning(testdir):
|
|||
)
|
||||
with pytest.raises(ValueError, match=".*instance of PytestWarning.*"):
|
||||
items[0].warn(UserWarning("some warning"))
|
||||
|
||||
|
||||
def test__check_initialpaths_for_relpath():
|
||||
"""Ensure that it handles dirs, and does not always use dirname."""
|
||||
cwd = py.path.local()
|
||||
|
||||
class FakeSession:
|
||||
_initialpaths = [cwd]
|
||||
|
||||
assert nodes._check_initialpaths_for_relpath(FakeSession, cwd) == ""
|
||||
|
||||
sub = cwd.join("file")
|
||||
|
||||
class FakeSession:
|
||||
_initialpaths = [cwd]
|
||||
|
||||
assert nodes._check_initialpaths_for_relpath(FakeSession, sub) == "file"
|
||||
|
||||
outside = py.path.local("/outside")
|
||||
assert nodes._check_initialpaths_for_relpath(FakeSession, outside) is None
|
||||
|
|
|
@ -323,7 +323,11 @@ def test_rootdir_option_arg(testdir, monkeypatch, path):
|
|||
|
||||
result = testdir.runpytest("--rootdir={}".format(path))
|
||||
result.stdout.fnmatch_lines(
|
||||
["*rootdir: {}/root, inifile:*".format(testdir.tmpdir), "*1 passed*"]
|
||||
[
|
||||
"*rootdir: {}/root, inifile:*".format(testdir.tmpdir),
|
||||
"root/test_rootdir_option_arg.py *",
|
||||
"*1 passed*",
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue