[Telepathy-commits] [telepathy-gabble/master] Stop using the workaround for bug #17329

Alban Crequy alban.crequy at collabora.co.uk
Fri Dec 5 09:42:39 PST 2008


- Update the spec in extensions/:
There was a bug in dbus-glib that prevent to use the right type:
Instead of a{ua(a{sv}as)}, we used a(ua{sv}as) as a workaround.
See http://bugs.freedesktop.org/show_bug.cgi?id=17329
Now there is a fix, so we don't use the workaround anymore.

- Update the implementation for the new spec

- Update the unit test
---
 .../Connection_Interface_Contact_Capabilities.xml  |   46 ++++--
 src/connection.c                                   |   14 +-
 src/im-factory.c                                   |    5 +-
 src/private-tubes-factory.c                        |    5 +-
 tests/twisted/test-caps-tubes.py                   |  176 ++++++++++----------
 5 files changed, 136 insertions(+), 110 deletions(-)

diff --git a/extensions/Connection_Interface_Contact_Capabilities.xml b/extensions/Connection_Interface_Contact_Capabilities.xml
index 22edfa3..4d1d632 100644
--- a/extensions/Connection_Interface_Contact_Capabilities.xml
+++ b/extensions/Connection_Interface_Contact_Capabilities.xml
@@ -79,8 +79,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
           <p>The handle zero MUST NOT be included in the request.</p>
         </tp:docstring>
       </arg>
-      <arg direction="out" type="a(ua{sv}as)"
-           tp:type="Enhanced_Contact_Capability[]">
+      <!-- There was a bug in dbus-glib that prevent to use the right type:
+           Instead of a{ua(a{sv}as)}, we used a(ua{sv}as) as a workaround.
+           See http://bugs.freedesktop.org/show_bug.cgi?id=17329
+           Now there is a fix, so we don't use the workaround anymore.
+        -->
+      <arg direction="out" type="a{ua(a{sv}as)}"
+           tp:type="Contact_Handle_Enhanced_Contact_Capability_Map">
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           An array of structures containing:
           <ul>
@@ -104,7 +109,13 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
 
     <signal name="ContactCapabilitiesChanged"
             tp:name-for-bindings="Contact_Capabilities_Changed">
-      <arg name="caps" type="a(ua{sv}as)" tp:type="Enhanced_Contact_Capability[]">
+      <arg name="handle" type="u" tp:type="Contact_Handle">
+        <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
+          <p>A contact handle.</p>
+        </tp:docstring>
+      </arg>
+      <arg name="caps" type="a(a{sv}as)"
+           tp:type="Enhanced_Contact_Capability[]">
         <tp:docstring xmlns="http://www.w3.org/1999/xhtml">
           All the capabilities of the contact
         </tp:docstring>
@@ -115,7 +126,8 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:docstring>
     </signal>
 
-    <tp:struct name="Enhanced_Contact_Capability" array-name="Enhanced_Contact_Capability_List">
+    <tp:struct name="Enhanced_Contact_Capability"
+               array-name="Enhanced_Contact_Capability_List">
       <tp:docstring>
         A struct representing a capability posessed by a contact,
         as returned by GetContactCapabilities on the ContactCapabilities
@@ -125,7 +137,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
         the request contains a property which does not belong to
         Fixed_Properties nor to Allowed_Properties, the request will fail.
       </tp:docstring>
-      <tp:member type="u" tp:type="Contact_Handle" name="Handle"/>
       <tp:member type="a{sv}" tp:type="Channel_Class"
                  name="Fixed_Properties">
         <tp:docstring>
@@ -139,15 +150,22 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
       </tp:member>
     </tp:struct>
 
-    <tp:struct name="Contact_Capability_Change" array-name="Contact_Capability_Change_List">
-      <tp:docstring>A struct representing a change to one of a contact's capabilities, as
-        seen in the ContactCapabilitiesChanged signal on the ContactCapabilities
-        interface.</tp:docstring>
-      <tp:member type="a(ua{sv}as)" tp:type="Enhanced_Contact_Capability[]"
-                 name="Removed_Capabilities"/>
-      <tp:member type="a(ua{sv}as)" tp:type="Enhanced_Contact_Capability[]"
-                 name="Added_Capabilities"/>
-    </tp:struct>
+  <tp:mapping name="Contact_Handle_Enhanced_Contact_Capability_Map"
+              array-name="Contact_Handle_Enhanced_Contact_Capability_Map_List">
+    <tp:docstring>A mapping from contact handle to their capabilities.
+    </tp:docstring>
+    <tp:member type="u" name="Key" tp:type="Contact_Handle">
+      <tp:docstring>
+        A contact handle.
+      </tp:docstring>
+    </tp:member>
+    <tp:member type="a(a{sv}as)" name="Value"
+               tp:type="Enhanced_Contact_Capability[]">
+      <tp:docstring>
+        The contact capabilities.
+      </tp:docstring>
+    </tp:member>
+  </tp:mapping>
 
   </interface>
 </node>
diff --git a/src/connection.c b/src/connection.c
index 571da2f..5c2500b 100644
--- a/src/connection.c
+++ b/src/connection.c
@@ -2233,7 +2233,7 @@ _emit_contact_capabilities_changed (GabbleConnection *conn,
 
   gabble_connection_get_handle_contact_capabilities (conn, handle, ret);
   gabble_svc_connection_interface_contact_capabilities_emit_contact_capabilities_changed (
-      conn, ret);
+      conn, handle, ret);
 
   gabble_free_enhanced_contact_capabilities (ret);
 }
@@ -2665,7 +2665,7 @@ gabble_connection_get_contact_capabilities (
   TpHandleRepoIface *contact_handles = tp_base_connection_get_handles (base,
       TP_HANDLE_TYPE_CONTACT);
   guint i;
-  GPtrArray *ret;
+  GHashTable *ret;
   GError *error = NULL;
 
   TP_BASE_CONNECTION_ERROR_IF_NOT_CONNECTED (base, context);
@@ -2677,19 +2677,23 @@ gabble_connection_get_contact_capabilities (
       return;
     }
 
-  ret = g_ptr_array_new ();
+  ret = g_hash_table_new_full (NULL, NULL, NULL,
+      (GDestroyNotify) gabble_free_enhanced_contact_capabilities);
 
   for (i = 0; i < handles->len; i++)
     {
+      GPtrArray *arr = g_ptr_array_new ();
       TpHandle handle = g_array_index (handles, TpHandle, i);
 
-      gabble_connection_get_handle_contact_capabilities (self, handle, ret);
+      gabble_connection_get_handle_contact_capabilities (self, handle, arr);
+
+      g_hash_table_insert (ret, GINT_TO_POINTER (handle), arr);
     }
 
   gabble_svc_connection_interface_contact_capabilities_return_from_get_contact_capabilities
       (context, ret);
 
-  gabble_free_enhanced_contact_capabilities (ret);
+  g_hash_table_destroy (ret);
 }
 
 
diff --git a/src/im-factory.c b/src/im-factory.c
index 5ef8576..d1bd914 100644
--- a/src/im-factory.c
+++ b/src/im-factory.c
@@ -497,9 +497,8 @@ gabble_im_factory_get_contact_caps (GabbleCapsChannelManager *manager,
       target_handle_type_value);
 
   dbus_g_type_struct_set (&monster,
-      0, handle,
-      1, fixed_properties,
-      2, text_allowed_properties,
+      0, fixed_properties,
+      1, text_allowed_properties,
       G_MAXUINT);
 
   g_hash_table_destroy (fixed_properties);
diff --git a/src/private-tubes-factory.c b/src/private-tubes-factory.c
index 21ee599..b805f71 100644
--- a/src/private-tubes-factory.c
+++ b/src/private-tubes-factory.c
@@ -445,9 +445,8 @@ add_service_to_array (gchar *service,
         target_handle_type_value);
 
   dbus_g_type_struct_set (&monster,
-      0, handle,
-      1, fixed_properties,
-      2, tube_allowed_properties,
+      0, fixed_properties,
+      1, tube_allowed_properties,
       G_MAXUINT);
 
   g_hash_table_destroy (fixed_properties);
diff --git a/tests/twisted/test-caps-tubes.py b/tests/twisted/test-caps-tubes.py
index a344247..014e0b0 100644
--- a/tests/twisted/test-caps-tubes.py
+++ b/tests/twisted/test-caps-tubes.py
@@ -128,7 +128,8 @@ def receive_presence_and_ask_caps(q, stream):
             EventPattern('stream-presence'),
             EventPattern('dbus-signal', signal='ContactCapabilitiesChanged')
         )
-    signaled_caps = event_dbus.args[0]
+    assert event_dbus.args[0] == 1
+    signaled_caps = event_dbus.args[1]
 
     c_nodes = xpath.queryForNodes('/presence/c', event_stream.stanza)
     assert c_nodes is not None
@@ -207,8 +208,8 @@ def test_tube_caps_from_contact(q, bus, conn, stream, contact, contact_handle, c
     sync_stream(q, stream)
 
     # no special capabilities
-    basic_caps = [(contact_handle, text_fixed_properties,
-            text_allowed_properties)]
+    basic_caps = dbus.Dictionary({contact_handle:
+            [(text_fixed_properties, text_allowed_properties)]})
     caps = conn_caps_iface.GetContactCapabilities([contact_handle])
     assert caps == basic_caps, caps
     # test again, to check GetContactCapabilities does not have side effect
@@ -218,7 +219,8 @@ def test_tube_caps_from_contact(q, bus, conn, stream, contact, contact_handle, c
     caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
             [contact_handle], [caps_iface], False) \
             [contact_handle][caps_iface + '/caps']
-    assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+    assert caps_via_contacts_iface == caps[contact_handle], \
+                                    caps_via_contacts_iface
 
     # send presence with 1 stream tube cap
     presence = make_presence(contact, None, 'hello')
@@ -244,16 +246,17 @@ def test_tube_caps_from_contact(q, bus, conn, stream, contact, contact_handle, c
     stream.send(result)
 
     event = q.expect('dbus-signal', signal='ContactCapabilitiesChanged')
-    signaled_caps = event.args[0]
+    assert event.args[0] == contact_handle
+    signaled_caps = event.args[1]
     assert len(signaled_caps) == 2, signaled_caps # basic caps + daap
-    assert signaled_caps[1][1] \
+    assert signaled_caps[1][0] \
         ['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
         == 'daap'
 
     # daap capabilities
-    daap_caps = [
-        (contact_handle, text_fixed_properties, text_allowed_properties),
-        (contact_handle, daap_fixed_properties, daap_allowed_properties)]
+    daap_caps = dbus.Dictionary({contact_handle:
+            [(text_fixed_properties, text_allowed_properties),
+             (daap_fixed_properties, daap_allowed_properties)]})
     caps = conn_caps_iface.GetContactCapabilities([contact_handle])
     assert caps == daap_caps, caps
     # test again, to check GetContactCapabilities does not have side effect
@@ -263,7 +266,8 @@ def test_tube_caps_from_contact(q, bus, conn, stream, contact, contact_handle, c
     caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
             [contact_handle], [caps_iface], False) \
             [contact_handle][caps_iface + '/caps']
-    assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+    assert caps_via_contacts_iface == caps[contact_handle], \
+                                    caps_via_contacts_iface
 
     # send presence with 1 D-Bus tube cap
     presence = make_presence(contact, None, 'hello')
@@ -289,16 +293,17 @@ def test_tube_caps_from_contact(q, bus, conn, stream, contact, contact_handle, c
     stream.send(result)
 
     event = q.expect('dbus-signal', signal='ContactCapabilitiesChanged')
-    signaled_caps = event.args[0]
+    assert event.args[0] == contact_handle
+    signaled_caps = event.args[1]
     assert len(signaled_caps) == 2, signaled_caps # basic caps + Xiangqi
-    assert signaled_caps[1][1] \
+    assert signaled_caps[1][0] \
         ['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
         == 'com.example.Xiangqi'
 
     # xiangqi capabilities
-    xiangqi_caps = [
-        (contact_handle, text_fixed_properties, text_allowed_properties),
-        (contact_handle, xiangqi_fixed_properties, xiangqi_allowed_properties)]
+    xiangqi_caps = dbus.Dictionary({contact_handle:
+            [(text_fixed_properties, text_allowed_properties),
+            (xiangqi_fixed_properties, xiangqi_allowed_properties)]})
     caps = conn_caps_iface.GetContactCapabilities([contact_handle])
     assert caps == xiangqi_caps, caps
     # test again, to check GetContactCapabilities does not have side effect
@@ -308,7 +313,8 @@ def test_tube_caps_from_contact(q, bus, conn, stream, contact, contact_handle, c
     caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
             [contact_handle], [caps_iface], False) \
             [contact_handle][caps_iface + '/caps']
-    assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+    assert caps_via_contacts_iface == caps[contact_handle], \
+                                    caps_via_contacts_iface
 
     # send presence with both D-Bus and stream tube caps
     presence = make_presence(contact, None, 'hello')
@@ -336,20 +342,21 @@ def test_tube_caps_from_contact(q, bus, conn, stream, contact, contact_handle, c
     stream.send(result)
 
     event = q.expect('dbus-signal', signal='ContactCapabilitiesChanged')
-    signaled_caps = event.args[0]
+    assert event.args[0] == contact_handle
+    signaled_caps = event.args[1]
     assert len(signaled_caps) == 3, signaled_caps # basic caps + daap+xiangqi
-    assert signaled_caps[1][1] \
+    assert signaled_caps[1][0] \
         ['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
         == 'daap'
-    assert signaled_caps[2][1] \
+    assert signaled_caps[2][0] \
         ['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
         == 'com.example.Xiangqi'
 
     # daap + xiangqi capabilities
-    daap_xiangqi_caps = [
-        (contact_handle, text_fixed_properties, text_allowed_properties),
-        (contact_handle, daap_fixed_properties, daap_allowed_properties),
-        (contact_handle, xiangqi_fixed_properties, xiangqi_allowed_properties)]
+    daap_xiangqi_caps = dbus.Dictionary({contact_handle:
+        [(text_fixed_properties, text_allowed_properties),
+        (daap_fixed_properties, daap_allowed_properties),
+        (xiangqi_fixed_properties, xiangqi_allowed_properties)]})
     caps = conn_caps_iface.GetContactCapabilities([contact_handle])
     assert caps == daap_xiangqi_caps, caps
     # test again, to check GetContactCapabilities does not have side effect
@@ -359,7 +366,8 @@ def test_tube_caps_from_contact(q, bus, conn, stream, contact, contact_handle, c
     caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
             [contact_handle], [caps_iface], False) \
             [contact_handle][caps_iface + '/caps']
-    assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+    assert caps_via_contacts_iface == caps[contact_handle], \
+                                    caps_via_contacts_iface
 
     # send presence with 4 tube caps
     presence = make_presence(contact, None, 'hello')
@@ -391,29 +399,29 @@ def test_tube_caps_from_contact(q, bus, conn, stream, contact, contact_handle, c
     stream.send(result)
 
     event = q.expect('dbus-signal', signal='ContactCapabilitiesChanged')
-    signaled_caps = event.args[0]
+    assert event.args[0] == contact_handle
+    signaled_caps = event.args[1]
     assert len(signaled_caps) == 5, signaled_caps # basic caps + 4 tubes
-    assert signaled_caps[1][1] \
+    assert signaled_caps[1][0] \
         ['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
         == 'daap'
-    assert signaled_caps[2][1] \
+    assert signaled_caps[2][0] \
         ['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
         == 'http'
-    assert signaled_caps[3][1] \
+    assert signaled_caps[3][0] \
         ['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
         == 'com.example.Xiangqi'
-    assert signaled_caps[4][1] \
+    assert signaled_caps[4][0] \
         ['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
         == 'com.example.Go'
 
     # http + daap + xiangqi + go capabilities
-    all_tubes_caps = [
-        (contact_handle, text_fixed_properties, text_allowed_properties),
-        (contact_handle, daap_fixed_properties, daap_allowed_properties),
-        (contact_handle, http_fixed_properties, http_allowed_properties),
-        (contact_handle, xiangqi_fixed_properties,
-                xiangqi_allowed_properties),
-        (contact_handle, go_fixed_properties, go_allowed_properties)]
+    all_tubes_caps = dbus.Dictionary({contact_handle:
+        [(text_fixed_properties, text_allowed_properties),
+        (daap_fixed_properties, daap_allowed_properties),
+        (http_fixed_properties, http_allowed_properties),
+        (xiangqi_fixed_properties, xiangqi_allowed_properties),
+        (go_fixed_properties, go_allowed_properties)]})
     caps = conn_caps_iface.GetContactCapabilities([contact_handle])
     assert caps == all_tubes_caps, caps
     # test again, to check GetContactCapabilities does not have side effect
@@ -423,7 +431,8 @@ def test_tube_caps_from_contact(q, bus, conn, stream, contact, contact_handle, c
     caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
             [contact_handle], [caps_iface], False) \
             [contact_handle][caps_iface + '/caps']
-    assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+    assert caps_via_contacts_iface == caps[contact_handle], \
+                                    caps_via_contacts_iface
 
     # send presence with both D-Bus and stream tube caps
     presence = make_presence(contact, None, 'hello')
@@ -436,20 +445,21 @@ def test_tube_caps_from_contact(q, bus, conn, stream, contact, contact_handle, c
     # Gabble does not look up our capabilities because of the cache
 
     event = q.expect('dbus-signal', signal='ContactCapabilitiesChanged')
-    signaled_caps = event.args[0]
+    assert event.args[0] == contact_handle
+    signaled_caps = event.args[1]
     assert len(signaled_caps) == 3, signaled_caps # basic caps + daap+xiangqi
-    assert signaled_caps[1][1] \
+    assert signaled_caps[1][0] \
         ['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
         == 'daap'
-    assert signaled_caps[2][1] \
+    assert signaled_caps[2][0] \
         ['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
         == 'com.example.Xiangqi'
 
     # daap + xiangqi capabilities
-    daap_xiangqi_caps = [
-        (contact_handle, text_fixed_properties, text_allowed_properties),
-        (contact_handle, daap_fixed_properties, daap_allowed_properties),
-        (contact_handle, xiangqi_fixed_properties, xiangqi_allowed_properties)]
+    daap_xiangqi_caps = dbus.Dictionary({contact_handle:
+        [(text_fixed_properties, text_allowed_properties),
+        (daap_fixed_properties, daap_allowed_properties),
+        (xiangqi_fixed_properties, xiangqi_allowed_properties)]})
     caps = conn_caps_iface.GetContactCapabilities([contact_handle])
     assert caps == daap_xiangqi_caps, caps
     # test again, to check GetContactCapabilities does not have side effect
@@ -459,27 +469,28 @@ def test_tube_caps_from_contact(q, bus, conn, stream, contact, contact_handle, c
     caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
             [contact_handle], [caps_iface], False) \
             [contact_handle][caps_iface + '/caps']
-    assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+    assert caps_via_contacts_iface == caps[contact_handle], \
+                                    caps_via_contacts_iface
 
 def test_tube_caps_to_contact(q, bus, conn, stream):
-    basic_caps = [(1, text_fixed_properties,
-            text_allowed_properties)]
-    daap_caps = [
-        (1, text_fixed_properties, text_allowed_properties),
-        (1, daap_fixed_properties, daap_allowed_properties)]
-    xiangqi_caps = [
-        (1, text_fixed_properties, text_allowed_properties),
-        (1, xiangqi_fixed_properties, xiangqi_allowed_properties)]
-    daap_xiangqi_caps = [
-        (1, text_fixed_properties, text_allowed_properties),
-        (1, daap_fixed_properties, daap_allowed_properties),
-        (1, xiangqi_fixed_properties, xiangqi_allowed_properties)]
-    all_tubes_caps = [
-        (1, text_fixed_properties, text_allowed_properties),
-        (1, daap_fixed_properties, daap_allowed_properties),
-        (1, http_fixed_properties, http_allowed_properties),
-        (1, xiangqi_fixed_properties, xiangqi_allowed_properties),
-        (1, go_fixed_properties, go_allowed_properties)]
+    basic_caps = dbus.Dictionary({1:
+        [(text_fixed_properties, text_allowed_properties)]})
+    daap_caps = dbus.Dictionary({1:
+        [(text_fixed_properties, text_allowed_properties),
+        (daap_fixed_properties, daap_allowed_properties)]})
+    xiangqi_caps = dbus.Dictionary({1:
+        [(text_fixed_properties, text_allowed_properties),
+        (xiangqi_fixed_properties, xiangqi_allowed_properties)]})
+    daap_xiangqi_caps = dbus.Dictionary({1:
+        [(text_fixed_properties, text_allowed_properties),
+        (daap_fixed_properties, daap_allowed_properties),
+        (xiangqi_fixed_properties, xiangqi_allowed_properties)]})
+    all_tubes_caps = dbus.Dictionary({1:
+        [(text_fixed_properties, text_allowed_properties),
+        (daap_fixed_properties, daap_allowed_properties),
+        (http_fixed_properties, http_allowed_properties),
+        (xiangqi_fixed_properties, xiangqi_allowed_properties),
+        (go_fixed_properties, go_allowed_properties)]})
 
     conn_caps_iface = dbus.Interface(conn, caps_iface)
     conn_contacts_iface = dbus.Interface(conn, contacts_iface)
@@ -491,7 +502,7 @@ def test_tube_caps_to_contact(q, bus, conn, stream):
     caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
             [1], [caps_iface], False) \
             [1][caps_iface + '/caps']
-    assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+    assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
 
     # Advertise nothing
     conn_caps_iface.SetSelfCapabilities([])
@@ -504,7 +515,7 @@ def test_tube_caps_to_contact(q, bus, conn, stream):
     caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
             [1], [caps_iface], False) \
             [1][caps_iface + '/caps']
-    assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+    assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
 
     sync_stream(q, stream)
 
@@ -522,19 +533,18 @@ def test_tube_caps_to_contact(q, bus, conn, stream):
     assert caps_contain(event, ns_tubes + '/dbus/com.example.Xiangqi') \
             == False, caps_str
     assert len(signaled_caps) == 2, signaled_caps # basic caps + daap
-    assert signaled_caps[1][1] \
+    assert signaled_caps[1][0] \
         ['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
         == 'daap'
 
     # Check our own caps
     caps = conn_caps_iface.GetContactCapabilities([1])
-    assert len(caps) == 2
     assert caps == daap_caps, caps
     # check the Contacts interface give the same caps
     caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
             [1], [caps_iface], False) \
             [1][caps_iface + '/caps']
-    assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+    assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
 
     # Advertise xiangqi
     ret_caps = conn_caps_iface.SetSelfCapabilities(
@@ -550,19 +560,18 @@ def test_tube_caps_to_contact(q, bus, conn, stream):
     assert caps_contain(event, ns_tubes + '/dbus/com.example.Xiangqi') \
             == True, caps_str
     assert len(signaled_caps) == 2, signaled_caps # basic caps + daap
-    assert signaled_caps[1][1] \
+    assert signaled_caps[1][0] \
         ['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
         == 'com.example.Xiangqi'
 
     # Check our own caps
     caps = conn_caps_iface.GetContactCapabilities([1])
-    assert len(caps) == 2
     assert caps == xiangqi_caps, caps
     # check the Contacts interface give the same caps
     caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
             [1], [caps_iface], False) \
             [1][caps_iface + '/caps']
-    assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+    assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
 
     # Advertise daap + xiangqi
     ret_caps = conn_caps_iface.SetSelfCapabilities(
@@ -578,22 +587,21 @@ def test_tube_caps_to_contact(q, bus, conn, stream):
     assert caps_contain(event, ns_tubes + '/dbus/com.example.Xiangqi') \
             == True, caps_str
     assert len(signaled_caps) == 3, signaled_caps # basic caps + daap+xiangqi
-    assert signaled_caps[1][1] \
+    assert signaled_caps[1][0] \
         ['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
         == 'daap'
-    assert signaled_caps[2][1] \
+    assert signaled_caps[2][0] \
         ['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
         == 'com.example.Xiangqi'
 
     # Check our own caps
     caps = conn_caps_iface.GetContactCapabilities([1])
-    assert len(caps) == 3
     assert caps == daap_xiangqi_caps, caps
     # check the Contacts interface give the same caps
     caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
             [1], [caps_iface], False) \
             [1][caps_iface + '/caps']
-    assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+    assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
 
     # Advertise 4 tubes
     ret_caps = conn_caps_iface.SetSelfCapabilities(
@@ -610,28 +618,27 @@ def test_tube_caps_to_contact(q, bus, conn, stream):
     assert caps_contain(event, ns_tubes + '/dbus/com.example.Xiangqi') \
             == True, caps_str
     assert len(signaled_caps) == 5, signaled_caps # basic caps + 4 tubes
-    assert signaled_caps[1][1] \
+    assert signaled_caps[1][0] \
         ['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
         == 'daap'
-    assert signaled_caps[2][1] \
+    assert signaled_caps[2][0] \
         ['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
         == 'http'
-    assert signaled_caps[3][1] \
+    assert signaled_caps[3][0] \
         ['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
         == 'com.example.Xiangqi'
-    assert signaled_caps[4][1] \
+    assert signaled_caps[4][0] \
         ['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
         == 'com.example.Go'
 
     # Check our own caps
     caps = conn_caps_iface.GetContactCapabilities([1])
-    assert len(caps) == 5
     assert caps == all_tubes_caps, caps
     # check the Contacts interface give the same caps
     caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
             [1], [caps_iface], False) \
             [1][caps_iface + '/caps']
-    assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+    assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
 
     # Advertise daap + xiangqi
     ret_caps = conn_caps_iface.SetSelfCapabilities(
@@ -647,22 +654,21 @@ def test_tube_caps_to_contact(q, bus, conn, stream):
     assert caps_contain(event, ns_tubes + '/dbus/com.example.Xiangqi') \
             == True, caps_str
     assert len(signaled_caps) == 3, signaled_caps # basic caps + daap+xiangqi
-    assert signaled_caps[1][1] \
+    assert signaled_caps[1][0] \
         ['org.freedesktop.Telepathy.Channel.Type.StreamTube.DRAFT.Service'] \
         == 'daap'
-    assert signaled_caps[2][1] \
+    assert signaled_caps[2][0] \
         ['org.freedesktop.Telepathy.Channel.Type.DBusTube.DRAFT.ServiceName'] \
         == 'com.example.Xiangqi'
 
     # Check our own caps
     caps = conn_caps_iface.GetContactCapabilities([1])
-    assert len(caps) == 3
     assert caps == daap_xiangqi_caps, caps
     # check the Contacts interface give the same caps
     caps_via_contacts_iface = conn_contacts_iface.GetContactAttributes(
             [1], [caps_iface], False) \
             [1][caps_iface + '/caps']
-    assert caps_via_contacts_iface == caps, caps_via_contacts_iface
+    assert caps_via_contacts_iface == caps[1], caps_via_contacts_iface
 
 
 def test(q, bus, conn, stream):
-- 
1.5.6.5




More information about the Telepathy-commits mailing list