From 32d8d141ad431f4e3b60cf365cfe737e905f61e4 Mon Sep 17 00:00:00 2001 From: Valentin Lorentz Date: Sat, 18 Jan 2020 11:04:50 +0100 Subject: [PATCH] Make irc.error do nothing is no string is given as argument. Fixes c1d3bad64feca2529e29473f0ed8c622ad1937b1, which crashed with: ``` ERROR 2020-01-18T01:34:07 Uncaught exception in NickAuth._callCommand: Traceback (most recent call last): File "/usr/local/lib/python3.7/dist-packages/supybot/callbacks.py", line 1337, in _callCommand irc.errorNoCapability(cap) File "/usr/local/lib/python3.7/dist-packages/supybot/callbacks.py", line 544, in errorNoCapability raise Error() supybot.callbacks.Error During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.7/dist-packages/supybot/log.py", line 368, in m return f(self, *args, **kwargs) File "/usr/local/lib/python3.7/dist-packages/supybot/callbacks.py", line 1359, in _callCommand irc.error(str(e)) File "/usr/local/lib/python3.7/dist-packages/supybot/callbacks.py", line 1065, in error raise ArgumentError supybot.callbacks.ArgumentError ``` --- src/callbacks.py | 32 ++++++++++++-------------------- test/test_callbacks.py | 4 ++-- 2 files changed, 14 insertions(+), 22 deletions(-) diff --git a/src/callbacks.py b/src/callbacks.py index bde7536de..cba199cd6 100644 --- a/src/callbacks.py +++ b/src/callbacks.py @@ -615,15 +615,13 @@ class ReplyIrcProxy(RichReplyMethods): def error(self, s, msg=None, **kwargs): if 'Raise' in kwargs and kwargs['Raise']: - if s: - raise Error(s) - else: - raise ArgumentError + raise Error() if msg is None: msg = self.msg - m = _makeErrorReply(self, msg, s, **kwargs) - self.irc.queueMsg(m) - return m + if s: + m = _makeErrorReply(self, msg, s, **kwargs) + self.irc.queueMsg(m) + return m def reply(self, s, msg=None, **kwargs): if msg is None: @@ -1050,19 +1048,13 @@ class NestedCommandsIrcProxy(ReplyIrcProxy): def error(self, s='', Raise=False, **kwargs): self.repliedTo = True if Raise: - if s: - raise Error(s) - else: - raise ArgumentError - if s: - if not isinstance(self.irc, irclib.Irc): - return self.irc.error(s, **kwargs) - else: - m = _makeErrorReply(self, self.msg, s, **kwargs) - self.irc.queueMsg(m) - return m - else: - raise ArgumentError + raise Error(s) + if not isinstance(self.irc, irclib.Irc): + return self.irc.error(s, **kwargs) + elif s: + m = _makeErrorReply(self, self.msg, s, **kwargs) + self.irc.queueMsg(m) + return m def __getattr__(self, attr): return getattr(self.irc, attr) diff --git a/test/test_callbacks.py b/test/test_callbacks.py index f22d8dff9..e4e73754b 100644 --- a/test/test_callbacks.py +++ b/test/test_callbacks.py @@ -404,8 +404,8 @@ class PrivmsgTestCase(ChannelPluginTestCase): finally: conf.supybot.reply.error.inPrivate.setValue(original) - def testErrorNoArgumentIsArgumentError(self): - self.assertHelp('eval irc.error()') + def testErrorNoArgumentIsSilent(self): + self.assertResponse('eval irc.error()', 'None') def testErrorWithNotice(self): try: