Improve GApplication tests

Make GApplication tests manage their dbus connections.
This commit is contained in:
Matthias Clasen 2012-04-04 14:39:17 -04:00
parent a52c0a06c8
commit f1d4d3a4a5
2 changed files with 48 additions and 11 deletions

View File

@ -413,7 +413,7 @@ file_LDADD = $(progs_ldadd)
fileattributematcher_SOURCES = fileattributematcher.c fileattributematcher_SOURCES = fileattributematcher.c
fileattributematcher_LDADD = $(progs_ldadd) fileattributematcher_LDADD = $(progs_ldadd)
gapplication_SOURCES = gapplication.c gdbus-sessionbus.c gapplication_SOURCES = gapplication.c gdbus-sessionbus.h gdbus-sessionbus.c gdbus-tests.h gdbus-tests.c
gapplication_LDADD = $(progs_ldadd) gapplication_LDADD = $(progs_ldadd)
basic_application_LDADD = $(progs_ldadd) basic_application_LDADD = $(progs_ldadd)

View File

@ -2,6 +2,8 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include "gdbus-tests.h"
#include "gdbus-sessionbus.h" #include "gdbus-sessionbus.h"
static gint outstanding_watches; static gint outstanding_watches;
@ -84,7 +86,10 @@ spawn (const gchar *expected_stdout,
static void static void
basic (void) basic (void)
{ {
GDBusConnection *c;
session_bus_up (); session_bus_up ();
c = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
main_loop = g_main_loop_new (NULL, 0); main_loop = g_main_loop_new (NULL, 0);
@ -112,6 +117,10 @@ basic (void)
g_main_loop_run (main_loop); g_main_loop_run (main_loop);
session_bus_down (); session_bus_down ();
_g_object_wait_for_single_ref_do (c);
g_object_unref (c);
g_assert (g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL) == NULL);
} }
@ -200,11 +209,18 @@ test_nonunique (void)
static void static void
properties (void) properties (void)
{ {
GDBusConnection *c;
GObject *app; GObject *app;
gchar *id; gchar *id;
GApplicationFlags flags; GApplicationFlags flags;
gboolean registered; gboolean registered;
guint timeout; guint timeout;
gboolean remote;
gboolean ret;
GError *error = NULL;
session_bus_up ();
c = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
app = g_object_new (G_TYPE_APPLICATION, app = g_object_new (G_TYPE_APPLICATION,
"application-id", "org.gtk.TestApplication", "application-id", "org.gtk.TestApplication",
@ -222,8 +238,28 @@ properties (void)
g_assert (!registered); g_assert (!registered);
g_assert_cmpint (timeout, ==, 0); g_assert_cmpint (timeout, ==, 0);
ret = g_application_register (G_APPLICATION (app), NULL, &error);
g_assert (ret);
g_assert_no_error (error);
g_object_get (app,
"is-registered", &registered,
"is-remote", &remote,
NULL);
g_assert (registered);
g_assert (!remote);
g_application_quit (G_APPLICATION (app));
g_object_unref (app); g_object_unref (app);
g_free (id); g_free (id);
session_bus_down ();
_g_object_wait_for_single_ref (c);
g_object_unref (c);
g_assert (g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL) == NULL);
} }
static void static void
@ -278,12 +314,8 @@ static void
test_nodbus (void) test_nodbus (void)
{ {
gchar *argv[] = { "./unimportant", NULL }; gchar *argv[] = { "./unimportant", NULL };
GDBusConnection *session;
GApplication *app; GApplication *app;
session = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
g_assert (session == NULL);
app = g_application_new ("org.gtk.Unimportant", app = g_application_new ("org.gtk.Unimportant",
G_APPLICATION_FLAGS_NONE); G_APPLICATION_FLAGS_NONE);
g_signal_connect (app, "activate", G_CALLBACK (nodbus_activate), NULL); g_signal_connect (app, "activate", G_CALLBACK (nodbus_activate), NULL);
@ -313,12 +345,12 @@ quit_activate (GApplication *app)
static void static void
test_quit (void) test_quit (void)
{ {
GDBusConnection *c;
gchar *argv[] = { "./unimportant", NULL }; gchar *argv[] = { "./unimportant", NULL };
GDBusConnection *session;
GApplication *app; GApplication *app;
session = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL); session_bus_up ();
g_assert (session == NULL); c = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
app = g_application_new ("org.gtk.Unimportant", app = g_application_new ("org.gtk.Unimportant",
G_APPLICATION_FLAGS_NONE); G_APPLICATION_FLAGS_NONE);
@ -327,6 +359,13 @@ test_quit (void)
g_object_unref (app); g_object_unref (app);
g_assert (quit_activated); g_assert (quit_activated);
session_bus_down ();
_g_object_wait_for_single_ref (c);
g_object_unref (c);
g_assert (g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL) == NULL);
} }
static void static void
@ -366,11 +405,9 @@ static void
test_actions (void) test_actions (void)
{ {
gchar *argv[] = { "./unimportant", NULL }; gchar *argv[] = { "./unimportant", NULL };
GDBusConnection *session;
GApplication *app; GApplication *app;
session = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL); g_unsetenv ("DBUS_SESSION_BUS_ADDRESS");
g_assert (session == NULL);
app = g_application_new ("org.gtk.Unimportant", app = g_application_new ("org.gtk.Unimportant",
G_APPLICATION_FLAGS_NONE); G_APPLICATION_FLAGS_NONE);