[Telepathy-commits] [telepathy-gabble/master] allow multiple test runs inside one test script

Senko Rasic senko at phyrexia.lan
Tue Dec 2 04:34:00 PST 2008


---
 tests/twisted/gabbletest.py |   25 +++++++++++++++++++++++--
 1 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/tests/twisted/gabbletest.py b/tests/twisted/gabbletest.py
index 639c882..5a0f630 100644
--- a/tests/twisted/gabbletest.py
+++ b/tests/twisted/gabbletest.py
@@ -60,6 +60,22 @@ class JabberAuthenticator(xmlstream.Authenticator):
         self.password = password
         xmlstream.Authenticator.__init__(self)
 
+    # Patch in fix from http://twistedmatrix.com/trac/changeset/23418.
+    # This monkeypatch taken from Gadget source code
+    from twisted.words.xish.utility import EventDispatcher
+
+    def _addObserver(self, onetime, event, observerfn, priority, *args,
+            **kwargs):
+        if self._dispatchDepth > 0:
+            self._updateQueue.append(lambda: self._addObserver(onetime, event,
+                observerfn, priority, *args, **kwargs))
+
+        return self._oldAddObserver(onetime, event, observerfn, priority,
+            *args, **kwargs)
+
+    EventDispatcher._oldAddObserver = EventDispatcher._addObserver
+    EventDispatcher._addObserver = _addObserver
+
     def streamStarted(self, root=None):
         if root:
             self.xmlstream.sid = root.getAttribute('id')
@@ -316,13 +332,18 @@ def exec_test_deferred (fun, params, protocol=None, timeout=None):
         or '-v' in sys.argv)
 
     bus = dbus.SessionBus()
-    conn = make_connection(bus, queue.append, params)
+    # conn = make_connection(bus, queue.append, params)
     (stream, port) = make_stream(queue.append, protocol=protocol)
 
     error = None
 
+    if not isinstance(fun, list):
+        fun = [fun]
+
     try:
-        fun(queue, bus, conn, stream)
+        for f in fun:
+            conn = make_connection(bus, queue.append, params)
+            f(queue, bus, conn, stream)
     except Exception, e:
         import traceback
         traceback.print_exc()
-- 
1.5.6.5




More information about the Telepathy-commits mailing list