On Wed, 2009-11-18 at 18:58 +0100, Patrick Ohly wrote: > I'm also still looking at why the "done" signal is sent more than once. > I think that shouldn't happen.
And it is really only sent once. The problem was in the test-dbus.py script. Here's the fix and a more detailed explanation: commit ac1c3c032ccae55f8697f75341f7becd2c3adfb0 Author: Patrick Ohly <[email protected]> Date: Wed Nov 18 22:49:48 2009 +0100 D-Bus testing: only react to D-Bus signals while the test runs Registered Python D-Bus signal handlers cannot be removed. This had the undesired effect that when running multiple tests, old signal handlers where still active and might have undesired effects, like calling loop.quit() or recording events multiple times (because both the old and new handler are invoked). To solve this problem, DBusUtil.runTest() sets self.running = True while the test is active. All signal handlers must check this flag and not do anything if it is False. Debugging such problems was harder than necessary because recording the "quit_events" inside DBusUtil instances had the effect that the records of previous signal handlers where not visible in the ensuing, failing test. Therefore this patch also turns the DBusUtil instance variables into class variables which are shared by the tests. As a side effect, it is no longer necessary to call DBusUtil.__init__. Instead the variables are reset in runTest(). Yongsheng, I pushed this and a fix for sending SYNC_DONE at the end of Session::run() into "pohly". Please review. -- Best Regards, Patrick Ohly The content of this message is my personal opinion only and although I am an employee of Intel, the statements I make here in no way represent Intel's position on the issue, nor am I authorized to speak on behalf of Intel on this matter. _______________________________________________ SyncEvolution mailing list [email protected] http://lists.syncevolution.org/listinfo/syncevolution
