diff --git a/src/_pytest/main.py b/src/_pytest/main.py index b0386bc65..21a6b648c 100644 --- a/src/_pytest/main.py +++ b/src/_pytest/main.py @@ -587,28 +587,6 @@ class Session(nodes.FSCollector): return yield from m - def _collectfile(self, path, handle_dupes=True): - assert ( - path.isfile() - ), "{!r} is not a file (isdir={!r}, exists={!r}, islink={!r})".format( - path, path.isdir(), path.exists(), path.islink() - ) - ihook = self.gethookproxy(path) - if not self.isinitpath(path): - if ihook.pytest_ignore_collect(path=path, config=self.config): - return () - - if handle_dupes: - keepduplicates = self.config.getoption("keepduplicates") - if not keepduplicates: - duplicate_paths = self.config.pluginmanager._duplicatepaths - if path in duplicate_paths: - return () - else: - duplicate_paths.add(path) - - return ihook.pytest_collect_file(path=path, parent=self) - @staticmethod def _visit_filter(f): return f.check(file=1) diff --git a/src/_pytest/nodes.py b/src/_pytest/nodes.py index 133e93df7..dbf93356f 100644 --- a/src/_pytest/nodes.py +++ b/src/_pytest/nodes.py @@ -502,6 +502,28 @@ class FSCollector(Collector): ihook.pytest_collect_directory(path=dirpath, parent=self) return True + def _collectfile(self, path, handle_dupes=True): + assert ( + path.isfile() + ), "{!r} is not a file (isdir={!r}, exists={!r}, islink={!r})".format( + path, path.isdir(), path.exists(), path.islink() + ) + ihook = self.gethookproxy(path) + if not self.isinitpath(path): + if ihook.pytest_ignore_collect(path=path, config=self.config): + return () + + if handle_dupes: + keepduplicates = self.config.getoption("keepduplicates") + if not keepduplicates: + duplicate_paths = self.config.pluginmanager._duplicatepaths + if path in duplicate_paths: + return () + else: + duplicate_paths.add(path) + + return ihook.pytest_collect_file(path=path, parent=self) + class File(FSCollector): """ base class for collecting tests from a file. """ diff --git a/src/_pytest/python.py b/src/_pytest/python.py index ae19fa568..ff00c4c45 100644 --- a/src/_pytest/python.py +++ b/src/_pytest/python.py @@ -593,31 +593,6 @@ class Package(Module): def gethookproxy(self, fspath: py.path.local): return super()._gethookproxy(fspath) - def _collectfile(self, path, handle_dupes=True): - assert ( - path.isfile() - ), "{!r} is not a file (isdir={!r}, exists={!r}, islink={!r})".format( - path, path.isdir(), path.exists(), path.islink() - ) - ihook = self.gethookproxy(path) - if not self.isinitpath(path): - if ihook.pytest_ignore_collect(path=path, config=self.config): - return () - - if handle_dupes: - keepduplicates = self.config.getoption("keepduplicates") - if not keepduplicates: - duplicate_paths = self.config.pluginmanager._duplicatepaths - if path in duplicate_paths: - return () - else: - duplicate_paths.add(path) - - if self.fspath == path: # __init__.py - return [self] - - return ihook.pytest_collect_file(path=path, parent=self) - def isinitpath(self, path): return path in self.session._initialpaths