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

Unified Diff: third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter.py

Issue 2544173002: Skip commits that don't generate a patch + fixes to get export working (Closed)
Patch Set: Refactor TestExporter, clean up other parts Created 4 years 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/w3c/test_exporter.py
diff --git a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter.py b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter.py
index d7f5b4de58e3a7336669c8ec0e8c52f8ca9d6a65..07c08165d11e12853bf8a74081ed9cbb1ed504eb 100644
--- a/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter.py
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter.py
@@ -18,32 +18,40 @@ class TestExporter(object):
self.dry_run = dry_run
def run(self):
- # First, poll for an in-flight pull request and merge if exists
pull_requests = self.wpt_github.in_flight_pull_requests()
if len(pull_requests) == 1:
- pull_request = pull_requests.pop()
-
- _log.info('In-flight PR found: #%d', pull_request['number'])
- _log.info(pull_request['title'])
-
- # TODO(jeffcarp): Check the PR status here
-
- if self.dry_run:
- _log.info('[dry_run] Would have attempted to merge PR')
- else:
- _log.info('Merging...')
- self.wpt_github.merge_pull_request(pull_request['number'])
- _log.info('PR merged!')
+ self.merge_pull_request(pull_requests.pop())
elif len(pull_requests) > 1:
_log.error(pull_requests)
# TODO(jeffcarp): Print links to PRs
raise Exception('More than two in-flight PRs!')
+ else:
+ self.create_export_pull_request()
+
+ def merge_pull_request(self, pull_request):
+ """Attempts to merge an in-flight PR.
+
+ Args:
+ pull_request: a dict representing the pull request.
+ """
+ _log.info('In-flight PR found: #%d', pull_request['number'])
+ _log.info(pull_request['title'])
+
+ # TODO(jeffcarp): Check the PR status here
- # Second, look for exportable commits in Chromium
- # At this point, no in-flight PRs should exist
- # If there was an issue merging, it should have errored out
- local_wpt = LocalWPT(self.host, use_github=False)
+ if self.dry_run:
+ _log.info('[dry_run] Would have attempted to merge PR')
qyearsley 2016/12/07 19:05:36 Optional minor rephrasing: "[dry run] Would attemp
+ else:
+ _log.info('Merging...')
+ self.wpt_github.merge_pull_request(pull_request['number'])
+ _log.info('PR merged!')
+ # TODO(jeffcarp): Delete remote branch after merging
+
+ def create_export_pull_request(self):
+ """Looks for exportable commits in Chromium, creates one PR if exists.
+ """
qyearsley 2016/12/07 19:05:36 Possible rephrasing: Creates a PR for the earlies
+ local_wpt = LocalWPT(self.host)
chromium_wpt = ChromiumWPT(self.host)
# TODO(jeffcarp): have the script running this fetch Chromium origin/master
@@ -65,6 +73,16 @@ class TestExporter(object):
# TODO(jeffcarp): Have this function return ChromiumCommits
exportable_commits = chromium_wpt.exportable_commits_since(chromium_commit.sha)
+ def has_patch(commit):
+ # TODO(jeffcarp): now do a test comparison of patch against local WPT
+ # TODO(jeffcarp): dedupe from format_patch below
+ outbound_commit = ChromiumCommit(self.host, sha=commit)
+ patch = outbound_commit.format_patch()
+ output = local_wpt.test_patch(patch)
+ return bool(output)
+
+ exportable_commits = filter(has_patch, exportable_commits)
+
if not exportable_commits:
_log.info('No exportable commits found in Chromium, stopping.')
return
qyearsley 2016/12/07 19:05:36 Note: we'll want to extract a separate function to
jeffcarp 2016/12/07 20:24:38 I'd prefer landing this on master and doing it in
@@ -80,8 +98,6 @@ class TestExporter(object):
patch = outbound_commit.format_patch()
message = outbound_commit.message()
- # TODO: now do a test comparison of patch against local WPT
-
if self.dry_run:
_log.info('[dry_run] Stopping before creating PR')
_log.info('\n\n[dry_run] message:')
@@ -90,9 +106,11 @@ class TestExporter(object):
_log.info(patch)
return
- local_branch_name = local_wpt.create_branch_with_patch(message, patch)
+ remote_branch_name = local_wpt.create_branch_with_patch(message, patch)
self.wpt_github.create_pr(
- local_branch_name=local_branch_name,
+ remote_branch_name=remote_branch_name,
desc_title=outbound_commit.subject(),
body=outbound_commit.body())
+
+ # TODO(jeffcarp): Create a comment on the PR to CC foolip and qyearsley

Powered by Google App Engine
This is Rietveld 408576698