Changeset 56977 in webkit


Ignore:
Timestamp:
Apr 2, 2010 12:14:58 AM (14 years ago)
Author:
eric@webkit.org
Message:

2010-04-02 Adam Barth <abarth@webkit.org>

Reviewed by Eric Seidel.

Record the IRC nick of folks who request rollouts
https://bugs.webkit.org/show_bug.cgi?id=36999

  • Scripts/webkitpy/common/net/irc/ircbot.py:
  • Scripts/webkitpy/tool/bot/irc_command.py:
  • Scripts/webkitpy/tool/bot/sheriffircbot.py:
  • Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
Location:
trunk/WebKitTools
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKitTools/ChangeLog

    r56976 r56977  
     12010-04-02  Adam Barth  <abarth@webkit.org>
     2
     3        Reviewed by Eric Seidel.
     4
     5        Record the IRC nick of folks who request rollouts
     6        https://bugs.webkit.org/show_bug.cgi?id=36999
     7
     8        * Scripts/webkitpy/common/net/irc/ircbot.py:
     9        * Scripts/webkitpy/tool/bot/irc_command.py:
     10        * Scripts/webkitpy/tool/bot/sheriffircbot.py:
     11        * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
     12
    1132010-04-01  Adam Barth  <abarth@webkit.org>
    214
  • trunk/WebKitTools/Scripts/webkitpy/common/net/irc/ircbot.py

    r56897 r56977  
    3535
    3636class IRCBotDelegate(object):
    37     def irc_message_received(self, message):
     37    def irc_message_received(self, nick, message):
    3838        raise NotImplementedError, "subclasses must implement"
    3939
     
    7373
    7474    def on_pubmsg(self, connection, event):
     75        nick = irclib.nm_to_n(event.source())
    7576        request = event.arguments()[0].split(":", 1)
    7677        if len(request) > 1 and irclib.irc_lower(request[0]) == irclib.irc_lower(self.connection.get_nickname()):
    77             response = self._delegate.irc_message_received(request[1])
     78            response = self._delegate.irc_message_received(nick, request[1])
    7879            if response:
    7980                connection.privmsg(self._channel, response)
  • trunk/WebKitTools/Scripts/webkitpy/tool/bot/irc_command.py

    r56951 r56977  
    2727# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    2828
     29import webkitpy.common.config.irc as config_irc
     30
    2931from webkitpy.common.checkout.changelog import view_source_url
    3032from webkitpy.tool.bot.queueengine import TerminateQueue
     
    3436# FIXME: Merge with Command?
    3537class IRCCommand(object):
    36     def execute(self, args, tool, sheriff):
     38    def execute(self, nick, args, tool, sheriff):
    3739        raise NotImplementedError, "subclasses must implement"
    3840
    3941
    4042class LastGreenRevision(IRCCommand):
    41     def execute(self, args, tool, sheriff):
    42         return view_source_url(tool.buildbot.last_green_revision())
     43    def execute(self, nick, args, tool, sheriff):
     44        return "%s: %s" % (nick,
     45            view_source_url(tool.buildbot.last_green_revision()))
    4346
    4447
    4548class Restart(IRCCommand):
    46     def execute(self, args, tool, sheriff):
     49    def execute(self, nick, args, tool, sheriff):
    4750        tool.irc().post("Restarting...")
    4851        raise TerminateQueue()
     
    5053
    5154class Rollout(IRCCommand):
    52     def execute(self, args, tool, sheriff):
     55    def execute(self, nick, args, tool, sheriff):
    5356        if len(args) < 2:
    54             tool.irc().post("Usage: SVN_REVISION REASON")
     57            tool.irc().post("%s: Usage: SVN_REVISION REASON" % nick)
    5558            return
    5659        svn_revision = args[0]
     
    5861        tool.irc().post("Preparing rollout for r%s..." % svn_revision)
    5962        try:
    60             bug_id = sheriff.post_rollout_patch(svn_revision, rollout_reason)
     63            complete_reason = "%s (Requested by %s on %s)." % (
     64                rollout_reason, nick, config_irc.channel)
     65            bug_id = sheriff.post_rollout_patch(svn_revision, complete_reason)
    6166            bug_url = tool.bugs.bug_url_for_bug_id(bug_id)
    62             tool.irc().post("Created rollout: %s" % bug_url)
     67            tool.irc().post("%s: Created rollout: %s" % (nick, bug_url))
    6368        except ScriptError, e:
    64             tool.irc().post("Failed to create rollout patch:")
     69            tool.irc().post("%s: Failed to create rollout patch:" % nick)
    6570            tool.irc().post("%s" % e)
    6671            bug_id = parse_bug_id(e.output)
     
    7176
    7277class Hi(IRCCommand):
    73     def execute(self, args, tool, sheriff):
     78    def execute(self, nick, args, tool, sheriff):
    7479        return '"Only you can prevent forest fires." -- Smokey the Bear'
  • trunk/WebKitTools/Scripts/webkitpy/tool/bot/sheriffircbot.py

    r56947 r56977  
    4141    # IRCBotDelegate methods
    4242
    43     def irc_message_received(self, message):
    44         self._message_queue.post(message)
     43    def irc_message_received(self, nick, message):
     44        self._message_queue.post([nick, message])
    4545        self._wakeup_event.set()
    4646
     
    7272
    7373    def process_message(self, message):
    74         tokenized_message = message.strip().split(" ")
    75         if not tokenized_message:
     74        (nick, request) = message
     75        tokenized_request = request.strip().split(" ")
     76        if not tokenized_request:
    7677            return
    77         command = self.commands.get(tokenized_message[0])
     78        command = self.commands.get(tokenized_request[0])
    7879        if not command:
    79             self._tool.irc().post(
    80                 "Available commands: %s" % ", ".join(self.commands.keys()))
     80            self._tool.irc().post("%s: Available commands: %s" % (
     81                                  nick, ", ".join(self.commands.keys())))
    8182            return
    82         response = command().execute(tokenized_message[1:],
     83        response = command().execute(nick,
     84                                     tokenized_request[1:],
    8385                                     self._tool,
    8486                                     self._sheriff)
  • trunk/WebKitTools/Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py

    r56960 r56977  
    4040    tool.ensure_irc_connected(None)
    4141    bot = SheriffIRCBot(tool, Sheriff(tool, MockSheriffBot()))
    42     bot._message_queue.post(message)
     42    bot._message_queue.post(["mock_nick", message])
    4343    bot.process_pending_messages()
    4444
     
    5050
    5151    def test_bogus(self):
    52         expected_stderr = "MOCK: irc.post: Available commands: rollout, hi, restart, last-green-revision\n"
     52        expected_stderr = "MOCK: irc.post: mock_nick: Available commands: rollout, hi, restart, last-green-revision\n"
    5353        OutputCapture().assert_outputs(self, run, args=["bogus"], expected_stderr=expected_stderr)
    5454
    5555    def test_lgr(self):
    56         expected_stderr = "MOCK: irc.post: http://trac.webkit.org/changeset/9479\n"
     56        expected_stderr = "MOCK: irc.post: mock_nick: http://trac.webkit.org/changeset/9479\n"
    5757        OutputCapture().assert_outputs(self, run, args=["last-green-revision"], expected_stderr=expected_stderr)
    5858
    5959    def test_rollout(self):
    60         expected_stderr = "MOCK: irc.post: Preparing rollout for r21654...\nMOCK: irc.post: Created rollout: http://example.com/36936\n"
     60        expected_stderr = "MOCK: irc.post: Preparing rollout for r21654...\nMOCK: irc.post: mock_nick: Created rollout: http://example.com/36936\n"
    6161        OutputCapture().assert_outputs(self, run, args=["rollout 21654 This patch broke the world"], expected_stderr=expected_stderr)
    6262
    6363    def test_rollout_bananas(self):
    64         expected_stderr = "MOCK: irc.post: Usage: SVN_REVISION REASON\n"
     64        expected_stderr = "MOCK: irc.post: mock_nick: Usage: SVN_REVISION REASON\n"
    6565        OutputCapture().assert_outputs(self, run, args=["rollout bananas"], expected_stderr=expected_stderr)
    6666
    6767    def test_rollout_invalidate_revision(self):
    68         expected_stderr = ("MOCK: irc.post: Preparing rollout for "
    69                            "r--component=Tools...\nMOCK: irc.post: Failed to "
    70                            "create rollout patch:\nMOCK: irc.post: Invalid svn"
    71                            " revision number \"--component=Tools\".\n")
     68        expected_stderr = ("MOCK: irc.post: Preparing rollout for r--component=Tools...\n"
     69                           "MOCK: irc.post: mock_nick: Failed to create rollout patch:\n"
     70                           "MOCK: irc.post: Invalid svn revision number \"--component=Tools\".\n")
    7271        OutputCapture().assert_outputs(self, run,
    7372                                       args=["rollout "
     
    7675
    7776    def test_rollout_no_reason(self):
    78         expected_stderr = "MOCK: irc.post: Usage: SVN_REVISION REASON\n"
     77        expected_stderr = "MOCK: irc.post: mock_nick: Usage: SVN_REVISION REASON\n"
    7978        OutputCapture().assert_outputs(self, run, args=["rollout 21654"], expected_stderr=expected_stderr)
Note: See TracChangeset for help on using the changeset viewer.