From 6fbd1c7ff5b1023f543a304db4f76fc6eeb4dbd5 Mon Sep 17 00:00:00 2001 From: Robert McQueen Date: Sat, 29 Oct 2005 22:04:01 +0000 Subject: 2005-10-29 Robert McQueen * python/dbus_bindings.pyx: Tweak 'raise AssertionError' to assert(). Add checking for the end of struct character when marshalling a struct in MessageIter.append_strict. * python/examples/example-service.py, python/examples/gconf-proxy-service.py, python/examples/gconf-proxy-service2.py: Update to use gobject mainloop directly rather than appearing to depend on gtk. * python/test/test-client.py, python/test/test-server.py: Remove obsolete and broken test scripts for old bindings. We have up to date and working tests in test/python/. --- ChangeLog | 15 +++++ python/dbus_bindings.pyx | 10 ++-- python/examples/example-service.py | 6 +- python/examples/gconf-proxy-service.py | 5 +- python/examples/gconf-proxy-service2.py | 5 +- python/tests/test-client.py | 100 -------------------------------- python/tests/test-server.py | 17 ------ 7 files changed, 30 insertions(+), 128 deletions(-) delete mode 100644 python/tests/test-client.py delete mode 100644 python/tests/test-server.py diff --git a/ChangeLog b/ChangeLog index 128a78e2..d03d051f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,18 @@ +2005-10-29 Robert McQueen + + * python/dbus_bindings.pyx: Tweak 'raise AssertionError' to assert(). + Add checking for the end of struct character when marshalling a + struct in MessageIter.append_strict. + + * python/examples/example-service.py, + python/examples/gconf-proxy-service.py, + python/examples/gconf-proxy-service2.py: Update to use gobject + mainloop directly rather than appearing to depend on gtk. + + * python/test/test-client.py, python/test/test-server.py: Remove + obsolete and broken test scripts for old bindings. We have up to date + and working tests in test/python/. + 2005-10-29 Robert McQueen * python/decorators.py: Add optional arguments to the method and diff --git a/python/dbus_bindings.pyx b/python/dbus_bindings.pyx index fe6e7777..c693a3d0 100644 --- a/python/dbus_bindings.pyx +++ b/python/dbus_bindings.pyx @@ -457,13 +457,12 @@ cdef class Connection: dbus_error_free (&error) raise DBusException, errormsg - if retval == NULL: - raise AssertionError - + assert(retval != NULL) + m = EmptyMessage() m._set_msg(retval) - return m + return m def set_watch_functions(self, add_function, remove_function, data): pass @@ -1048,6 +1047,9 @@ cdef class MessageIter: elif sig_type == TYPE_OBJECT_PATH: retval = self.append_object_path(value) elif sig_type == STRUCT_BEGIN: + if ord(sig[-1]) != STRUCT_END: + raise TypeError, "Invalid struct entry in append_strict. No termination in signature %s." % (sig) + tmp_sig = sig[1:-1] retval = self.append_struct(value, signature = tmp_sig) elif sig_type == TYPE_VARIANT: diff --git a/python/examples/example-service.py b/python/examples/example-service.py index ce871a1f..cb25d203 100644 --- a/python/examples/example-service.py +++ b/python/examples/example-service.py @@ -3,8 +3,7 @@ import dbus import dbus.service import dbus.glib -import pygtk -import gtk +import gobject class SomeObject(dbus.service.Object): def __init__(self, bus_name, object_path="/SomeObject"): @@ -27,4 +26,5 @@ session_bus = dbus.SessionBus() name = dbus.service.BusName("org.designfu.SampleService", bus=session_bus) object = SomeObject(name) -gtk.main() +mainloop = gobject.MainLoop() +mainloop.run() diff --git a/python/examples/gconf-proxy-service.py b/python/examples/gconf-proxy-service.py index b9bdef14..a899cf21 100644 --- a/python/examples/gconf-proxy-service.py +++ b/python/examples/gconf-proxy-service.py @@ -2,7 +2,7 @@ #FIXME: Doesn't work with the new bindings import dbus -import gtk +import gobject import gconf class GConfService(dbus.Service): @@ -39,4 +39,5 @@ gconf_service = GConfService() print ("GConf Proxy service started.") print ("Run 'gconf-proxy-client.py' to fetch a GConf key through the proxy...") -gtk.main() +mainloop = gobject.MainLoop() +mainloop.run() diff --git a/python/examples/gconf-proxy-service2.py b/python/examples/gconf-proxy-service2.py index ba8d249b..5731ab28 100644 --- a/python/examples/gconf-proxy-service2.py +++ b/python/examples/gconf-proxy-service2.py @@ -2,7 +2,7 @@ #FIXME: doesn't work with the new bindings import dbus -import gtk +import gobject import gconf class GConfService(dbus.Service): @@ -35,4 +35,5 @@ gconf_service = GConfService() print ("GConf Proxy service started.") print ("Run 'gconf-proxy-client.py' to fetch a GConf key through the proxy...") -gtk.main() +mainloop = gobject.MainLoop() +mainloop.run() diff --git a/python/tests/test-client.py b/python/tests/test-client.py deleted file mode 100644 index 5dc6e20c..00000000 --- a/python/tests/test-client.py +++ /dev/null @@ -1,100 +0,0 @@ -import dbus - -def ensure_same(expected, received): - if type(received) != type(expected): - raise Exception ("Sending %s, expected echo of type %s, but got %s" % (expected, type(expected), type(received))) - - if received.__class__ != expected.__class__: - raise Exception ("Sending %s, expected echo to be of class %s, but got %s" % (expected, expected.__class__, received.__class__)) - - if received != expected: - raise Exception("Sending %s, expected echo to be the same, but was %s" % (expected, received)) - -def TestEcho(value): - global remote_object - echoed = remote_object.Echo(value) - ensure_same(value, echoed) - -def TestEchoList(sent_list): - assert(type(sent_list) == list) - - global remote_object - - reply_list = remote_object.Echo(sent_list) - - if type(reply_list) != list: - raise Exception ("Sending list %s, expected echo to be a list, but it was %s" % (sent_list, type(reply_list))) - - if len(reply_list) != len(sent_list): - raise Exception ("Sending list %s, expected echo of length %d, but length was %d" % (len(sent_list), len(reply_list))) - - for i in range(len(sent_list)): - ensure_same(sent_list[i], reply_list[i]) - -def TestEchoDict(sent_dict): - assert(type(sent_dict) == dict) - - global remote_object - - reply_dict = remote_object.Echo(sent_dict) - - - assert(type(reply_dict) == dict) - - assert(len(reply_dict) == len(sent_dict)) - - for key in sent_dict.keys(): - ensure_same(reply_dict[key], sent_dict[key]) - -session_bus = dbus.SessionBus() - -remote_service = session_bus.get_service("org.designfu.Test") -remote_object = remote_service.get_object("/TestObject", "org.designfu.Test") - -TestEcho(chr(120)) -TestEcho(10) -TestEcho(39.5) -TestEcho("HelloWorld") -TestEcho(dbus.ObjectPath("/test/path")) -TestEcho(dbus.ByteArray("blahblahblah")) - -string_list = [] -for i in range(200): - string_list.append("List item " + str(i)) -TestEchoList(string_list) - -int_list = range(200) -TestEchoList(int_list) - -path_list = [] -for i in range(200): - path_list.append(dbus.ObjectPath("/some/object/path" + str(i))) -TestEchoList(path_list) - -double_list = [] -for i in range(200): - double_list.append(float(i) / 1000) -TestEchoList(double_list) - -#FIXME: this currently fails! -#empty_list = [] -#TestEchoList(empty_list) - -string_to_int_dict = {} -for i in range(200): - string_to_int_dict["key" + str(i)] = i -TestEchoDict(string_to_int_dict) - -string_to_double_dict = {} -for i in range(200): - string_to_double_dict["key" + str(i)] = float(i) / 1000 -TestEchoDict(string_to_double_dict) - -string_to_string_dict = {} -for i in range(200): - string_to_string_dict["key" + str(i)] = "value" + str(i) -TestEchoDict(string_to_string_dict) - -#FIXME: this currently crashes dbus in c code -#empty_dict = {} -#TestEchoDict(empty_dict) diff --git a/python/tests/test-server.py b/python/tests/test-server.py deleted file mode 100644 index 235da701..00000000 --- a/python/tests/test-server.py +++ /dev/null @@ -1,17 +0,0 @@ -import dbus -import gtk - -class TestObject(dbus.Object): - def __init__(self, service): - method_list = [ self.Echo ] - dbus.Object.__init__(self, "/TestObject", service, method_list) - - def Echo(self, variable): - return variable - -session_bus = dbus.SessionBus() - -local_service = dbus.Service("org.designfu.Test", bus=session_bus) -local_object = TestObject(local_service) - -gtk.main() -- cgit