Support setting nick modes.
authorJelmer Vernooij <jelmer@samba.org>
Mon, 13 Apr 2009 02:33:09 +0000 (04:33 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Mon, 13 Apr 2009 02:33:09 +0000 (04:33 +0200)
python/irc.c
python/tests/test_irc.py

index f83c34649372f6a201d104661624f48e113a443d..416c5c6bb50df9241e164b9544bd28a79e4dfb1c 100644 (file)
@@ -625,8 +625,9 @@ static PyObject *py_channel_nick_dict_add(PyChannelNickDictObject *self, PyObjec
 {
     struct channel_nick *cn;
     PyNetworkNickObject *py_nick;
+    char *modestr = NULL;
 
-    if (!PyArg_ParseTuple(args, "O", &py_nick))
+    if (!PyArg_ParseTuple(args, "O|s", &py_nick, &modestr))
         return NULL;
 
     if (!PyObject_TypeCheck(py_nick, &PyNetworkNickType)) {
@@ -652,6 +653,7 @@ static PyObject *py_channel_nick_dict_add(PyChannelNickDictObject *self, PyObjec
        cn = g_new0(struct channel_nick,1);
        g_assert(cn != NULL);
        
+    string2mode(modestr, cn->modes);
        cn->channel = self->parent->state;
        cn->global_nick = py_nick->nick;
        cn->channel->nicks = g_list_append(cn->channel->nicks, cn);
index b398be28cf9ee09fc1e7dc7421437ee2d0f2d87f..318722a850bff4a957660cc1723942b3ef69ac73 100644 (file)
@@ -91,6 +91,13 @@ class ChannelStateTests(unittest.TestCase):
         self.assertEquals(1, len(s.nicks))
         self.assertEquals("me", s.nicks["me"].nick)
 
+    def test_add_nick_mode(self):
+        s = irc.ChannelState("#foo")
+        s.nicks.add(irc.Nick("me!foo@bar"), "+o")
+        self.assertEquals(1, len(s.nicks))
+        self.assertEquals("me", s.nicks["me"].nick)
+        self.assertEquals("+o", s.nicks.nick_mode("me"))
+
     def test_set_key(self):
         s = irc.ChannelState("#foo")
         self.assertRaises(KeyError, lambda:s.mode_option['k'])