From bd0218c3ee902e0b4b21f4ed7f20cb36872bfd4b Mon Sep 17 00:00:00 2001 From: Julian Bouzas <julian.bouzas@collabora.com> Date: Fri, 15 May 2020 13:40:25 -0400 Subject: [PATCH] tests: base-test-fixure: make sure core is done before destroying it --- tests/common/base-test-fixture.h | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/tests/common/base-test-fixture.h b/tests/common/base-test-fixture.h index 7ebb3ce9..f465a977 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); -- GitLab