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):
|
def _check_initialpaths_for_relpath(session, fspath):
|
||||||
for initial_path in session._initialpaths:
|
for initial_path in session._initialpaths:
|
||||||
if fspath.common(initial_path) == initial_path:
|
if fspath.common(initial_path) == initial_path:
|
||||||
return fspath.relto(initial_path.dirname)
|
return fspath.relto(initial_path)
|
||||||
|
|
||||||
|
|
||||||
class FSCollector(Collector):
|
class FSCollector(Collector):
|
||||||
|
|
|
@ -663,11 +663,11 @@ class TestInvocationVariants(object):
|
||||||
assert result.ret == 0
|
assert result.ret == 0
|
||||||
result.stdout.fnmatch_lines(
|
result.stdout.fnmatch_lines(
|
||||||
[
|
[
|
||||||
"*test_hello.py::test_hello*PASSED*",
|
"test_hello.py::test_hello*PASSED*",
|
||||||
"*test_hello.py::test_other*PASSED*",
|
"test_hello.py::test_other*PASSED*",
|
||||||
"*test_world.py::test_world*PASSED*",
|
"ns_pkg/world/test_world.py::test_world*PASSED*",
|
||||||
"*test_world.py::test_other*PASSED*",
|
"ns_pkg/world/test_world.py::test_other*PASSED*",
|
||||||
"*4 passed*",
|
"*4 passed in*",
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
import py
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from _pytest import nodes
|
from _pytest import nodes
|
||||||
|
|
||||||
|
@ -29,3 +31,23 @@ def test_std_warn_not_pytestwarning(testdir):
|
||||||
)
|
)
|
||||||
with pytest.raises(ValueError, match=".*instance of PytestWarning.*"):
|
with pytest.raises(ValueError, match=".*instance of PytestWarning.*"):
|
||||||
items[0].warn(UserWarning("some warning"))
|
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 = testdir.runpytest("--rootdir={}".format(path))
|
||||||
result.stdout.fnmatch_lines(
|
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