Chromium Code Reviews| Index: git_cl.py |
| diff --git a/git_cl.py b/git_cl.py |
| index 0b8ac7b7c6367faee174fff9d3bb9f40d76b1d77..b194ef681ce0e971b57500409c01f9fc810cf27c 100755 |
| --- a/git_cl.py |
| +++ b/git_cl.py |
| @@ -1548,6 +1548,10 @@ class Changelist(object): |
| assert self.GetIssue() |
| return self._codereview_impl.SetCQState(new_state) |
| + def CanTriggerTryjob(self): |
| + """Returns reason (str) why not, otherwise returns none.""" |
| + return self._codereview_impl.CanTriggerTryjob() |
| + |
| # Forward methods to codereview specific implementation. |
| def CloseIssue(self): |
| @@ -1690,6 +1694,10 @@ class _ChangelistCodereviewBase(object): |
| """ |
| raise NotImplementedError() |
| + def CanTriggerTryjob(self): |
| + """Returns reason (str) why not, otherwise returns none.""" |
|
nodir
2016/10/11 16:25:49
this makes calling code non-intuitive
if x.CanTri
tandrii(chromium)
2016/10/11 16:30:40
True. Any better name? WhyCantTriggerTryjob?
Or ma
|
| + raise NotImplementedError() |
| + |
| class _RietveldChangelistImpl(_ChangelistCodereviewBase): |
| def __init__(self, changelist, auth_config=None, rietveld_server=None): |
| @@ -1762,6 +1770,16 @@ class _RietveldChangelistImpl(_ChangelistCodereviewBase): |
| self._props = self.RpcServer().get_issue_properties(issue, True) |
| return self._props |
| + def CanTriggerTryjob(self): |
| + props = self.GetIssueProperties() |
| + if not props: |
| + return 'Rietveld doesn\'t know about your issue %s' % self.GetIssue() |
| + if props.get('closed'): |
| + return 'CL %s is closed' % self.GetIssue() |
| + if props.get('private'): |
| + return 'CL %s is private' % self.GetIssue() |
| + return None |
| + |
| def GetApprovingReviewers(self): |
| return get_approving_reviewers(self.GetIssueProperties()) |
| @@ -2716,6 +2734,10 @@ class _GerritChangelistImpl(_ChangelistCodereviewBase): |
| gerrit_util.SetReview(self._GetGerritHost(), self.GetIssue(), |
| labels={'Commit-Queue': vote_map[new_state]}) |
| + def CanTriggerTryjob(self): |
| + # TODO(tandrii): implement for Gerrit. |
| + raise NotImplementedError() |
| + |
| _CODEREVIEW_IMPLEMENTATIONS = { |
| 'rietveld': _RietveldChangelistImpl, |
| @@ -4698,12 +4720,9 @@ def CMDtry(parser, args): |
| # Code below assumes Rietveld issue. |
| # TODO(tandrii): actually implement for Gerrit http://crbug.com/599931. |
| - props = cl.GetIssueProperties() |
| - if props.get('closed'): |
| - parser.error('Cannot send try jobs for a closed CL') |
| - |
| - if props.get('private'): |
| - parser.error('Cannot use try bots with private issue') |
| + error_message = cl.CanTriggerTryjob() |
| + if error_message: |
| + parser.error('Can\'t trigger try jobs: %s') |
| if not options.name: |
| options.name = cl.GetBranch() |