diff --git a/src/irclib.py b/src/irclib.py index 504583dc8..5310aa49a 100644 --- a/src/irclib.py +++ b/src/irclib.py @@ -962,8 +962,8 @@ class Irc(IrcCommandDispatcher): elif self.sasl_username and self.sasl_password: self.sasl = 'plain' - self.queueMsg(ircmsgs.IrcMsg(command='CAP', args=('REQ', - 'account-notify extended-join multi-prefix'))) + for cap in ('account-notify', 'extended-join', 'multi-prefix'): + self.queueMsg(ircmsgs.IrcMsg(command='CAP', args=('REQ', cap))) if self.sasl: self.queueMsg(ircmsgs.IrcMsg(command='CAP', args=('REQ', 'sasl'))) diff --git a/test/test_irclib.py b/test/test_irclib.py index 6a57f342d..bb85f33fa 100644 --- a/test/test_irclib.py +++ b/test/test_irclib.py @@ -387,6 +387,10 @@ class IrcTestCase(SupyTestCase): m = self.irc.takeMsg() self.failUnless(m.command == 'CAP', 'Expected CAP, got %r.' % m) m = self.irc.takeMsg() + self.failUnless(m.command == 'CAP', 'Expected CAP, got %r.' % m) + m = self.irc.takeMsg() + self.failUnless(m.command == 'CAP', 'Expected CAP, got %r.' % m) + m = self.irc.takeMsg() self.failUnless(m.command == 'USER', 'Expected USER, got %r.' % m) def testPingResponse(self): @@ -483,11 +487,14 @@ class IrcCallbackTestCase(SupyTestCase): conf.supybot.nick.setValue(nick) user = 'user any user' conf.supybot.user.setValue(user) - expected = [ircmsgs.nick(nick), - ircmsgs.IrcMsg(command='CAP', args=('REQ', - 'account-notify extended-join multi-prefix')), - ircmsgs.IrcMsg(command='CAP', args=('END',)), - ircmsgs.user('limnoria', user)] + expected = [ + ircmsgs.nick(nick), + ircmsgs.IrcMsg(command='CAP', args=('REQ', 'account-notify')), + ircmsgs.IrcMsg(command='CAP', args=('REQ', 'extended-join')), + ircmsgs.IrcMsg(command='CAP', args=('REQ', 'multi-prefix')), + ircmsgs.IrcMsg(command='CAP', args=('END',)), + ircmsgs.user('limnoria', user) + ] irc = irclib.Irc('test') msgs = [irc.takeMsg()] while msgs[-1] != None: