Index: telemetry/telemetry/internal/story_runner.py |
diff --git a/telemetry/telemetry/internal/story_runner.py b/telemetry/telemetry/internal/story_runner.py |
index 4d736cd6d6dd6f3e6e705ed32855d9764a0ba113..f657bc4fbbed3c70822337f46165ab157fd37e04 100644 |
--- a/telemetry/telemetry/internal/story_runner.py |
+++ b/telemetry/telemetry/internal/story_runner.py |
@@ -69,8 +69,9 @@ def ProcessCommandLineArgs(parser, args): |
def _RunStoryAndProcessErrorIfNeeded(story, results, state, test): |
- def ProcessError(): |
- results.AddValue(failure.FailureValue(story, sys.exc_info())) |
+ def ProcessError(description=None): |
+ state.DumpStateUponFailure(story, results) |
+ results.AddValue(failure.FailureValue(story, sys.exc_info(), description)) |
try: |
if isinstance(test, story_test.StoryTest): |
test.WillRunStory(state.platform) |
@@ -94,9 +95,7 @@ def _RunStoryAndProcessErrorIfNeeded(story, results, state, test): |
results.AddValue( |
skip.SkipValue(story, 'Unsupported page action: %s' % e)) |
except Exception: |
- results.AddValue( |
- failure.FailureValue( |
- story, sys.exc_info(), 'Unhandlable exception raised.')) |
+ ProcessError(description='Unhandlable exception raised.') |
raise |
finally: |
has_existing_exception = (sys.exc_info() != (None, None, None)) |
@@ -110,6 +109,7 @@ def _RunStoryAndProcessErrorIfNeeded(story, results, state, test): |
test.DidRunPage(state.platform) |
except Exception: |
if not has_existing_exception: |
+ state.DumpStateUponFailure(story, results) |
raise |
# Print current exception and propagate existing exception. |
exception_formatter.PrintFormattedException( |