diff options
author | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2013-08-06 15:29:35 +0100 |
---|---|---|
committer | Simon McVittie <simon.mcvittie@collabora.co.uk> | 2013-08-06 15:29:35 +0100 |
commit | 1a5bfd386fb23b0690fe99722ed46d2eb1608a85 (patch) | |
tree | 8da00be390b257b7fef578e038e1d330b2b8f037 | |
parent | 6df8c13f5817b3c9f6e7f0592195257a3d857147 (diff) | |
parent | 42c0c8f2b03a8ac9b94f268d41f379f8773c885f (diff) |
Merge branch 'telepathy-gabble-0.16'
Conflicts:
NEWS
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | tests/twisted/roster/groups.py | 39 | ||||
-rw-r--r-- | tests/twisted/rostertest.py | 17 |
3 files changed, 43 insertions, 16 deletions
@@ -11,6 +11,9 @@ Fixes: • fd.o #65290: wrap uninstalled regression tests in run-test.sh so they can work under Automake ≥ 1.13 (Simon) +• fd.o #67828: fix a test failure with telepathy-glib 0.20.3/0.21.1 or later + (Simon) + telepathy-gabble 0.17.5 (2013-06-06) ==================================== diff --git a/tests/twisted/roster/groups.py b/tests/twisted/roster/groups.py index d9fd67df2..a0ba99bc8 100644 --- a/tests/twisted/roster/groups.py +++ b/tests/twisted/roster/groups.py @@ -53,24 +53,35 @@ def test(q, bus, conn, stream): stream.send(event.stanza) - # slight implementation detail: TpBaseContactList emits ContactsChanged - # etc. before it announces its channels, and it emits one CGC per group. - s1, s2 = q.expect_many( - EventPattern('dbus-signal', signal='GroupsChanged', - interface=cs.CONN_IFACE_CONTACT_GROUPS, path=conn.object_path, - predicate=lambda e: 'women' in e.args[1]), - EventPattern('dbus-signal', signal='GroupsChanged', - interface=cs.CONN_IFACE_CONTACT_GROUPS, path=conn.object_path, - predicate=lambda e: 'men' in e.args[1]), - ) + # Avoid relying on the implementation detail of exactly when + # TpBaseContactList emits ContactsChanged, relative to when it + # announces its channels. Prior to 0.20.3, 0.21.1 it would + # announce the channels, emit GroupsChanged, then announce the channels + # again... which was a bug, but it turned out this test relied on it. + # + # We do still rely on the implementation detail that we emit GroupsChanged + # once per group with all of its members, not once per contact with all + # of their groups. On a typical contact list, there are more contacts + # than groups, so that'll work out smaller. + + pairs, groups_changed = expect_contact_list_signals(q, bus, conn, [], + ['men', 'women'], + [ + EventPattern('dbus-signal', signal='GroupsChanged', + interface=cs.CONN_IFACE_CONTACT_GROUPS, + path=conn.object_path, + predicate=lambda e: 'women' in e.args[1]), + EventPattern('dbus-signal', signal='GroupsChanged', + interface=cs.CONN_IFACE_CONTACT_GROUPS, + path=conn.object_path, + predicate=lambda e: 'men' in e.args[1]), + ]) amy, bob, che = conn.RequestHandles(cs.HT_CONTACT, ['amy@foo.com', 'bob@foo.com', 'che@foo.com']) - assertEquals([[amy], ['women'], []], s1.args) - assertEquals([[bob, che], ['men'], []], s2.args) - - pairs = expect_contact_list_signals(q, bus, conn, [], ['men', 'women']) + assertEquals([[amy], ['women'], []], groups_changed[0].args) + assertEquals([[bob, che], ['men'], []], groups_changed[1].args) q.expect('dbus-signal', signal='ContactListStateChanged', args=[cs.CONTACT_LIST_STATE_SUCCESS]) diff --git a/tests/twisted/rostertest.py b/tests/twisted/rostertest.py index 3d31ad454..7e9f121ab 100644 --- a/tests/twisted/rostertest.py +++ b/tests/twisted/rostertest.py @@ -68,10 +68,14 @@ def get_contact_list_event_patterns(q, bus, conn, expected_handle_type, name): predicate=new_channels_predicate) ) -def expect_contact_list_signals(q, bus, conn, lists, groups=[]): +def expect_contact_list_signals(q, bus, conn, lists, groups=[], + expect_more=None): assert lists or groups - eps = [] + if expect_more is None: + eps = [] + else: + eps = expect_more[:] for name in lists: eps.extend(get_contact_list_event_patterns(q, bus, conn, @@ -83,6 +87,11 @@ def expect_contact_list_signals(q, bus, conn, lists, groups=[]): events = q.expect_many(*eps) ret = [] + more = [] + + if expect_more is not None: + for ep in expect_more: + more.append(events.pop(0)) for name in lists: old_signal = events.pop(0) @@ -95,6 +104,10 @@ def expect_contact_list_signals(q, bus, conn, lists, groups=[]): ret.append((old_signal, new_signal)) assert len(events) == 0 + + if expect_more is not None: + return ret, more + return ret def check_contact_list_signals(q, bus, conn, signals, |