Changeset 56977 in webkit
- Timestamp:
- Apr 2, 2010 12:14:58 AM (14 years ago)
- Location:
- trunk/WebKitTools
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKitTools/ChangeLog
r56976 r56977 1 2010-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 1 13 2010-04-01 Adam Barth <abarth@webkit.org> 2 14 -
trunk/WebKitTools/Scripts/webkitpy/common/net/irc/ircbot.py
r56897 r56977 35 35 36 36 class IRCBotDelegate(object): 37 def irc_message_received(self, message):37 def irc_message_received(self, nick, message): 38 38 raise NotImplementedError, "subclasses must implement" 39 39 … … 73 73 74 74 def on_pubmsg(self, connection, event): 75 nick = irclib.nm_to_n(event.source()) 75 76 request = event.arguments()[0].split(":", 1) 76 77 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]) 78 79 if response: 79 80 connection.privmsg(self._channel, response) -
trunk/WebKitTools/Scripts/webkitpy/tool/bot/irc_command.py
r56951 r56977 27 27 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 28 29 import webkitpy.common.config.irc as config_irc 30 29 31 from webkitpy.common.checkout.changelog import view_source_url 30 32 from webkitpy.tool.bot.queueengine import TerminateQueue … … 34 36 # FIXME: Merge with Command? 35 37 class IRCCommand(object): 36 def execute(self, args, tool, sheriff):38 def execute(self, nick, args, tool, sheriff): 37 39 raise NotImplementedError, "subclasses must implement" 38 40 39 41 40 42 class 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())) 43 46 44 47 45 48 class Restart(IRCCommand): 46 def execute(self, args, tool, sheriff):49 def execute(self, nick, args, tool, sheriff): 47 50 tool.irc().post("Restarting...") 48 51 raise TerminateQueue() … … 50 53 51 54 class Rollout(IRCCommand): 52 def execute(self, args, tool, sheriff):55 def execute(self, nick, args, tool, sheriff): 53 56 if len(args) < 2: 54 tool.irc().post(" Usage: SVN_REVISION REASON")57 tool.irc().post("%s: Usage: SVN_REVISION REASON" % nick) 55 58 return 56 59 svn_revision = args[0] … … 58 61 tool.irc().post("Preparing rollout for r%s..." % svn_revision) 59 62 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) 61 66 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)) 63 68 except ScriptError, e: 64 tool.irc().post(" Failed to create rollout patch:")69 tool.irc().post("%s: Failed to create rollout patch:" % nick) 65 70 tool.irc().post("%s" % e) 66 71 bug_id = parse_bug_id(e.output) … … 71 76 72 77 class Hi(IRCCommand): 73 def execute(self, args, tool, sheriff):78 def execute(self, nick, args, tool, sheriff): 74 79 return '"Only you can prevent forest fires." -- Smokey the Bear' -
trunk/WebKitTools/Scripts/webkitpy/tool/bot/sheriffircbot.py
r56947 r56977 41 41 # IRCBotDelegate methods 42 42 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]) 45 45 self._wakeup_event.set() 46 46 … … 72 72 73 73 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: 76 77 return 77 command = self.commands.get(tokenized_ message[0])78 command = self.commands.get(tokenized_request[0]) 78 79 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()))) 81 82 return 82 response = command().execute(tokenized_message[1:], 83 response = command().execute(nick, 84 tokenized_request[1:], 83 85 self._tool, 84 86 self._sheriff) -
trunk/WebKitTools/Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py
r56960 r56977 40 40 tool.ensure_irc_connected(None) 41 41 bot = SheriffIRCBot(tool, Sheriff(tool, MockSheriffBot())) 42 bot._message_queue.post( message)42 bot._message_queue.post(["mock_nick", message]) 43 43 bot.process_pending_messages() 44 44 … … 50 50 51 51 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" 53 53 OutputCapture().assert_outputs(self, run, args=["bogus"], expected_stderr=expected_stderr) 54 54 55 55 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" 57 57 OutputCapture().assert_outputs(self, run, args=["last-green-revision"], expected_stderr=expected_stderr) 58 58 59 59 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" 61 61 OutputCapture().assert_outputs(self, run, args=["rollout 21654 This patch broke the world"], expected_stderr=expected_stderr) 62 62 63 63 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" 65 65 OutputCapture().assert_outputs(self, run, args=["rollout bananas"], expected_stderr=expected_stderr) 66 66 67 67 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") 72 71 OutputCapture().assert_outputs(self, run, 73 72 args=["rollout " … … 76 75 77 76 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" 79 78 OutputCapture().assert_outputs(self, run, args=["rollout 21654"], expected_stderr=expected_stderr)
Note: See TracChangeset
for help on using the changeset viewer.