| Index: git_cl.py
|
| diff --git a/git_cl.py b/git_cl.py
|
| index 0b8ac7b7c6367faee174fff9d3bb9f40d76b1d77..2fcde04221611aeac7bd5d8ed7b0f4efee99c7da 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 CannotTriggerTryJobReason(self):
|
| + """Returns reason (str) if unable trigger tryjobs on this CL or None."""
|
| + return self._codereview_impl.CannotTriggerTryJobReason()
|
| +
|
| # Forward methods to codereview specific implementation.
|
|
|
| def CloseIssue(self):
|
| @@ -1690,6 +1694,10 @@ class _ChangelistCodereviewBase(object):
|
| """
|
| raise NotImplementedError()
|
|
|
| + def CannotTriggerTryJobReason(self):
|
| + """Returns reason (str) if unable trigger tryjobs on this CL or None."""
|
| + 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 CannotTriggerTryJobReason(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 CannotTriggerTryJobReason(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.CannotTriggerTryJobReason()
|
| + if error_message:
|
| + parser.error('Can\'t trigger try jobs: %s')
|
|
|
| if not options.name:
|
| options.name = cl.GetBranch()
|
|
|