From 7df645aa2537b31b7801206d4ea4125799ddd99c Mon Sep 17 00:00:00 2001 From: Johan Dahlin Date: Sun, 20 Jan 2008 10:07:26 +0000 Subject: New function to test error condition of async read. 2008-01-20 Johan Dahlin * tests/test_gio.py (TestInputStream.testReadAsyncError): New function to test error condition of async read. * gio/gio.override (async_result_callback_marshal): Grab a reference to callback/data. svn path=/trunk/; revision=739 --- ChangeLog | 8 ++++++++ gio/gio.override | 4 +++- tests/test_gio.py | 21 ++++++++++++++++++++- 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index edc50ee..4ac85c5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-01-20 Johan Dahlin + + * tests/test_gio.py (TestInputStream.testReadAsyncError): + New function to test error condition of async read. + + * gio/gio.override (async_result_callback_marshal): Grab a reference + to callback/data. + 2008-01-19 Johan Dahlin * gio/gio.override (_wrap_g_output_stream_write): Impl. diff --git a/gio/gio.override b/gio/gio.override index f6df13a..e2b8e50 100644 --- a/gio/gio.override +++ b/gio/gio.override @@ -300,7 +300,9 @@ _wrap_g_input_stream_read_async(PyGObject *self, PyObject *args, PyObject *kwarg g_slice_free(PyGAsyncRequestNotify, notify); return NULL; } - + Py_INCREF(notify->callback); + Py_XINCREF(notify->data); + buffer = PyString_FromStringAndSize((char *)NULL, count); if (buffer == NULL) return NULL; diff --git a/tests/test_gio.py b/tests/test_gio.py index fb41e51..3bb2746 100644 --- a/tests/test_gio.py +++ b/tests/test_gio.py @@ -23,7 +23,9 @@ class TestInputStream(unittest.TestCase): def testReadAsync(self): def callback(stream, result): - self.assertEquals(stream.read_finish(result), len("testing")) + read = stream.read_finish(result) + self.assertEquals(read, len("testing")) + stream.close() loop.quit() self.stream.read_async(10240, 0, None, callback) @@ -31,6 +33,23 @@ class TestInputStream(unittest.TestCase): loop = gobject.MainLoop() loop.run() + def testReadAsyncError(self): + self.count = 0 + def callback(stream, result): + self.count += 1 + if self.count == 1: + return + self.assertRaises(gobject.GError, stream.read_finish, result) + loop.quit() + + self.stream.read_async(10240, 0, None, callback) + self.stream.read_async(10240, 0, None, callback) + + loop = gobject.MainLoop() + loop.run() + + self.assertEquals(self.count, 2) + class TestOutputStream(unittest.TestCase): def setUp(self): -- cgit