handle and reraise subrequest finalizer exceptions

This commit is contained in:
Ryan Fitzpatrick
2017-06-12 20:39:42 -04:00
parent f0541b685b
commit 5a856b6e29
3 changed files with 35 additions and 2 deletions

View File

@@ -733,10 +733,16 @@ class FixtureDef:
self._finalizer.append(finalizer)
def finish(self):
exceptions = []
try:
while self._finalizer:
func = self._finalizer.pop()
func()
try:
func = self._finalizer.pop()
func()
except:
exceptions.append(sys.exc_info())
if exceptions:
py.builtin._reraise(*exceptions[0])
finally:
ihook = self._fixturemanager.session.ihook
ihook.pytest_fixture_post_finalizer(fixturedef=self)