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

Unified Diff: third_party/WebKit/Tools/Scripts/webkitpy/common/net/git_cl.py

Issue 2692423005: rebaseline-cl: Get latest try jobs using git-cl when no --issue given. (Closed)
Patch Set: Rebased Created 3 years, 10 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: third_party/WebKit/Tools/Scripts/webkitpy/common/net/git_cl.py
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/common/net/git_cl.py b/third_party/WebKit/Tools/Scripts/webkitpy/common/net/git_cl.py
index a47a938188ba81a404b3d57073a0ee8743513a0a..0dce4c6b9be6358e714c4c83ede05b5114775624 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/common/net/git_cl.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/common/net/git_cl.py
@@ -10,6 +10,9 @@ and Buildbucket to manage changelists and try jobs associated with them.
import json
import logging
+import re
+
+from webkitpy.common.net.buildbot import Build, filter_latest_builds
_log = logging.getLogger(__name__)
@@ -18,6 +21,7 @@ _COMMANDS_THAT_REQUIRE_AUTH = (
'presubmit', 'set-close', 'set-commit', 'status', 'try-results', 'try', 'upload',
)
+
class GitCL(object):
def __init__(self, host, auth_refresh_token_json=None, cwd=None):
@@ -59,8 +63,15 @@ class GitCL(object):
self._host.print_('Timed out waiting for try results.')
return None
+ def latest_try_jobs(self, builder_names=None):
+ """Returns a list of Builds for the latest jobs for the given builders."""
+ try_results = self.fetch_try_results()
+ if builder_names:
+ try_results = [r for r in try_results if r['builder_name'] in builder_names]
+ return filter_latest_builds(self._try_result_to_build(r) for r in try_results)
+
def fetch_try_results(self):
- """Requests results of try jobs for the current CL."""
+ """Requests results f try jobs for the current CL."""
with self._host.filesystem.mkdtemp() as temp_directory:
results_path = self._host.filesystem.join(temp_directory, 'try-results.json')
self.run(['try-results', '--json', results_path])
@@ -70,6 +81,18 @@ class GitCL(object):
return json.loads(contents)
@staticmethod
+ def _try_result_to_build(try_result):
+ """Converts a parsed try result dict to a Build object."""
+ builder_name = try_result['builder_name']
+ url = try_result['url']
+ if url is None:
+ return Build(builder_name, None)
+ match = re.match(r'.*/builds/(\d+)?$', url)
+ build_number = match.group(1)
+ assert build_number and build_number.isdigit()
+ return Build(builder_name, int(build_number))
+
+ @staticmethod
def all_jobs_finished(try_results):
return all(r.get('status') == 'COMPLETED' for r in try_results)

Powered by Google App Engine
This is Rietveld 408576698