fixtures: add `_iter_chain` helper method
Will be reused in the next commit.
This commit is contained in:
parent
98b008ff6c
commit
c83c1c4bda
|
@ -540,6 +540,16 @@ class FixtureRequest(abc.ABC):
|
|||
)
|
||||
return fixturedef.cached_result[0]
|
||||
|
||||
def _iter_chain(self) -> Iterator["SubRequest"]:
|
||||
"""Yield all SubRequests in the chain, from self up.
|
||||
|
||||
Note: does *not* yield the TopRequest.
|
||||
"""
|
||||
current = self
|
||||
while isinstance(current, SubRequest):
|
||||
yield current
|
||||
current = current._parent_request
|
||||
|
||||
def _get_active_fixturedef(
|
||||
self, argname: str
|
||||
) -> Union["FixtureDef[object]", PseudoFixtureDef[object]]:
|
||||
|
@ -557,11 +567,7 @@ class FixtureRequest(abc.ABC):
|
|||
return fixturedef
|
||||
|
||||
def _get_fixturestack(self) -> List["FixtureDef[Any]"]:
|
||||
current = self
|
||||
values: List[FixtureDef[Any]] = []
|
||||
while isinstance(current, SubRequest):
|
||||
values.append(current._fixturedef) # type: ignore[has-type]
|
||||
current = current._parent_request
|
||||
values = [request._fixturedef for request in self._iter_chain()]
|
||||
values.reverse()
|
||||
return values
|
||||
|
||||
|
@ -705,7 +711,7 @@ class SubRequest(FixtureRequest):
|
|||
)
|
||||
self._parent_request: Final[FixtureRequest] = request
|
||||
self._scope_field: Final = scope
|
||||
self._fixturedef: Final = fixturedef
|
||||
self._fixturedef: Final[FixtureDef[object]] = fixturedef
|
||||
if param is not NOTSET:
|
||||
self.param = param
|
||||
self.param_index: Final = param_index
|
||||
|
|
Loading…
Reference in New Issue