summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorSimon McVittie <simon.mcvittie@collabora.co.uk>2007-05-30 15:19:46 +0100
committerSimon McVittie <simon.mcvittie@collabora.co.uk>2007-05-30 15:19:46 +0100
commitc87b55c6ab30542d5d17f2e2041e4c87b3df712d (patch)
tree056e9cb9a6830147b684c8b9dc5b38d78b703305 /test
parent030b68b4e6d64dc25904618852917839892de1be (diff)
dbus.service: Make it possible to unexport objects (fd.o#10457)
Diffstat (limited to 'test')
-rwxr-xr-xtest/test-client.py20
-rwxr-xr-xtest/test-service.py34
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()