Fix recursion bug if a pytest_ignore_collect returns False instead of None

This commit is contained in:
Bruno Oliveira 2018-08-03 15:39:36 -03:00
parent dcafb8c48c
commit fe0a76e1a6
2 changed files with 7 additions and 3 deletions

View File

@ -0,0 +1 @@
Fix infinite recursion during collection if a ``pytest_ignore_collect`` returns ``False`` instead of ``None``.

View File

@ -561,7 +561,7 @@ class Package(Module):
def _recurse(self, path): def _recurse(self, path):
ihook = self.gethookproxy(path.dirpath()) ihook = self.gethookproxy(path.dirpath())
if ihook.pytest_ignore_collect(path=path, config=self.config): if ihook.pytest_ignore_collect(path=path, config=self.config):
return return False
for pat in self._norecursepatterns: for pat in self._norecursepatterns:
if path.check(fnmatch=pat): if path.check(fnmatch=pat):
return False return False
@ -594,9 +594,12 @@ class Package(Module):
return path in self.session._initialpaths return path in self.session._initialpaths
def collect(self): def collect(self):
path = self.fspath.dirpath() this_path = self.fspath.dirpath()
pkg_prefix = None pkg_prefix = None
for path in path.visit(fil=lambda x: 1, rec=self._recurse, bf=True, sort=True): for path in this_path.visit(rec=self._recurse, bf=True, sort=True):
# we will visit our own __init__.py file, in which case we skip it
if path.basename == "__init__.py" and path.dirpath() == this_path:
continue
if pkg_prefix and pkg_prefix in path.parts(): if pkg_prefix and pkg_prefix in path.parts():
continue continue
for x in self._collectfile(path): for x in self._collectfile(path):