fixtures: remove unneeded optimization from `_getnextfixturedef`

According to my understanding, this code, which handles obtaining the
relevant fixturedefs when a dynamic `getfixturevalue` is used, has an
optimization where it only grabs fixturedefs that are visible to the
*parent* of the item, instead of the item itself, under the assumption
that a fixturedef can't be visible to a single item, only to a
collector.

Remove this optimization for the following reasons:
- It doesn't save much (one loop iteration in `matchfactories`)
- It slightly complicates the complex fixtures code
- If some plugin wants to make a fixture visible only to a single item,
  why not let it?
- In the static case (`getfixtureclosure`), this optimization is not
  done (despite the confusing name `parentnode`, it is *not* the parent
  node). This is inconsistent.
This commit is contained in:
Ran Benita 2024-02-27 17:49:35 +02:00
parent 98b008ff6c
commit 686f9e0720
1 changed files with 1 additions and 3 deletions

View File

@ -413,9 +413,7 @@ class FixtureRequest(abc.ABC):
# We arrive here because of a dynamic call to # We arrive here because of a dynamic call to
# getfixturevalue(argname) usage which was naturally # getfixturevalue(argname) usage which was naturally
# not known at parsing/collection time. # not known at parsing/collection time.
parent = self._pyfuncitem.parent fixturedefs = self._fixturemanager.getfixturedefs(argname, self._pyfuncitem)
assert parent is not None
fixturedefs = self._fixturemanager.getfixturedefs(argname, parent)
if fixturedefs is not None: if fixturedefs is not None:
self._arg2fixturedefs[argname] = fixturedefs self._arg2fixturedefs[argname] = fixturedefs
# No fixtures defined with this name. # No fixtures defined with this name.