aboutsummaryrefslogtreecommitdiff
path: root/tests/test-json-client.c
diff options
context:
space:
mode:
authorEvgeni Golov <evgeni@debian.org>2010-07-14 10:14:20 +0200
committerEvgeni Golov <evgeni@debian.org>2010-07-14 10:14:20 +0200
commit674342c670052bcfcc92b7638de9af482ae2a856 (patch)
tree0432b0802a7b35beaac76d51d797219a4b586d80 /tests/test-json-client.c
parent6830905830ac78271515c586442a090cf7a0e3ff (diff)
parent271f62baede153472711c3dcf2388df3acffa006 (diff)
downloadlibdbusmenu-674342c670052bcfcc92b7638de9af482ae2a856.tar.gz
libdbusmenu-674342c670052bcfcc92b7638de9af482ae2a856.tar.bz2
libdbusmenu-674342c670052bcfcc92b7638de9af482ae2a856.zip
Merged lp:~ubuntu-desktop/dbusmenu/ubuntu
* New upstream release. ∘ Protect against NULL nodes (LP: #602444) ∘ Remove extra warnings and messages ∘ Handle not having a session bus better (LP: #598715) * New upstream release. * Block building submenus on separators (LP: #598620) * Adding more through JSON support for testing * Fixing up value handling in dbusmenu-dumper * debian/control, debian/libdbusmenu-jsonloader*install: Adding two binary packages for the jsonloader test library. * Merge Ubuntu. Preserve Maintainer and Vcs-* fields. * Standards-Version: 3.9.0 * Source-Format: 1.0 for now - -doc packages are Arch:all
Diffstat (limited to 'tests/test-json-client.c')
-rw-r--r--tests/test-json-client.c75
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/test-json-client.c b/tests/test-json-client.c
new file mode 100644
index 0000000..f9da55e
--- /dev/null
+++ b/tests/test-json-client.c
@@ -0,0 +1,75 @@
+/*
+Test to check the json-loader and dbusmenu-dumper
+
+Copyright 2010 Canonical Ltd.
+
+Authors:
+ Ted Gould <ted@canonical.com>
+
+This program is free software: you can redistribute it and/or modify it
+under the terms of the GNU General Public License version 3, as published
+by the Free Software Foundation.
+
+This program is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranties of
+MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
+PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along
+with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include <glib.h>
+#include <gio/gio.h>
+#include <dbus/dbus-glib.h>
+#include <dbus/dbus-glib-bindings.h>
+#include <dbus/dbus-glib-lowlevel.h>
+
+GMainLoop * mainloop = NULL;
+
+int
+main (int argc, char ** argv)
+{
+ g_type_init();
+ g_debug("Wait for friends");
+
+ GError * error = NULL;
+ DBusGConnection * session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
+ if (error != NULL) {
+ g_error("Unable to get session bus: %s", error->message);
+ return 1;
+ }
+
+ DBusGProxy * bus_proxy = dbus_g_proxy_new_for_name(session_bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);
+
+ gboolean has_owner = FALSE;
+ gint owner_count = 0;
+ while (!has_owner && owner_count < 10000) {
+ org_freedesktop_DBus_name_has_owner(bus_proxy, "org.dbusmenu.test", &has_owner, NULL);
+ owner_count++;
+ }
+
+ if (owner_count == 10000) {
+ g_error("Unable to get name owner after 10000 tries");
+ return 1;
+ }
+
+ g_usleep(500000);
+
+ g_debug("Initing");
+
+ gchar * command = g_strdup_printf("%s --dbus-name=org.dbusmenu.test --dbus-object=/org/test", argv[1]);
+ g_debug("Executing: %s", command);
+
+ gchar * output;
+ g_spawn_command_line_sync(command, &output, NULL, NULL, NULL);
+
+ GFile * ofile = g_file_new_for_commandline_arg(argv[2]);
+ if (ofile != NULL) {
+ g_file_replace_contents(ofile, output, g_utf8_strlen(output, -1), NULL, FALSE, 0, NULL, NULL, NULL);
+ }
+
+ g_debug("Exiting");
+
+ return 0;
+}