From 903fab9c3c3f86b3f92df4d629725be6475e4019 Mon Sep 17 00:00:00 2001 From: George Kiagiadakis Date: Tue, 11 Apr 2023 13:43:37 +0300 Subject: [PATCH] core: return true from _is_connected() only after receiving the info structure --- lib/wp/core.c | 8 +------- tests/wp/core.c | 21 ++++++++++++++++++++- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/lib/wp/core.c b/lib/wp/core.c index 17b5edf8..4aa29fca 100644 --- a/lib/wp/core.c +++ b/lib/wp/core.c @@ -648,7 +648,7 @@ gboolean wp_core_is_connected (WpCore * self) { g_return_val_if_fail (WP_IS_CORE (self), FALSE); - return self->pw_core != NULL; + return self->pw_core && self->info; } /*! @@ -664,7 +664,6 @@ guint32 wp_core_get_remote_cookie (WpCore * self) { g_return_val_if_fail (wp_core_is_connected (self), 0); - g_return_val_if_fail (self->info, 0); return self->info->cookie; } @@ -679,7 +678,6 @@ const gchar * wp_core_get_remote_name (WpCore * self) { g_return_val_if_fail (wp_core_is_connected (self), NULL); - g_return_val_if_fail (self->info, NULL); return self->info->name; } @@ -695,7 +693,6 @@ const gchar * wp_core_get_remote_user_name (WpCore * self) { g_return_val_if_fail (wp_core_is_connected (self), NULL); - g_return_val_if_fail (self->info, NULL); return self->info->user_name; } @@ -711,7 +708,6 @@ const gchar * wp_core_get_remote_host_name (WpCore * self) { g_return_val_if_fail (wp_core_is_connected (self), NULL); - g_return_val_if_fail (self->info, NULL); return self->info->host_name; } @@ -726,7 +722,6 @@ const gchar * wp_core_get_remote_version (WpCore * self) { g_return_val_if_fail (wp_core_is_connected (self), NULL); - g_return_val_if_fail (self->info, NULL); return self->info->version; } @@ -742,7 +737,6 @@ WpProperties * wp_core_get_remote_properties (WpCore * self) { g_return_val_if_fail (wp_core_is_connected (self), NULL); - g_return_val_if_fail (self->info, NULL); return wp_properties_new_wrap_dict (self->info->props); } diff --git a/tests/wp/core.c b/tests/wp/core.c index 3f408d50..5b95434f 100644 --- a/tests/wp/core.c +++ b/tests/wp/core.c @@ -32,6 +32,12 @@ test_core_teardown (TestFixture *self, gconstpointer user_data) wp_base_test_fixture_teardown (&self->base); } +static void +expect_connected (WpCore * core, TestFixture * f) +{ + g_main_loop_quit (f->base.loop); +} + static void expect_disconnected (WpCore * core, TestFixture * f) { @@ -49,6 +55,8 @@ expect_object_added (WpObjectManager *om, WpProxy *proxy, TestFixture *f) static void test_core_server_disconnected (TestFixture *f, gconstpointer data) { + g_signal_connect (f->base.core, "connected", + G_CALLBACK (expect_connected), f); g_signal_connect (f->base.core, "disconnected", G_CALLBACK (expect_disconnected), f); g_signal_connect (f->om, "object-added", @@ -59,6 +67,7 @@ test_core_server_disconnected (TestFixture *f, gconstpointer data) /* connect */ g_assert_true (wp_core_connect (f->base.core)); + g_main_loop_run (f->base.loop); g_assert_true (wp_core_is_connected (f->base.core)); /* wait for the object manager to collect the client proxy */ @@ -77,6 +86,8 @@ test_core_server_disconnected (TestFixture *f, gconstpointer data) static void test_core_client_disconnected (TestFixture *f, gconstpointer data) { + g_signal_connect (f->base.core, "connected", + G_CALLBACK (expect_connected), f); g_signal_connect (f->base.core, "disconnected", G_CALLBACK (expect_disconnected), f); g_signal_connect (f->om, "object-added", @@ -87,6 +98,7 @@ test_core_client_disconnected (TestFixture *f, gconstpointer data) /* connect */ g_assert_true (wp_core_connect (f->base.core)); + g_main_loop_run (f->base.loop); g_assert_true (wp_core_is_connected (f->base.core)); /* wait for the object manager to collect the client proxy */ @@ -111,13 +123,20 @@ test_core_clone (TestFixture *f, gconstpointer data) g_assert_nonnull (clone); g_assert_false (wp_core_is_connected (clone)); + g_signal_connect (f->base.core, "connected", + G_CALLBACK (expect_connected), f); + g_signal_connect (clone, "connected", + G_CALLBACK (expect_connected), f); + /* connect clone */ g_assert_true (wp_core_connect (clone)); + g_main_loop_run (f->base.loop); g_assert_true (wp_core_is_connected (clone)); g_assert_false (wp_core_is_connected (f->base.core)); /* connect core */ g_assert_true (wp_core_connect (f->base.core)); + g_main_loop_run (f->base.loop); g_assert_true (wp_core_is_connected (clone)); g_assert_true (wp_core_is_connected (f->base.core)); @@ -142,7 +161,7 @@ main (gint argc, gchar *argv[]) test_core_setup, test_core_server_disconnected, test_core_teardown); g_test_add ("/wp/core/client-disconnected", TestFixture, NULL, test_core_setup, test_core_client_disconnected, test_core_teardown); - g_test_add ("/wp/core/cline", TestFixture, NULL, + g_test_add ("/wp/core/clone", TestFixture, NULL, test_core_setup, test_core_clone, test_core_teardown); return g_test_run ();