diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2007-05-30 15:19:46 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2007-05-30 15:19:46 +0100 |
commit | c87b55c6ab30542d5d17f2e2041e4c87b3df712d (patch) | |
tree | 056e9cb9a6830147b684c8b9dc5b38d78b703305 /test | |
parent | 030b68b4e6d64dc25904618852917839892de1be (diff) |
dbus.service: Make it possible to unexport objects (fd.o#10457)
Diffstat (limited to 'test')
-rwxr-xr-x | test/test-client.py | 20 | ||||
-rwxr-xr-x | test/test-service.py | 34 |
2 files changed, 51 insertions, 3 deletions
diff --git a/test/test-client.py b/test/test-client.py index 2de34fb..fbf0555 100755 --- a/test/test-client.py +++ b/test/test-client.py @@ -388,6 +388,26 @@ class TestDBusBindings(unittest.TestCase): def testListExportedChildObjects(self): self.assert_(self.iface.TestListExportedChildObjects()) + def testUnexport(self): + # https://bugs.freedesktop.org/show_bug.cgi?id=10457 + self.assert_(not self.iface.HasRemovableObject()) + self.assert_(self.iface.AddRemovableObject()) + self.assert_(self.iface.HasRemovableObject()) + + removable = self.bus.get_object(NAME, OBJECT + '/RemovableObject') + iface = dbus.Interface(removable, IFACE) + self.assert_(iface.IsThere()) + self.assert_(iface.RemoveSelf()) + + self.assert_(not self.iface.HasRemovableObject()) + + # and again... + self.assert_(self.iface.AddRemovableObject()) + self.assert_(self.iface.HasRemovableObject()) + self.assert_(iface.IsThere()) + self.assert_(iface.RemoveSelf()) + self.assert_(not self.iface.HasRemovableObject()) + """ Remove this for now class TestDBusPythonToGLibBindings(unittest.TestCase): def setUp(self): diff --git a/test/test-service.py b/test/test-service.py index c27c55f..8f588c8 100755 --- a/test/test-service.py +++ b/test/test-service.py @@ -48,6 +48,20 @@ NAME = "org.freedesktop.DBus.TestSuitePythonService" IFACE = "org.freedesktop.DBus.TestSuiteInterface" OBJECT = "/org/freedesktop/DBus/TestSuitePythonObject" +class RemovableObject(dbus.service.Object): + # Part of test for https://bugs.freedesktop.org/show_bug.cgi?id=10457 + def __init__(self, bus_name, object_path=OBJECT + '/RemovableObject'): + super(RemovableObject, self).__init__(bus_name, object_path) + + @dbus.service.method(IFACE, in_signature='', out_signature='b') + def IsThere(self): + return True + + @dbus.service.method(IFACE, in_signature='', out_signature='b') + def RemoveSelf(self): + self.unexport() + return True + class TestGObject(ExportedGObject): def __init__(self, bus_name, object_path=OBJECT + '/GObject'): super(TestGObject, self).__init__(bus_name, object_path) @@ -64,6 +78,7 @@ class TestInterface(dbus.service.Interface): class TestObject(dbus.service.Object, TestInterface): def __init__(self, bus_name, object_path=OBJECT): dbus.service.Object.__init__(self, bus_name, object_path) + self._removables = [] """ Echo whatever is sent """ @@ -210,14 +225,27 @@ class TestObject(dbus.service.Object, TestInterface): def WhoAmI(self, sender): return sender + @dbus.service.method(IFACE, in_signature='', out_signature='b') + def AddRemovableObject(self): + # Part of test for https://bugs.freedesktop.org/show_bug.cgi?id=10457 + # Keep the removable object reffed, since that's the use case for this + self._removables.append(RemovableObject(global_name)) + return True + + @dbus.service.method(IFACE, in_signature='', out_signature='b') + def HasRemovableObject(self): + # Part of test for https://bugs.freedesktop.org/show_bug.cgi?id=10457 + objs = session_bus.list_exported_child_objects(OBJECT) + return ('RemovableObject' in objs) + @dbus.service.method(IFACE) def MultipleReturnWithoutSignature(self): # https://bugs.freedesktop.org/show_bug.cgi?id=10174 return dbus.String('abc'), dbus.Int32(123) session_bus = dbus.SessionBus() -name = dbus.service.BusName(NAME, bus=session_bus) -object = TestObject(name) -g_object = TestGObject(name) +global_name = dbus.service.BusName(NAME, bus=session_bus) +object = TestObject(global_name) +g_object = TestGObject(global_name) loop = gobject.MainLoop() loop.run() |