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

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

Issue 2439153002: Script for exporting WPT (Closed)
Patch Set: Linting Created 4 years, 2 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
« no previous file with comments | « third_party/WebKit/Tools/Scripts/webkitpy/w3c/sync.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
new file mode 100644
index 0000000000000000000000000000000000000000..bedfc08a90edec242da05ecade18ee5c661a275a
--- /dev/null
+++ b/third_party/WebKit/Tools/Scripts/webkitpy/w3c/test_exporter.py
@@ -0,0 +1,89 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import base64
+import os
+import httplib2
+import json
+from webkitpy.common.webkit_finder import WebKitFinder
+from webkitpy.w3c.local_wpt import LocalWPT
+from webkitpy.w3c.chromium_wpt import ChromiumWPT
+
+
+class TestExporter(object):
+
+ def __init__(self, host, options):
+ self.host = host
+ self.options = options
+ self.fs = self.host.filesystem
+ self.finder = WebKitFinder(self.host.filesystem)
+
+ def run(self):
+ # TODO: the script does not handle reverted changes right now
+
+ local_wpt = LocalWPT(self.host, no_fetch=self.options.no_fetch)
+ chromium_wpt = ChromiumWPT(self.host)
+ wpt_commit, cr_commit = local_wpt.most_recent_cr_commit()
+
+ if cr_commit:
+ self.host.print_('## Found last exported WPT commit:')
+ self.host.print_('## web-platform-tests@{0}'.format(wpt_commit))
+ self.host.print_('## chromium@{0}'.format(cr_commit))
+ else:
+ self.host.print_('## No Chromium export commits found in WPT, stopping.')
+ return
+
+ self.host.print_('## Finding exportable commits in Chromium...')
+ exportable_commits = chromium_wpt.exportable_commits_since(cr_commit)
+
+ if exportable_commits:
+ self.host.print_('## Found {0} exportable commits in chromium'.format(len(exportable_commits)))
+ for commit in exportable_commits:
+ self.host.print_('## {0} {1}'.format(commit[0:6], chromium_wpt.subject(commit)))
+ else:
+ self.host.print_('## No exportable commits found in Chromium, stopping.')
+ return
+
+ for commit in exportable_commits:
+ patch = chromium_wpt.wpt_diff_patch(commit)
+ message = chromium_wpt.message(commit)
+ # TODO: this is a placeholder until we land actual commits on chromium master
+ message += '\n\nCr-Commit-Position: refs/heads/master@{#427719}'
+ branch_name = 'chromium-try-{}'.format(commit)
+ local_wpt.create_branch_with_patch(branch_name, message, patch)
+
+ desc_title = chromium_wpt.subject(commit)
+ user = os.environ.get('GH_USER')
+ assert user
+ pr_branch_name = '{}:{}'.format(user, branch_name)
+ github_create_pr(pr_branch_name, desc_title)
+
jeffcarp 2016/10/31 18:46:34 Notes on this file: I'm thinking of removing the T
+
+def github_auth_token():
+ user = os.environ.get('GH_USER')
+ token = os.environ.get('GH_TOKEN')
+ assert user and token
+ return base64.encodestring('{}:{}'.format(user, token))
+
+
+def github_create_pr(branch_name, desc_title):
+ # https://developer.github.com/v3/pulls/#create-a-pull-request
+ conn = httplib2.Http()
+ headers = {
+ "Accept": "application/vnd.github.v3+json",
+ "Authorization": "Basic " + github_auth_token()
+ }
+ body = {
+ "title": desc_title,
+ "body": "Test PR - testing export from Chromium",
+ "head": branch_name,
+ "base": "master"
+ }
+ resp, content = conn.request("https://api.github.com/repos/w3c/web-platform-tests/pulls",
+ "POST", body=json.JSONEncoder().encode(body), headers=headers)
+ print "GitHub response:"
+ print content
+ if resp["status"] != "201":
+ return None
+ return json.loads(content)
« no previous file with comments | « third_party/WebKit/Tools/Scripts/webkitpy/w3c/sync.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698