I was using sync_dbus in a mission-control test to make MC spin its mainloop enough so I could assert one method was not being called before I returned from a call that had previously been made. However, sync_dbus alone was not enough as apparently libdbus returns from Ping calls synchronously so it didn't turn the main loop enough. Calling sync_dbus a few times made it work, but it showed the test was going to be racy. This is what I did: # Waste a little time here and there. We can't call sync_dbus # here because it calls Ping and libdbus returns from Ping # synchronously and doesn't turn the main loop handle enough. call_async(q, cd_props, 'Get', cs.CD_IFACE_OP_LIST, 'DispatchOperations') event = q.expect('dbus-return', method='Get') This works in my case because there was no other Get method call, but it would be bad to replace sync_dbus with this as it could grab the dbus method return from some other call, which is obviously bad. So, we need a better sync_dbus. Ideas?
Perhaps make an async call to org.freedesktop.Telepathy.Tests.SyncDBusDummyMethod and expect the error?
Neat idea. Here's a patch. make check passes. I'm putting it here because gabble is pretty much the canonical location for servicetest.py.
Looks good.
Thanks.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.