Skip to content

Commit

Permalink
Control who gets notified by GerritStatusPush
Browse files Browse the repository at this point in the history
Allow the GerritStatusPush object to accept who to notify
as an argument. The notify argument is a string
which accepts values found in the gerrit documentation
for the --notify flag. The argument is set to None by
default to maintain current functionality.

Signed-off-by: Giuseppe Di Natale <dinatale2@llnl.gov>
  • Loading branch information
dinatale2 committed Sep 23, 2016
1 parent 122f7da commit edf3837
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
8 changes: 7 additions & 1 deletion master/buildbot/reporters/gerrit.py
Expand Up @@ -144,11 +144,12 @@ class GerritStatusPush(service.BuildbotService):
startArg = None
summaryCB = None
summaryArg = None
gerrit_notify = None

def reconfigService(self, server, username, reviewCB=DEFAULT_REVIEW,
startCB=None, port=29418, reviewArg=None,
startArg=None, summaryCB=DEFAULT_SUMMARY, summaryArg=None,
identity_file=None, builders=None):
identity_file=None, builders=None, notify=None):

# If neither reviewCB nor summaryCB were specified, default to sending
# out "summary" reviews. But if we were given a reviewCB and only a
Expand All @@ -175,6 +176,7 @@ def reconfigService(self, server, username, reviewCB=DEFAULT_REVIEW,
self.summaryCB = summaryCB
self.summaryArg = summaryArg
self.builders = builders
self.gerrit_notify = notify

def _gerritCmd(self, *args):
'''Construct a command as a list of strings suitable for
Expand Down Expand Up @@ -397,6 +399,10 @@ def sendCodeReview(self, project, revision, result):
return

command = self._gerritCmd("review", "--project %s" % (project,))

if self.gerrit_notify is not None:
command.extend(["--notify %s" % str(self.gerrit_notify)])

message = result.get('message', None)
if message:
command.append("--message '%s'" % message.replace("'", "\""))
Expand Down
22 changes: 21 additions & 1 deletion master/buildbot/test/unit/test_reporter_gerrit.py
Expand Up @@ -142,7 +142,8 @@ def setUp(self):
def setupGerritStatusPushSimple(self, *args, **kwargs):
serv = kwargs.pop("server", "serv")
username = kwargs.pop("username", "user")
gsp = GerritStatusPush(serv, username, *args, **kwargs)
notify = kwargs.pop("notify", None)
gsp = GerritStatusPush(serv, username, notify=notify, *args, **kwargs)
yield gsp.setServiceParent(self.master)
yield gsp.startService()
defer.returnValue(gsp)
Expand Down Expand Up @@ -463,3 +464,22 @@ def testBuildGerritCommand(self):
'ssh',
['ssh', 'user@serv', '-p', '29418', 'gerrit', 'review', '--project project',
"--message 'bla'", '--verified 1', 'revision'])

# now test the notify argument
gsp.gerrit_notify = 'OWNER'
gsp.processVersion("2.6", lambda: None)
spawnSkipFirstArg = Mock()
yield gsp.sendCodeReview("project", "revision", {"message": "bla", "labels": {'Verified': 1}})
spawnSkipFirstArg.assert_called_once_with(
'ssh',
['ssh', 'user@serv', '-p', '29418', 'gerrit', 'review',
'--project project', '--notify OWNER', "--message 'bla'", '--label Verified=1', 'revision'])

# <=2.5 uses other syntax
gsp.processVersion("2.4", lambda: None)
spawnSkipFirstArg = Mock()
yield gsp.sendCodeReview("project", "revision", {"message": "bla", "labels": {'Verified': 1}})
spawnSkipFirstArg.assert_called_once_with(
'ssh',
['ssh', 'user@serv', '-p', '29418', 'gerrit', 'review', '--project project', '--notify OWNER',
"--message 'bla'", '--verified 1', 'revision'])

0 comments on commit edf3837

Please sign in to comment.