PRESUBMIT.py improvements

* Updated code to check for owners in reviewers for Gerrit issues instead for in the TBR= line.
* The previous TBR parsing code was not accounting for adding comments. Eg: "TBR=rmistry (Testing only)".

BUG=skia:5825

GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2981

Change-Id: I910a3ae71a9f57c14f80c0b0404041cbe451a77c
Reviewed-on: https://skia-review.googlesource.com/2981
Reviewed-by: Joe Gregorio <jcgregorio@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
This commit is contained in:
Ravi Mistry 2016-10-05 08:41:12 -04:00 committed by Skia Commit-Bot
parent 088e21ba65
commit 39eabb6ccb

View File

@ -334,11 +334,20 @@ class CodeReview(object):
else:
return self._rietveld_properties['cq_dry_run']
def GetReviewers(self):
if self._gerrit:
code_review_label = (
self._gerrit.GetChangeInfo(self._issue)['labels']['Code-Review'])
return [r['email'] for r in code_review_label.get('all', [])]
else:
return self._rietveld_properties['reviewers']
def GetApprovers(self):
approvers = []
if self._gerrit:
for m in self._gerrit.GetChangeInfo(
self._issue)['labels']['Code-Review']['all']:
code_review_label = (
self._gerrit.GetChangeInfo(self._issue)['labels']['Code-Review'])
for m in code_review_label.get('all', []):
if m.get("value") == 1:
approvers.append(m["email"])
else:
@ -413,14 +422,22 @@ def _CheckLGTMsForPublicAPI(input_api, output_api):
# going to be committed.
return results
match = re.search(r'^TBR=(.*)$', cr.GetDescription(), re.M)
if match:
tbr_entries = match.group(1).strip().split(',')
for owner in PUBLIC_API_OWNERS:
if owner in tbr_entries or owner.split('@')[0] in tbr_entries:
# If an owner is specified in the TBR= line then ignore the public
# api owners check.
if input_api.gerrit:
for reviewer in cr.GetReviewers():
if reviewer in PUBLIC_API_OWNERS:
# If an owner is specified as an reviewer in Gerrit then ignore the
# public api owners check.
return results
else:
match = re.search(r'^TBR=(.*)$', cr.GetDescription(), re.M)
if match:
tbr_section = match.group(1).strip().split(' ')[0]
tbr_entries = tbr_section.split(',')
for owner in PUBLIC_API_OWNERS:
if owner in tbr_entries or owner.split('@')[0] in tbr_entries:
# If an owner is specified in the TBR= line then ignore the public
# api owners check.
return results
if cr.GetOwnerEmail() in PUBLIC_API_OWNERS:
# An owner created the CL that is an automatic LGTM.