config: optimize PytestPluginManager._getconftestmodules

Now that it's no longer using `@lru_cache`, use another check to avoid
re-computation. Although `@lru_cache` is faster than the full function
call + checks, this approach also has the advantage that the caching
works for more than 128 entries.
This commit is contained in:
Ran Benita 2021-10-01 14:50:57 +03:00
parent 614f5394b5
commit 16e5fbe371
1 changed files with 8 additions and 1 deletions

View File

@ -533,12 +533,19 @@ class PytestPluginManager(PluginManager):
else:
directory = path
# Optimization: avoid repeated searches in the same directory.
# Assumes always called with same importmode and rootpath.
existing_clist = self._dirpath2confmods.get(directory)
if existing_clist:
return existing_clist
# XXX these days we may rather want to use config.rootpath
# and allow users to opt into looking into the rootdir parent
# directories instead of requiring to specify confcutdir.
clist = []
confcutdir_parents = self._confcutdir.parents if self._confcutdir else []
for parent in reversed((directory, *directory.parents)):
if self._confcutdir and parent in self._confcutdir.parents:
if parent in confcutdir_parents:
continue
conftestpath = parent / "conftest.py"
if conftestpath.is_file():