Skip to content

Commit

Permalink
collection: _recurse: skip __pycache__
Browse files Browse the repository at this point in the history
  • Loading branch information
blueyed committed Oct 30, 2018
1 parent cc531a1 commit 40228fc
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 14 deletions.
29 changes: 21 additions & 8 deletions src/_pytest/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -517,8 +517,19 @@ def _collect(self, arg):
# Let the Package collector deal with subnodes, don't collect here.
if argpath.check(dir=1):
assert not names, "invalid arg %r" % (arg,)

if six.PY2:

def filter_(f):
return f.check(file=1) and not f.strpath.endswith("*.pyc")

else:

def filter_(f):
return f.check(file=1)

for path in argpath.visit(
fil=lambda x: x.check(file=1), rec=self._recurse, bf=True, sort=True
fil=filter_, rec=self._recurse, bf=True, sort=True
):
pkginit = path.dirpath().join("__init__.py")
if pkginit.exists() and not any(x in pkginit.parts() for x in paths):
Expand Down Expand Up @@ -562,15 +573,17 @@ def _collectfile(self, path):

return ihook.pytest_collect_file(path=path, parent=self)

def _recurse(self, path):
ihook = self.gethookproxy(path.dirpath())
if ihook.pytest_ignore_collect(path=path, config=self.config):
return
def _recurse(self, dirpath):
if dirpath.basename == "__pycache__":
return False
ihook = self.gethookproxy(dirpath.dirpath())
if ihook.pytest_ignore_collect(path=dirpath, config=self.config):
return False
for pat in self._norecursepatterns:
if path.check(fnmatch=pat):
if dirpath.check(fnmatch=pat):
return False
ihook = self.gethookproxy(path)
ihook.pytest_collect_directory(path=path, parent=self)
ihook = self.gethookproxy(dirpath)
ihook.pytest_collect_directory(path=dirpath, parent=self)
return True

def _tryconvertpyarg(self, x):
Expand Down
14 changes: 8 additions & 6 deletions src/_pytest/python.py
Original file line number Diff line number Diff line change
Expand Up @@ -516,15 +516,17 @@ def __init__(self, fspath, parent=None, config=None, session=None, nodeid=None):
self._norecursepatterns = session._norecursepatterns
self.fspath = fspath

def _recurse(self, path):
ihook = self.gethookproxy(path.dirpath())
if ihook.pytest_ignore_collect(path=path, config=self.config):
def _recurse(self, dirpath):
if dirpath.basename == "__pycache__":
return False
ihook = self.gethookproxy(dirpath.dirpath())
if ihook.pytest_ignore_collect(path=dirpath, config=self.config):
return
for pat in self._norecursepatterns:
if path.check(fnmatch=pat):
if dirpath.check(fnmatch=pat):
return False
ihook = self.gethookproxy(path)
ihook.pytest_collect_directory(path=path, parent=self)
ihook = self.gethookproxy(dirpath)
ihook.pytest_collect_directory(path=dirpath, parent=self)
return True

def gethookproxy(self, fspath):
Expand Down

0 comments on commit 40228fc

Please sign in to comment.