Remove/replace some more unnecessary uses of py.path

This commit is contained in:
Ran Benita 2021-03-14 22:20:53 +02:00
parent a03ee02817
commit f0c7043138
17 changed files with 75 additions and 78 deletions

View File

@ -2,9 +2,9 @@
import pytest import pytest
def pytest_collect_file(parent, path): def pytest_collect_file(parent, fspath):
if path.ext == ".yaml" and path.basename.startswith("test"): if fspath.suffix == ".yaml" and fspath.name.startswith("test"):
return YamlFile.from_parent(parent, fspath=path) return YamlFile.from_parent(parent, path=fspath)
class YamlFile(pytest.File): class YamlFile(pytest.File):
@ -12,7 +12,7 @@ class YamlFile(pytest.File):
# We need a yaml parser, e.g. PyYAML. # We need a yaml parser, e.g. PyYAML.
import yaml import yaml
raw = yaml.safe_load(self.fspath.open()) raw = yaml.safe_load(self.path.open())
for name, spec in sorted(raw.items()): for name, spec in sorted(raw.items()):
yield YamlItem.from_parent(self, name=name, spec=spec) yield YamlItem.from_parent(self, name=name, spec=spec)

View File

@ -28,7 +28,6 @@ from _pytest._code.code import ExceptionInfo
from _pytest._code.code import ReprFileLocation from _pytest._code.code import ReprFileLocation
from _pytest._code.code import TerminalRepr from _pytest._code.code import TerminalRepr
from _pytest._io import TerminalWriter from _pytest._io import TerminalWriter
from _pytest.compat import LEGACY_PATH
from _pytest.compat import legacy_path from _pytest.compat import legacy_path
from _pytest.compat import safe_getattr from _pytest.compat import safe_getattr
from _pytest.config import Config from _pytest.config import Config
@ -122,7 +121,6 @@ def pytest_unconfigure() -> None:
def pytest_collect_file( def pytest_collect_file(
fspath: Path, fspath: Path,
path: LEGACY_PATH,
parent: Collector, parent: Collector,
) -> Optional[Union["DoctestModule", "DoctestTextfile"]]: ) -> Optional[Union["DoctestModule", "DoctestTextfile"]]:
config = parent.config config = parent.config

View File

@ -465,7 +465,7 @@ class Session(nodes.FSCollector):
def __init__(self, config: Config) -> None: def __init__(self, config: Config) -> None:
super().__init__( super().__init__(
path=config.rootpath, path=config.rootpath,
fspath=config.rootdir, fspath=None,
parent=None, parent=None,
config=config, config=config,
session=self, session=self,

View File

@ -912,7 +912,7 @@ class Pytester:
example_dir = self._request.config.getini("pytester_example_dir") example_dir = self._request.config.getini("pytester_example_dir")
if example_dir is None: if example_dir is None:
raise ValueError("pytester_example_dir is unset, can't copy examples") raise ValueError("pytester_example_dir is unset, can't copy examples")
example_dir = Path(str(self._request.config.rootdir)) / example_dir example_dir = self._request.config.rootpath / example_dir
for extra_element in self._request.node.iter_markers("pytester_example_path"): for extra_element in self._request.node.iter_markers("pytester_example_path"):
assert extra_element.args assert extra_element.args

View File

@ -210,11 +210,11 @@ def path_matches_patterns(path: Path, patterns: Iterable[str]) -> bool:
return any(fnmatch_ex(pattern, path) for pattern in patterns) return any(fnmatch_ex(pattern, path) for pattern in patterns)
def pytest_pycollect_makemodule(fspath: Path, path: LEGACY_PATH, parent) -> "Module": def pytest_pycollect_makemodule(fspath: Path, parent) -> "Module":
if fspath.name == "__init__.py": if fspath.name == "__init__.py":
pkg: Package = Package.from_parent(parent, fspath=path) pkg: Package = Package.from_parent(parent, path=fspath)
return pkg return pkg
mod: Module = Module.from_parent(parent, fspath=path) mod: Module = Module.from_parent(parent, path=fspath)
return mod return mod
@ -691,7 +691,7 @@ class Package(Module):
assert ( assert (
fspath.is_file() fspath.is_file()
), "{!r} is not a file (isdir={!r}, exists={!r}, islink={!r})".format( ), "{!r} is not a file (isdir={!r}, exists={!r}, islink={!r})".format(
path, fspath.is_dir(), fspath.exists(), fspath.is_symlink() fspath, fspath.is_dir(), fspath.exists(), fspath.is_symlink()
) )
ihook = self.session.gethookproxy(fspath) ihook = self.session.gethookproxy(fspath)
if not self.session.isinitpath(fspath): if not self.session.isinitpath(fspath):

View File

@ -304,9 +304,9 @@ class TestGeneralUsage:
class MyCollector(pytest.File): class MyCollector(pytest.File):
def collect(self): def collect(self):
return [MyItem.from_parent(name="xyz", parent=self)] return [MyItem.from_parent(name="xyz", parent=self)]
def pytest_collect_file(path, parent): def pytest_collect_file(fspath, parent):
if path.basename.startswith("conftest"): if fspath.name.startswith("conftest"):
return MyCollector.from_parent(fspath=path, parent=parent) return MyCollector.from_parent(path=fspath, parent=parent)
""" """
) )
result = pytester.runpytest(c.name + "::" + "xyz") result = pytester.runpytest(c.name + "::" + "xyz")

View File

@ -114,13 +114,13 @@ def dummy_yaml_custom_test(pytester: Pytester):
""" """
import pytest import pytest
def pytest_collect_file(parent, path): def pytest_collect_file(parent, fspath):
if path.ext == ".yaml" and path.basename.startswith("test"): if fspath.suffix == ".yaml" and fspath.name.startswith("test"):
return YamlFile.from_parent(fspath=path, parent=parent) return YamlFile.from_parent(path=fspath, parent=parent)
class YamlFile(pytest.File): class YamlFile(pytest.File):
def collect(self): def collect(self):
yield YamlItem.from_parent(name=self.fspath.basename, parent=self) yield YamlItem.from_parent(name=self.path.name, parent=self)
class YamlItem(pytest.Item): class YamlItem(pytest.Item):
def runtest(self): def runtest(self):

View File

@ -1,2 +1,2 @@
def pytest_ignore_collect(path): def pytest_ignore_collect(fspath):
return False return False

View File

@ -11,5 +11,5 @@ class CustomFile(pytest.File):
yield CustomItem.from_parent(name="foo", parent=self) yield CustomItem.from_parent(name="foo", parent=self)
def pytest_collect_file(path, parent): def pytest_collect_file(fspath, parent):
return CustomFile.from_parent(fspath=path, parent=parent) return CustomFile.from_parent(path=fspath, parent=parent)

View File

@ -6,8 +6,8 @@ class MyFile(pytest.File):
return [MyItem.from_parent(name="hello", parent=self)] return [MyItem.from_parent(name="hello", parent=self)]
def pytest_collect_file(path, parent): def pytest_collect_file(fspath, parent):
return MyFile.from_parent(fspath=path, parent=parent) return MyFile.from_parent(path=fspath, parent=parent)
class MyItem(pytest.Item): class MyItem(pytest.Item):

View File

@ -778,9 +778,9 @@ class TestConftestCustomization:
import pytest import pytest
class MyModule(pytest.Module): class MyModule(pytest.Module):
pass pass
def pytest_pycollect_makemodule(path, parent): def pytest_pycollect_makemodule(fspath, parent):
if path.basename == "test_xyz.py": if fspath.name == "test_xyz.py":
return MyModule.from_parent(fspath=path, parent=parent) return MyModule.from_parent(path=fspath, parent=parent)
""" """
) )
pytester.makepyfile("def test_some(): pass") pytester.makepyfile("def test_some(): pass")
@ -882,9 +882,9 @@ class TestConftestCustomization:
return Loader() return Loader()
sys.meta_path.append(Finder()) sys.meta_path.append(Finder())
def pytest_collect_file(path, parent): def pytest_collect_file(fspath, parent):
if path.ext == ".narf": if fspath.suffix == ".narf":
return Module.from_parent(fspath=path, parent=parent)""" return Module.from_parent(path=fspath, parent=parent)"""
) )
pytester.makefile( pytester.makefile(
".narf", ".narf",

View File

@ -3208,10 +3208,10 @@ class TestRequestScopeAccess:
pytestmark = pytest.mark.parametrize( pytestmark = pytest.mark.parametrize(
("scope", "ok", "error"), ("scope", "ok", "error"),
[ [
["session", "", "fspath class function module"], ["session", "", "path class function module"],
["module", "module fspath", "cls function"], ["module", "module path", "cls function"],
["class", "module fspath cls", "function"], ["class", "module path cls", "function"],
["function", "module fspath cls function", ""], ["function", "module path cls function", ""],
], ],
) )

View File

@ -95,9 +95,9 @@ class TestCollector:
import pytest import pytest
class CustomFile(pytest.File): class CustomFile(pytest.File):
pass pass
def pytest_collect_file(path, parent): def pytest_collect_file(fspath, parent):
if path.ext == ".xxx": if fspath.suffix == ".xxx":
return CustomFile.from_parent(fspath=path, parent=parent) return CustomFile.from_parent(path=fspath, parent=parent)
""" """
) )
node = pytester.getpathnode(hello) node = pytester.getpathnode(hello)
@ -271,15 +271,15 @@ class TestCollectPluginHookRelay:
wascalled = [] wascalled = []
class Plugin: class Plugin:
def pytest_collect_file(self, path): def pytest_collect_file(self, fspath: Path) -> None:
if not path.basename.startswith("."): if not fspath.name.startswith("."):
# Ignore hidden files, e.g. .testmondata. # Ignore hidden files, e.g. .testmondata.
wascalled.append(path) wascalled.append(fspath)
pytester.makefile(".abc", "xyz") pytester.makefile(".abc", "xyz")
pytest.main(pytester.path, plugins=[Plugin()]) pytest.main(pytester.path, plugins=[Plugin()])
assert len(wascalled) == 1 assert len(wascalled) == 1
assert wascalled[0].ext == ".abc" assert wascalled[0].suffix == ".abc"
class TestPrunetraceback: class TestPrunetraceback:
@ -292,15 +292,15 @@ class TestPrunetraceback:
pytester.makeconftest( pytester.makeconftest(
""" """
import pytest import pytest
def pytest_collect_file(path, parent): def pytest_collect_file(fspath, parent):
return MyFile.from_parent(fspath=path, parent=parent) return MyFile.from_parent(path=fspath, parent=parent)
class MyError(Exception): class MyError(Exception):
pass pass
class MyFile(pytest.File): class MyFile(pytest.File):
def collect(self): def collect(self):
raise MyError() raise MyError()
def repr_failure(self, excinfo): def repr_failure(self, excinfo):
if excinfo.errisinstance(MyError): if isinstance(excinfo.value, MyError):
return "hello world" return "hello world"
return pytest.File.repr_failure(self, excinfo) return pytest.File.repr_failure(self, excinfo)
""" """
@ -335,9 +335,8 @@ class TestCustomConftests:
def test_ignore_collect_path(self, pytester: Pytester) -> None: def test_ignore_collect_path(self, pytester: Pytester) -> None:
pytester.makeconftest( pytester.makeconftest(
""" """
def pytest_ignore_collect(path, config): def pytest_ignore_collect(fspath, config):
return path.basename.startswith("x") or \ return fspath.name.startswith("x") or fspath.name == "test_one.py"
path.basename == "test_one.py"
""" """
) )
sub = pytester.mkdir("xy123") sub = pytester.mkdir("xy123")
@ -352,7 +351,7 @@ class TestCustomConftests:
def test_ignore_collect_not_called_on_argument(self, pytester: Pytester) -> None: def test_ignore_collect_not_called_on_argument(self, pytester: Pytester) -> None:
pytester.makeconftest( pytester.makeconftest(
""" """
def pytest_ignore_collect(path, config): def pytest_ignore_collect(fspath, config):
return True return True
""" """
) )
@ -420,9 +419,9 @@ class TestCustomConftests:
import pytest import pytest
class MyModule(pytest.Module): class MyModule(pytest.Module):
pass pass
def pytest_collect_file(path, parent): def pytest_collect_file(fspath, parent):
if path.ext == ".py": if fspath.suffix == ".py":
return MyModule.from_parent(fspath=path, parent=parent) return MyModule.from_parent(path=fspath, parent=parent)
""" """
) )
pytester.mkdir("sub") pytester.mkdir("sub")
@ -438,9 +437,9 @@ class TestCustomConftests:
import pytest import pytest
class MyModule1(pytest.Module): class MyModule1(pytest.Module):
pass pass
def pytest_collect_file(path, parent): def pytest_collect_file(fspath, parent):
if path.ext == ".py": if fspath.suffix == ".py":
return MyModule1.from_parent(fspath=path, parent=parent) return MyModule1.from_parent(path=fspath, parent=parent)
""" """
) )
conf1.replace(sub1.joinpath(conf1.name)) conf1.replace(sub1.joinpath(conf1.name))
@ -449,9 +448,9 @@ class TestCustomConftests:
import pytest import pytest
class MyModule2(pytest.Module): class MyModule2(pytest.Module):
pass pass
def pytest_collect_file(path, parent): def pytest_collect_file(fspath, parent):
if path.ext == ".py": if fspath.suffix == ".py":
return MyModule2.from_parent(fspath=path, parent=parent) return MyModule2.from_parent(path=fspath, parent=parent)
""" """
) )
conf2.replace(sub2.joinpath(conf2.name)) conf2.replace(sub2.joinpath(conf2.name))
@ -540,9 +539,9 @@ class TestSession:
class SpecialFile(pytest.File): class SpecialFile(pytest.File):
def collect(self): def collect(self):
return [SpecialItem.from_parent(name="check", parent=self)] return [SpecialItem.from_parent(name="check", parent=self)]
def pytest_collect_file(path, parent): def pytest_collect_file(fspath, parent):
if path.basename == %r: if fspath.name == %r:
return SpecialFile.from_parent(fspath=path, parent=parent) return SpecialFile.from_parent(path=fspath, parent=parent)
""" """
% p.name % p.name
) )
@ -762,13 +761,13 @@ def test_matchnodes_two_collections_same_file(pytester: Pytester) -> None:
config.pluginmanager.register(Plugin2()) config.pluginmanager.register(Plugin2())
class Plugin2(object): class Plugin2(object):
def pytest_collect_file(self, path, parent): def pytest_collect_file(self, fspath, parent):
if path.ext == ".abc": if fspath.suffix == ".abc":
return MyFile2.from_parent(fspath=path, parent=parent) return MyFile2.from_parent(path=fspath, parent=parent)
def pytest_collect_file(path, parent): def pytest_collect_file(fspath, parent):
if path.ext == ".abc": if fspath.suffix == ".abc":
return MyFile1.from_parent(fspath=path, parent=parent) return MyFile1.from_parent(path=fspath, parent=parent)
class MyFile1(pytest.File): class MyFile1(pytest.File):
def collect(self): def collect(self):

View File

@ -629,7 +629,7 @@ def test_hook_proxy(pytester: Pytester) -> None:
"root/demo-0/test_foo1.py": "def test1(): pass", "root/demo-0/test_foo1.py": "def test1(): pass",
"root/demo-a/test_foo2.py": "def test1(): pass", "root/demo-a/test_foo2.py": "def test1(): pass",
"root/demo-a/conftest.py": """\ "root/demo-a/conftest.py": """\
def pytest_ignore_collect(path, config): def pytest_ignore_collect(fspath, config):
return True return True
""", """,
"root/demo-b/test_foo3.py": "def test1(): pass", "root/demo-b/test_foo3.py": "def test1(): pass",

View File

@ -979,9 +979,9 @@ class TestNonPython:
pytester.makeconftest( pytester.makeconftest(
""" """
import pytest import pytest
def pytest_collect_file(path, parent): def pytest_collect_file(fspath, parent):
if path.ext == ".xyz": if fspath.suffix == ".xyz":
return MyItem.from_parent(name=path.basename, parent=parent) return MyItem.from_parent(name=fspath.name, parent=parent)
class MyItem(pytest.Item): class MyItem(pytest.Item):
def runtest(self): def runtest(self):
raise ValueError(42) raise ValueError(42)
@ -1430,9 +1430,9 @@ def test_fancy_items_regression(pytester: Pytester, run_and_parse: RunAndParse)
NoFunItem.from_parent(name='b', parent=self), NoFunItem.from_parent(name='b', parent=self),
] ]
def pytest_collect_file(path, parent): def pytest_collect_file(fspath, parent):
if path.check(ext='.py'): if fspath.suffix == '.py':
return FunCollector.from_parent(fspath=path, parent=parent) return FunCollector.from_parent(path=fspath, parent=parent)
""" """
) )

View File

@ -1303,7 +1303,7 @@ def test_xfail_item(pytester: Pytester) -> None:
def runtest(self): def runtest(self):
pytest.xfail("Expected Failure") pytest.xfail("Expected Failure")
def pytest_collect_file(path, parent): def pytest_collect_file(fspath, parent):
return MyItem.from_parent(name="foo", parent=parent) return MyItem.from_parent(name="foo", parent=parent)
""" """
) )
@ -1377,7 +1377,7 @@ def test_mark_xfail_item(pytester: Pytester) -> None:
def runtest(self): def runtest(self):
assert False assert False
def pytest_collect_file(path, parent): def pytest_collect_file(fspath, parent):
return MyItem.from_parent(name="foo", parent=parent) return MyItem.from_parent(name="foo", parent=parent)
""" """
) )

View File

@ -1036,8 +1036,8 @@ class TestTerminalFunctional:
def test_report_collectionfinish_hook(self, pytester: Pytester, params) -> None: def test_report_collectionfinish_hook(self, pytester: Pytester, params) -> None:
pytester.makeconftest( pytester.makeconftest(
""" """
def pytest_report_collectionfinish(config, startpath, startdir, items): def pytest_report_collectionfinish(config, startpath, items):
return ['hello from hook: {0} items'.format(len(items))] return [f'hello from hook: {len(items)} items']
""" """
) )
pytester.makepyfile( pytester.makepyfile(
@ -1462,7 +1462,7 @@ class TestGenericReporting:
) )
pytester.mkdir("a").joinpath("conftest.py").write_text( pytester.mkdir("a").joinpath("conftest.py").write_text(
""" """
def pytest_report_header(config, startdir, startpath): def pytest_report_header(config, startpath):
return ["line1", str(startpath)] return ["line1", str(startpath)]
""" """
) )