summaryrefslogtreecommitdiff
path: root/src/_pytest/python.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/_pytest/python.py')
-rw-r--r--src/_pytest/python.py25
1 files changed, 16 insertions, 9 deletions
diff --git a/src/_pytest/python.py b/src/_pytest/python.py
index 407f924a5..18e449b93 100644
--- a/src/_pytest/python.py
+++ b/src/_pytest/python.py
@@ -10,6 +10,7 @@ import warnings
from collections import Counter
from collections import defaultdict
from functools import partial
+from pathlib import Path
from typing import Any
from typing import Callable
from typing import Dict
@@ -187,17 +188,19 @@ def pytest_pyfunc_call(pyfuncitem: "Function") -> Optional[object]:
def pytest_collect_file(
- path: py.path.local, parent: nodes.Collector
+ fspath: Path, path: py.path.local, parent: nodes.Collector
) -> Optional["Module"]:
ext = path.ext
if ext == ".py":
- if not parent.session.isinitpath(path):
+ if not parent.session.isinitpath(fspath):
if not path_matches_patterns(
path, parent.config.getini("python_files") + ["__init__.py"]
):
return None
- ihook = parent.session.gethookproxy(path)
- module: Module = ihook.pytest_pycollect_makemodule(path=path, parent=parent)
+ ihook = parent.session.gethookproxy(fspath)
+ module: Module = ihook.pytest_pycollect_makemodule(
+ fspath=fspath, path=path, parent=parent
+ )
return module
return None
@@ -664,9 +667,10 @@ class Package(Module):
def _recurse(self, direntry: "os.DirEntry[str]") -> bool:
if direntry.name == "__pycache__":
return False
- path = py.path.local(direntry.path)
- ihook = self.session.gethookproxy(path.dirpath())
- if ihook.pytest_ignore_collect(path=path, config=self.config):
+ fspath = Path(direntry.path)
+ path = py.path.local(fspath)
+ ihook = self.session.gethookproxy(fspath.parent)
+ if ihook.pytest_ignore_collect(fspath=fspath, path=path, config=self.config):
return False
norecursepatterns = self.config.getini("norecursedirs")
if any(path.check(fnmatch=pat) for pat in norecursepatterns):
@@ -676,6 +680,7 @@ class Package(Module):
def _collectfile(
self, path: py.path.local, handle_dupes: bool = True
) -> Sequence[nodes.Collector]:
+ fspath = Path(path)
assert (
path.isfile()
), "{!r} is not a file (isdir={!r}, exists={!r}, islink={!r})".format(
@@ -683,7 +688,9 @@ class Package(Module):
)
ihook = self.session.gethookproxy(path)
if not self.session.isinitpath(path):
- if ihook.pytest_ignore_collect(path=path, config=self.config):
+ if ihook.pytest_ignore_collect(
+ fspath=fspath, path=path, config=self.config
+ ):
return ()
if handle_dupes:
@@ -695,7 +702,7 @@ class Package(Module):
else:
duplicate_paths.add(path)
- return ihook.pytest_collect_file(path=path, parent=self) # type: ignore[no-any-return]
+ return ihook.pytest_collect_file(fspath=fspath, path=path, parent=self) # type: ignore[no-any-return]
def collect(self) -> Iterable[Union[nodes.Item, nodes.Collector]]:
this_path = self.fspath.dirpath()