Merge pull request #3570 from sangongs/fix_stack_finalizer

Continue to call finalizers in the stack when a finalizer raises an exception
This commit is contained in:
Anthony Sottile
2018-06-11 19:07:59 -07:00
committed by GitHub
4 changed files with 30 additions and 1 deletions
+10 -1
View File
@@ -527,10 +527,19 @@ class SetupState(object):
self._teardown_towards(needed_collectors)
def _teardown_towards(self, needed_collectors):
exc = None
while self.stack:
if self.stack == needed_collectors[:len(self.stack)]:
break
self._pop_and_teardown()
try:
self._pop_and_teardown()
except TEST_OUTCOME:
# XXX Only first exception will be seen by user,
# ideally all should be reported.
if exc is None:
exc = sys.exc_info()
if exc:
py.builtin._reraise(*exc)
def prepare(self, colitem):
""" setup objects along the collector chain to the test-method