Skip to content

Commit 96728d5

Browse files
Anton3bluetech
andcommitted
fixtures: fix pytest_fixture_post_finalizer sometimes called multiple times
Fixes #5848. Co-authored-by: Ran Benita <ran@unusedvar.com>
1 parent 2e04907 commit 96728d5

2 files changed

Lines changed: 6 additions & 0 deletions

File tree

changelog/5848.bugfix.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
:hook:`pytest_fixture_post_finalizer` is no longer called extra times for the same fixture teardown in some cases.

src/_pytest/fixtures.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,6 +1028,11 @@ def addfinalizer(self, finalizer: Callable[[], object]) -> None:
10281028
self._finalizers.append(finalizer)
10291029

10301030
def finish(self, request: SubRequest) -> None:
1031+
if self.cached_result is None:
1032+
# Already finished. It is assumed that finalizers cannot be added in
1033+
# this state.
1034+
return
1035+
10311036
exceptions: list[BaseException] = []
10321037
while self._finalizers:
10331038
fin = self._finalizers.pop()

0 commit comments

Comments
 (0)