Expose more Client properties in Python.
authorJelmer Vernooij <jelmer@samba.org>
Sun, 12 Apr 2009 01:28:30 +0000 (03:28 +0200)
committerJelmer Vernooij <jelmer@samba.org>
Sun, 12 Apr 2009 01:28:30 +0000 (03:28 +0200)
libirc/client.c
python/irc.c
python/tests/test_irc.py
testsuite/test-transport.c

index 20cf7cff0c6a1ed9650718f818ae4a3a9ab7d6e0..995308943333f26623a77a85e1007a4629652a41 100644 (file)
@@ -450,6 +450,8 @@ gboolean client_set_charset(struct irc_client *c, const char *name)
 
 const char *client_get_own_hostmask(struct irc_client *c)
 {
+       if (c->state == NULL)
+               return NULL;
        return c->state->me.hostmask;
 }
 
index 3cbec08cf8fd4296f3c064805a9cd0aa01115208..88e35e7d4d8bb6383e1905170e3db342aad1a3c7 100644 (file)
@@ -943,21 +943,6 @@ typedef struct {
     struct irc_client *client;
 } PyClientObject;
 
-static PyObject *py_client_get_default_target(PyClientObject *self)
-{
-    return PyString_FromString(client_get_default_target(self->client));
-}
-
-static PyObject *py_client_get_own_hostmask(PyClientObject *self)
-{
-    return PyString_FromString(client_get_own_hostmask(self->client));
-}
-
-static PyObject *py_client_get_default_origin(PyClientObject *self)
-{
-    return PyString_FromString(self->client->default_origin);
-}
-
 static PyObject *py_client_set_charset(PyClientObject *self, PyObject *args)
 {
     bool ret;
@@ -999,15 +984,6 @@ static PyObject *py_client_send_line(PyClientObject *self, PyObject *args)
 }
 
 static PyMethodDef py_client_methods[] = {
-    { "get_default_target", (PyCFunction)py_client_get_default_target,
-        METH_NOARGS, 
-        "Returns the default target name used for this client." },
-    { "get_own_hostmask", (PyCFunction)py_client_get_own_hostmask,
-        METH_NOARGS,
-        "Returns the hostmask of the client." },
-    { "get_default_origin", (PyCFunction)py_client_get_default_origin,
-        METH_NOARGS,
-        "Returns the default origin that is used to send lines to this client." },
     { "set_charset", (PyCFunction)py_client_set_charset, 
         METH_VARARGS,
         "Change the character set."  
@@ -1034,8 +1010,30 @@ static PyObject *py_client_get_state(PyClientObject *self, void *closure)
     return (PyObject *)ret;
 }
 
+static PyObject *py_client_get_default_target(PyClientObject *self, void *closure)
+{
+    return PyString_FromString(client_get_default_target(self->client));
+}
+
+static PyObject *py_client_get_own_hostmask(PyClientObject *self, void *closure)
+{
+    const char *hostmask = client_get_own_hostmask(self->client);
+    if (hostmask == NULL)
+        Py_RETURN_NONE;
+    return PyString_FromString(hostmask);
+}
+
+static PyObject *py_client_get_default_origin(PyClientObject *self, void *closure)
+{
+    return PyString_FromString(self->client->default_origin);
+}
+
 static PyGetSetDef py_client_getsetters[] = {
     { "state", (getter)py_client_get_state, NULL, "State" },
+    { "default_target", (getter)py_client_get_default_target, NULL, "Default target" },
+    { "own_hostmask", (getter)py_client_get_own_hostmask, NULL, "Own hostmask" },
+    { "default_origin", (getter)py_client_get_default_origin, NULL,
+        "Default origin that is used to send lines to this client." },
     { NULL }
 };
 
@@ -1352,7 +1350,7 @@ static gboolean py_transport_is_connected(void *data)
         return FALSE;
     }
 
-    boolret = (obj == Py_True);
+    boolret = (ret == Py_True);
 
     Py_DECREF(ret);
     return boolret;
index 4840f381f51d2792c03250239546680cf9ed2a7e..d67c2e7b8289403e00ad0ed4fc73d53881597bfe 100644 (file)
@@ -273,6 +273,9 @@ class DummyTransport(object):
     def send_line(self, line):
         self._sent_lines.append(line)
 
+    def is_connected(self):
+        return True
+
 
 class ClientTests(unittest.TestCase):
 
@@ -288,3 +291,16 @@ class ClientTests(unittest.TestCase):
         c = irc.Client(t, "myorigin", "description")
         c.send_line(":server NOTICE mynick :bla")
         self.assertEquals(1, len(t._sent_lines))
+        self.assertEquals(":server NOTICE mynick :bla", str(t._sent_lines[0]))
+
+    def test_default_target(self):
+        c = irc.Client(DummyTransport(), "myorigin", "description")
+        self.assertEquals("*", c.default_target)
+
+    def test_default_origin(self):
+        c = irc.Client(DummyTransport(), "myorigin", "description")
+        self.assertEquals("myorigin", c.default_origin)
+
+    def test_own_hostmask_not_known(self):
+        c = irc.Client(DummyTransport(), "myorigin", "description")
+        self.assertEquals(None, c.own_hostmask)
index 6d8d15e9723538421b879905c65c5edf550732b1..ab368a69550846937bdf1ba392bf66dd9f15e2f2 100644 (file)
@@ -44,7 +44,7 @@ START_TEST(test_send)
        for (i = 0; i < 10000; i++) {
                char buf[20];
                g_snprintf(buf, sizeof(buf), "bar: %d", i);
-               fail_unless(transport_send_args(t, "PRIVMSG", "foo", buf, NULL));
+               fail_unless(transport_send_args(t, NULL, "PRIVMSG", "foo", buf, NULL));
        }
        for (i = 0; i < 10000; i++) {
                char *str;