diff --git a/tests/common/base-test-fixture.h b/tests/common/base-test-fixture.h index 7ebb3ce9ff03a3d39c472e3c9de8111736e926c0..f465a977b0b20ba164cf2922be1c783cbaa2a94b 100644 --- a/tests/common/base-test-fixture.h +++ b/tests/common/base-test-fixture.h @@ -92,11 +92,32 @@ wp_base_test_fixture_setup (WpBaseTestFixture * self, WpBaseTestFlags flags) } } +static void +done_callback (WpCore *core, GAsyncResult *res, WpBaseTestFixture *self) +{ + g_autoptr (GError) error = NULL; + g_assert_true (wp_core_sync_finish (core, res, &error)); + g_assert_null (error); + g_main_loop_quit (self->loop); +} + static void wp_base_test_fixture_teardown (WpBaseTestFixture * self) { - g_main_context_pop_thread_default (self->context); + /* wait for all client core pending tasks to be done */ + if (self->client_core && wp_core_is_connected (self->client_core)) { + wp_core_sync (self->client_core, NULL, (GAsyncReadyCallback) done_callback, + self); + g_main_loop_run (self->loop); + } + /* wait for all core pending tasks to be done */ + if (self->core && wp_core_is_connected (self->core)) { + wp_core_sync (self->core, NULL, (GAsyncReadyCallback) done_callback, self); + g_main_loop_run (self->loop); + } + + g_main_context_pop_thread_default (self->context); g_clear_object (&self->client_core); g_clear_object (&self->core); g_clear_pointer (&self->timeout_source, g_source_unref);