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

Unified Diff: PRESUBMIT.py

Issue 1010603003: Cherrypick post upload hook changes in PRESUBMIT.py of m40 branch (Closed) Base URL: https://skia.googlesource.com/skia@m40
Patch Set: Created 5 years, 9 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 | « no previous file | codereview.settings » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: PRESUBMIT.py
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index 61fa2d6f92472543ff424ca08e9e01f52c5ebeeb..a4d90c8a8e88d1fec2dad3af6fe2e7472e3a396b 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -12,6 +12,7 @@ for more details about the presubmit API built into gcl.
import fnmatch
import os
import re
+import subprocess
import sys
import traceback
@@ -32,6 +33,8 @@ PUBLIC_API_OWNERS = (
AUTHORS_FILE_NAME = 'AUTHORS'
+DOCS_PREVIEW_URL = 'https://skia.org/?cl='
+
def _CheckChangeHasEol(input_api, output_api, source_file_filter=None):
"""Checks that files end with atleast one \n (LF)."""
@@ -239,6 +242,87 @@ def _CheckLGTMsForPublicAPI(input_api, output_api):
return results
+def PostUploadHook(cl, change, output_api):
+ """git cl upload will call this hook after the issue is created/modified.
+
+ This hook does the following:
+ * Adds a link to preview docs changes if there are any docs changes in the CL.
+ * Adds 'NOTRY=true' if the CL contains only docs changes.
+ * Adds 'NOTREECHECKS=true' for non master branch changes since they do not
+ need to be gated on the master branch's tree.
+ * Adds 'NOTRY=true' for non master branch changes since trybots do not yet
+ work on them.
+ """
+
+ results = []
+ atleast_one_docs_change = False
+ all_docs_changes = True
+ for affected_file in change.AffectedFiles():
+ affected_file_path = affected_file.LocalPath()
+ file_path, _ = os.path.splitext(affected_file_path)
+ if 'site' == file_path.split(os.path.sep)[0]:
+ atleast_one_docs_change = True
+ else:
+ all_docs_changes = False
+ if atleast_one_docs_change and not all_docs_changes:
+ break
+
+ issue = cl.issue
+ rietveld_obj = cl.RpcServer()
+ if issue and rietveld_obj:
+ original_description = rietveld_obj.get_description(issue)
+ new_description = original_description
+
+ # If the change includes only doc changes then add NOTRY=true in the
+ # CL's description if it does not exist yet.
+ if all_docs_changes and not re.search(
+ r'^NOTRY=true$', new_description, re.M | re.I):
+ new_description += '\nNOTRY=true'
+ results.append(
+ output_api.PresubmitNotifyResult(
+ 'This change has only doc changes. Automatically added '
+ '\'NOTRY=true\' to the CL\'s description'))
+
+ # If there is atleast one docs change then add preview link in the CL's
+ # description if it does not already exist there.
+ if atleast_one_docs_change and not re.search(
+ r'^DOCS_PREVIEW=.*', new_description, re.M | re.I):
+ # Automatically add a link to where the docs can be previewed.
+ new_description += '\nDOCS_PREVIEW= %s%s' % (DOCS_PREVIEW_URL, issue)
+ results.append(
+ output_api.PresubmitNotifyResult(
+ 'Automatically added a link to preview the docs changes to the '
+ 'CL\'s description'))
+
+ # If the target ref is not master then add NOTREECHECKS=true and NOTRY=true
+ # to the CL's description if it does not already exist there.
+ target_ref = rietveld_obj.get_issue_properties(issue, False).get(
+ 'target_ref', '')
+ if target_ref != 'refs/heads/master':
+ if not re.search(
+ r'^NOTREECHECKS=true$', new_description, re.M | re.I):
+ new_description += "\nNOTREECHECKS=true"
+ results.append(
+ output_api.PresubmitNotifyResult(
+ 'Branch changes do not need to rely on the master branch\'s '
+ 'tree status. Automatically added \'NOTREECHECKS=true\' to the '
+ 'CL\'s description'))
+ if not re.search(
+ r'^NOTRY=true$', new_description, re.M | re.I):
+ new_description += "\nNOTRY=true"
+ results.append(
+ output_api.PresubmitNotifyResult(
+ 'Trybots do not yet work for non-master branches. '
+ 'Automatically added \'NOTRY=true\' to the CL\'s description'))
+
+
+ # If the description has changed update it.
+ if new_description != original_description:
+ rietveld_obj.update_description(issue, new_description)
+
+ return results
+
+
def CheckChangeOnCommit(input_api, output_api):
"""Presubmit checks for the change on commit.
« no previous file with comments | « no previous file | codereview.settings » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698