Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(785)

Unified Diff: scripts/slave/recipe_modules/json/api.py

Issue 23889036: Refactor the way that TestApi works so that it is actually useful. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Move gclient test_api to got_revisions cl Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: scripts/slave/recipe_modules/json/api.py
diff --git a/scripts/slave/recipe_modules/json/api.py b/scripts/slave/recipe_modules/json/api.py
index 487f0320b40f99e22b2ae033e9f992d2b35d6d5b..0ba17507fd192e61b549fa5a81f852d6b4169cda 100644
--- a/scripts/slave/recipe_modules/json/api.py
+++ b/scripts/slave/recipe_modules/json/api.py
@@ -11,6 +11,8 @@ from cStringIO import StringIO
from slave import recipe_api
+from .util import TestResults
+
class StringListIO(object):
def __init__(self):
self.lines = [StringIO()]
@@ -31,54 +33,6 @@ class StringListIO(object):
self.lines[-1] = self.lines[-1].getvalue()
-def convert_trie_to_flat_paths(trie, prefix=None):
- # Cloned from webkitpy.layout_tests.layout_package.json_results_generator
- # so that this code can stand alone.
- result = {}
- for name, data in trie.iteritems():
- if prefix:
- name = prefix + "/" + name
-
- if len(data) and not "actual" in data and not "expected" in data:
- result.update(convert_trie_to_flat_paths(data, name))
- else:
- result[name] = data
-
- return result
-
-
-class TestResults(object):
- def __init__(self, jsonish):
- self.raw = jsonish
-
- self.tests = convert_trie_to_flat_paths(jsonish.get('tests', {}))
- self.passes = {}
- self.unexpected_passes = {}
- self.failures = {}
- self.unexpected_failures = {}
- self.flakes = {}
- self.unexpected_flakes = {}
-
- for (test, result) in self.tests.iteritems():
- key = 'unexpected_' if result.get('is_unexpected') else ''
- actual_result = result['actual']
- data = actual_result
- if ' PASS' in actual_result:
- key += 'flakes'
- elif actual_result == 'PASS':
- key += 'passes'
- data = result
- else:
- key += 'failures'
- getattr(self, key)[test] = data
-
- def __getattr__(self, key):
- if key in self.raw:
- return self.raw[key]
- raise AttributeError("'%s' object has no attribute '%s'" %
- (self.__class__, key)) # pragma: no cover
-
-
class JsonOutputPlaceholder(recipe_api.Placeholder):
"""JsonOutputPlaceholder is meant to be a placeholder object which, when added
to a step's cmd list, will be replaced by annotated_run with the command
@@ -188,4 +142,3 @@ class JsonApi(recipe_api.RecipeApi):
'--factory-properties', prop_str,
'--build-properties', prop_str
]
-

Powered by Google App Engine
This is Rietveld 408576698