Index: scripts/slave/recipe_modules/chromium_tests/steps.py |
diff --git a/scripts/slave/recipe_modules/chromium_tests/steps.py b/scripts/slave/recipe_modules/chromium_tests/steps.py |
index 8139e8375cadfbc6ba15acb9ce248250d6aedbbf..fe6dcff5f4236d957fea1becb79c66541e626463 100644 |
--- a/scripts/slave/recipe_modules/chromium_tests/steps.py |
+++ b/scripts/slave/recipe_modules/chromium_tests/steps.py |
@@ -1079,19 +1079,35 @@ class SwarmingIsolatedScriptTest(SwarmingTest): |
title=self._step_name(suffix), isolated_hash=isolated_hash, |
shards=self._shards, idempotent=False, extra_args=args) |
+ def validate_simplified_results(self, results): |
+ failures = results['failures'] |
+ valid = results['valid'] |
+ return results['valid'], results['failures'] |
+ |
+ def validate_json_test_results(self, api, results): |
+ test_results = api.test_utils.create_results_from_json(results) |
+ tests = test_results.tests |
+ failures = list(t for t in tests if |
+ tests[t]['expected'] != tests[t]['actual']) |
+ valid = results['num_failures_by_type'].get('FAIL', 0) == len(failures) |
+ return valid, failures |
+ |
def validate_task_results(self, api, step_result): |
results = getattr(step_result, 'isolated_script_results', None) or {} |
- |
+ valid = True |
+ failures = [] |
try: |
- failures = results['failures'] |
- valid = results['valid'] |
- if not failures and step_result.retcode != 0: |
- failures = ['%s (entire test suite)' % self.name] |
- valid = False |
+ if results.get('version', 0) == 3: |
+ valid, failures = self.validate_json_test_results(api, results) |
+ else: |
+ valid, failures = self.validate_simplified_results(results) |
except (ValueError, KeyError) as e: |
step_result.presentation.logs['invalid_results_exc'] = [str(e)] |
valid = False |
failures = None |
+ if not failures and step_result.retcode != 0: |
+ failures = ['%s (entire test suite)' % self.name] |
+ valid = False |
if valid: |
step_result.presentation.step_text += api.test_utils.format_step_text([ |
['failures:', failures] |