aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.bzrignore2
-rw-r--r--Makefile.am2
-rw-r--r--configure.ac2
-rw-r--r--debian/changelog9
-rw-r--r--libdbusmenu-glib/client.c10
-rw-r--r--libdbusmenu-glib/dbus-menu.xml59
-rw-r--r--libdbusmenu-glib/server.c6
-rw-r--r--libdbusmenu-gtk/menu.c8
-rw-r--r--tests/Makefile.am85
-rw-r--r--tests/dbusmenu-gtk/Makefile.am43
-rwxr-xr-xtests/dbusmenu-gtk/dbusMenuTest2
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/blank_label.json (renamed from tests/dbusmenu-gtk/data/blank_label.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/blank_label_2levels.json (renamed from tests/dbusmenu-gtk/data/blank_label_2levels.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/blank_submenus.json (renamed from tests/dbusmenu-gtk/data/blank_submenus.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/dynamic.json (renamed from tests/dbusmenu-gtk/data/dynamic.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/long_label.json (renamed from tests/dbusmenu-gtk/data/long_label.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/no_id.json (renamed from tests/dbusmenu-gtk/data/no_id.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/no_label.json (renamed from tests/dbusmenu-gtk/data/no_label.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/sameid_submenus.json (renamed from tests/dbusmenu-gtk/data/sameid_submenus.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/sameid_submenus_diff_sizes.json (renamed from tests/dbusmenu-gtk/data/sameid_submenus_diff_sizes.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/sameid_top_and_submenus.json (renamed from tests/dbusmenu-gtk/data/sameid_top_and_submenus.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/sameid_topmenu.json (renamed from tests/dbusmenu-gtk/data/sameid_topmenu.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/several_submenus.json (renamed from tests/dbusmenu-gtk/data/several_submenus.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/several_submenus_recursive.json (renamed from tests/dbusmenu-gtk/data/several_submenus_recursive.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/several_submenus_utf8.json (renamed from tests/dbusmenu-gtk/data/several_submenus_utf8.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/static.json (renamed from tests/dbusmenu-gtk/data/static.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/data/test-gtk-label.json (renamed from tests/dbusmenu-gtk/data/test-gtk-label.json)0
-rw-r--r--tests/dbusmenu-gtk/mago_tests/dbusmenu.py (renamed from tests/dbusmenu-gtk/dbusmenu.py.in)4
-rw-r--r--tests/dbusmenu-gtk/mago_tests/dbusmenu.xml (renamed from tests/dbusmenu-gtk/dbusmenu.xml.in)20
-rw-r--r--tests/run-xvfb.sh7
-rw-r--r--tests/test-glib-layout-client.c2
-rw-r--r--tests/test-glib-properties-client.c2
-rw-r--r--tests/test-gtk-label-client.c4
-rw-r--r--tests/test-gtk-reorder-server.c2
-rw-r--r--tools/Makefile.am14
-rw-r--r--tools/dbusmenu-dumper.c171
36 files changed, 363 insertions, 91 deletions
diff --git a/.bzrignore b/.bzrignore
index 724ade0..315172e 100644
--- a/.bzrignore
+++ b/.bzrignore
@@ -49,5 +49,7 @@ tests/test-gtk-label
tests/test-gtk-reorder-server.c
tests/test-gtk-reorder-server
tests/test-gtk-reorder
+tools/dbusmenu-dumper
libdbusmenu-[0-9].[0-9].[0-9].tar.gz
libdbusmenu-[0-9].[0-9].[0-9].tar.gz.asc
+tests/test-mago
diff --git a/Makefile.am b/Makefile.am
index 2e22cf9..7d56ed5 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,3 +1,3 @@
-SUBDIRS = libdbusmenu-glib libdbusmenu-gtk libdbusmenu-qt tests po
+SUBDIRS = libdbusmenu-glib libdbusmenu-gtk libdbusmenu-qt tools tests po
diff --git a/configure.ac b/configure.ac
index e9abf28..3b19cea 100644
--- a/configure.ac
+++ b/configure.ac
@@ -106,8 +106,8 @@ libdbusmenu-gtk/Makefile
libdbusmenu-gtk/dbusmenu-gtk.pc
libdbusmenu-qt/Makefile
libdbusmenu-qt/dbusmenu-qt.pc
+tools/Makefile
tests/Makefile
-tests/dbusmenu-gtk/Makefile
])
###########################
diff --git a/debian/changelog b/debian/changelog
index 35d2e85..cd3f68a 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+libdbusmenu (0.2.0~dev-0ubuntu1~ppa1) UNRELEASED; urgency=low
+
+ * Updating to trunk
+ * Test suite fixes and automation support
+ * dbus-dumper tool
+ * Switch to org.ayatana
+
+ -- Ted Gould <ted@ubuntu.com> Tue, 08 Dec 2009 14:07:44 -0600
+
libdbusmenu (0.1.7-0ubuntu1~ppa1) karmic; urgency=low
* Upstream release 0.1.7
diff --git a/libdbusmenu-glib/client.c b/libdbusmenu-glib/client.c
index ab307bd..61f1ccf 100644
--- a/libdbusmenu-glib/client.c
+++ b/libdbusmenu-glib/client.c
@@ -351,7 +351,7 @@ id_update (DBusGProxy * proxy, guint id, DbusmenuClient * client)
DbusmenuMenuitem * menuitem = dbusmenu_menuitem_find_id(priv->root, id);
g_return_if_fail(menuitem != NULL);
- org_freedesktop_dbusmenu_get_properties_async(proxy, id, menuitem_get_properties_cb, menuitem);
+ org_ayatana_dbusmenu_get_properties_async(proxy, id, menuitem_get_properties_cb, menuitem);
return;
}
@@ -472,7 +472,7 @@ build_proxies (DbusmenuClient * client)
priv->menuproxy = dbus_g_proxy_new_for_name_owner(priv->session_bus,
priv->dbus_name,
priv->dbus_object,
- "org.freedesktop.dbusmenu",
+ "org.ayatana.dbusmenu",
&error);
if (error != NULL) {
g_warning("Unable to get dbusmenu proxy for %s on %s: %s", priv->dbus_name, priv->dbus_object, error->message);
@@ -647,7 +647,7 @@ static void
menuitem_activate (DbusmenuMenuitem * mi, DbusmenuClient * client)
{
DbusmenuClientPrivate * priv = DBUSMENU_CLIENT_GET_PRIVATE(client);
- org_freedesktop_dbusmenu_call_async (priv->menuproxy, dbusmenu_menuitem_get_id(mi), menuitem_call_cb, mi);
+ org_ayatana_dbusmenu_call_async (priv->menuproxy, dbusmenu_menuitem_get_id(mi), menuitem_call_cb, mi);
return;
}
@@ -689,7 +689,7 @@ parse_layout_xml(DbusmenuClient * client, xmlNodePtr node, DbusmenuMenuitem * it
propdata->item = item;
propdata->parent = parent;
- org_freedesktop_dbusmenu_get_properties_async(proxy, id, menuitem_get_properties_new_cb, propdata);
+ org_ayatana_dbusmenu_get_properties_async(proxy, id, menuitem_get_properties_new_cb, propdata);
} else {
g_warning("Unable to allocate memory to get properties for menuitem. This menuitem will never be realized.");
}
@@ -829,7 +829,7 @@ update_layout (DbusmenuClient * client)
update_layout_cb,
client,
NULL,
- G_TYPE_STRING, "org.freedesktop.dbusmenu",
+ G_TYPE_STRING, "org.ayatana.dbusmenu",
G_TYPE_STRING, "layout",
G_TYPE_INVALID, G_TYPE_VALUE, G_TYPE_INVALID);
diff --git a/libdbusmenu-glib/dbus-menu.xml b/libdbusmenu-glib/dbus-menu.xml
index cca9823..345c736 100644
--- a/libdbusmenu-glib/dbus-menu.xml
+++ b/libdbusmenu-glib/dbus-menu.xml
@@ -28,34 +28,91 @@ License version 3 and version 2.1 along with this program. If not, see
<http://www.gnu.org/licenses/>
-->
<node name="/">
- <interface name="org.freedesktop.dbusmenu">
+ <interface name="org.ayatana.dbusmenu">
<!-- Properties -->
+<!--
+Provides an XML representation of the menu hierarchy
+
+XML syntax:
+
+<menu id="1" revision="2"> # Root container
+ <menu id="2" revision="2"> # First level menu, for example "File"
+ <menu id="3" revision="2"/> ~ Second level menu, for example "Open"
+ <menu id="4" revision="3"/>
+ ...
+ </menu>
+ <menu id="5" revision="2"> # Another first level menu, say "Edit"
+ ...
+ </menu>
+ ...
+</menu>
+-->
<property name="layout" type="s" access="read"/>
<!-- Functions -->
+
+<!--
+Each menu item has a set of properties. Property keys are in menuitem.h:
+
+- visible
+- sensitive
+- label
+- icon
+- icon-data
+- type
+
+"type" property is an enum which can take the following values (client.h):
+
+- menuitem
+- separator
+- imageitem
+-->
<method name="GetProperty">
<arg type="u" name="id" direction="in" />
<arg type="s" name="property" direction="in" />
<arg type="s" name="value" direction="out" />
</method>
+
+<!--
+Convenience method to retrieve all properties in one call (more efficient)
+-->
<method name="GetProperties">
<arg type="u" name="id" direction="in" />
<arg type="a{ss}" name="properties" direction="out" />
</method>
+
+<!--
+This is called by the display to notify the application it should trigger
+the action associated with a specific menu id
+-->
<method name="Call">
<arg type="u" name="id" direction="in" />
</method>
<!-- Signals -->
+<!--
+Triggered by the application to notify display that the property prop from menu id
+as changed to value.
+-->
<signal name="IdPropUpdate">
<arg type="u" name="id" direction="out" />
<arg type="s" name="prop" direction="out" />
<arg type="s" name="value" direction="out" />
</signal>
+
+<!--
+Triggered by the application to notify display that all properties of menu id
+should be considered outdated
+-->
<signal name="IdUpdate">
<arg type="u" name="id" direction="out" />
</signal>
+
+<!--
+Triggered by the application to notify display of a layout update, up to
+revision
+-->
<signal name="LayoutUpdate">
<arg type="i" name="revision" direction="out" />
</signal>
diff --git a/libdbusmenu-glib/server.c b/libdbusmenu-glib/server.c
index 1ac1da6..84bfffe 100644
--- a/libdbusmenu-glib/server.c
+++ b/libdbusmenu-glib/server.c
@@ -161,7 +161,7 @@ dbusmenu_server_class_init (DbusmenuServerClass *class)
g_object_class_install_property (object_class, PROP_DBUS_OBJECT,
g_param_spec_string(DBUSMENU_SERVER_PROP_DBUS_OBJECT, "DBus object path",
"The object that represents this set of menus on DBus",
- "/org/freedesktop/dbusmenu",
+ "/org/ayatana/dbusmenu",
G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (object_class, PROP_ROOT_NODE,
g_param_spec_object(DBUSMENU_SERVER_PROP_ROOT_NODE, "Root menu node",
@@ -472,7 +472,7 @@ _dbusmenu_server_call (DbusmenuServer * server, guint id, GError ** error)
Creates a new #DbusmenuServer object with a specific object
path on DBus. If @object is set to NULL the default object
- name of "/org/freedesktop/dbusmenu" will be used.
+ name of "/org/ayatana/dbusmenu" will be used.
Return value: A brand new #DbusmenuServer
*/
@@ -480,7 +480,7 @@ DbusmenuServer *
dbusmenu_server_new (const gchar * object)
{
if (object == NULL) {
- object = "/org/freedesktop/dbusmenu";
+ object = "/org/ayatana/dbusmenu";
}
DbusmenuServer * self = g_object_new(DBUSMENU_TYPE_SERVER,
diff --git a/libdbusmenu-gtk/menu.c b/libdbusmenu-gtk/menu.c
index 2dd7a6e..d2a8620 100644
--- a/libdbusmenu-gtk/menu.c
+++ b/libdbusmenu-gtk/menu.c
@@ -213,7 +213,9 @@ find_pos (GtkWidget * widget, gpointer data)
static void
root_child_added (DbusmenuMenuitem * root, DbusmenuMenuitem * child, guint position, DbusmenuGtkMenu * menu)
{
+ #ifdef MASSIVEDEBUGGING
g_debug("Root new child");
+ #endif
DbusmenuGtkMenuPrivate * priv = DBUSMENU_GTKMENU_GET_PRIVATE(menu);
g_signal_connect(G_OBJECT(child), DBUSMENU_MENUITEM_SIGNAL_REALIZED, G_CALLBACK(child_realized), menu);
@@ -240,7 +242,9 @@ root_child_added (DbusmenuMenuitem * root, DbusmenuMenuitem * child, guint posit
static void
root_child_moved (DbusmenuMenuitem * root, DbusmenuMenuitem * child, guint newposition, guint oldposition, DbusmenuGtkMenu * menu)
{
+ #ifdef MASSIVEDEBUGGING
g_debug("Root child moved");
+ #endif
DbusmenuGtkMenuPrivate * priv = DBUSMENU_GTKMENU_GET_PRIVATE(menu);
gtk_menu_reorder_child(GTK_MENU(menu), GTK_WIDGET(dbusmenu_gtkclient_menuitem_get(priv->client, child)), newposition);
return;
@@ -250,7 +254,9 @@ root_child_moved (DbusmenuMenuitem * root, DbusmenuMenuitem * child, guint newpo
static void
root_child_delete (DbusmenuMenuitem * root, DbusmenuMenuitem * child, DbusmenuGtkMenu * menu)
{
+ #ifdef MASSIVEDEBUGGING
g_debug("Root child deleted");
+ #endif
DbusmenuGtkMenuPrivate * priv = DBUSMENU_GTKMENU_GET_PRIVATE(menu);
GtkWidget * item = GTK_WIDGET(dbusmenu_gtkclient_menuitem_get(priv->client, child));
if (item != NULL) {
@@ -268,7 +274,9 @@ root_child_delete (DbusmenuMenuitem * root, DbusmenuMenuitem * child, DbusmenuGt
static void
child_realized (DbusmenuMenuitem * child, gpointer userdata)
{
+ #ifdef MASSIVEDEBUGGING
g_debug("Root child realized");
+ #endif
g_return_if_fail(DBUSMENU_IS_GTKMENU(userdata));
DbusmenuGtkMenu * menu = DBUSMENU_GTKMENU(userdata);
diff --git a/tests/Makefile.am b/tests/Makefile.am
index f111054..fa85d7f 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,12 +1,11 @@
-SUBDIRS = dbusmenu-gtk
DBUS_RUNNER=dbus-test-runner --dbus-config /usr/share/dbus-test-runner/session.conf
TESTS = \
test-glib-layout \
test-glib-properties \
- test-gtk-label \
test-glib-simple-items \
+ test-gtk-label \
test-gtk-reorder
check_PROGRAMS = \
@@ -20,6 +19,12 @@ check_PROGRAMS = \
test-glib-simple-items \
test-gtk-reorder-server
+XVFB_RUN=". $(srcdir)/run-xvfb.sh"
+
+######################
+# Test GLib server
+######################
+
glib_server_nomenu_SOURCES = \
glib-server-nomenu.c
@@ -35,10 +40,10 @@ glib_server_nomenu_LDADD = \
# Test Glib Layout
######################
-test-glib-layout: test-glib-layout-client test-glib-layout-server
- @echo "#!/bin/sh" > test-glib-layout
- @echo $(DBUS_RUNNER) --task ./test-glib-layout-client --task-name Client --task ./test-glib-layout-server --task-name Server --ignore-return >> test-glib-layout
- @chmod +x test-glib-layout
+test-glib-layout: test-glib-layout-client test-glib-layout-server Makefile.am
+ @echo "#!/bin/bash" > $@
+ @echo $(DBUS_RUNNER) --task ./test-glib-layout-client --task-name Client --task ./test-glib-layout-server --task-name Server --ignore-return >> $@
+ @chmod +x $@
test_glib_layout_server_SOURCES = \
test-glib-layout.h \
@@ -69,10 +74,10 @@ test_glib_layout_client_LDADD = \
# Test Glib Properties
######################
-test-glib-properties: test-glib-properties-client test-glib-properties-server
- @echo "#!/bin/sh" > test-glib-properties
- @echo $(DBUS_RUNNER) --task ./test-glib-properties-client --task-name Client --task ./test-glib-properties-server --task-name Server --ignore-return >> test-glib-properties
- @chmod +x test-glib-properties
+test-glib-properties: test-glib-properties-client test-glib-properties-server Makefile.am
+ @echo "#!/bin/bash" > $@
+ @echo $(DBUS_RUNNER) --task ./test-glib-properties-client --task-name Client --task ./test-glib-properties-server --task-name Server --ignore-return >> $@
+ @chmod +x $@
test_glib_properties_server_SOURCES = \
test-glib-properties.h \
@@ -117,10 +122,11 @@ test_glib_simple_items_LDADD = \
# Test GTK Label
#########################
-test-gtk-label: test-gtk-label-client test-gtk-label-server test-gtk-label.json
- @echo "#!/bin/sh" > test-gtk-label
- @echo $(DBUS_RUNNER) --task ./test-gtk-label-client --task-name Client --task ./test-gtk-label-server --parameter $(srcdir)/test-gtk-label.json --task-name Server --ignore-return >> test-gtk-label
- @chmod +x test-gtk-label
+test-gtk-label: test-gtk-label-client test-gtk-label-server test-gtk-label.json Makefile.am
+ @echo "#!/bin/bash" > $@
+ @echo $(XVFB_RUN) >> $@
+ @echo $(DBUS_RUNNER) --task ./test-gtk-label-client --task-name Client --task ./test-gtk-label-server --parameter $(srcdir)/test-gtk-label.json --task-name Server --ignore-return >> $@
+ @chmod +x $@
test_gtk_label_server_SOURCES = \
test-gtk-label-server.c
@@ -156,10 +162,11 @@ test_gtk_label_client_LDADD = \
# Test GTK Reorder
#########################
-test-gtk-reorder: test-gtk-label-client test-gtk-reorder-server
- @echo "#!/bin/sh" > test-gtk-reorder
- @echo $(DBUS_RUNNER) --task ./test-gtk-label-client --task-name Client --task ./test-gtk-reorder-server --parameter $(srcdir)/test-gtk-label.json --task-name Server --ignore-return >> test-gtk-reorder
- @chmod +x test-gtk-reorder
+test-gtk-reorder: test-gtk-label-client test-gtk-reorder-server Makefile.am
+ @echo "#!/bin/bash" > $@
+ @echo $(XVFB_RUN) >> $@
+ @echo $(DBUS_RUNNER) --task ./test-gtk-label-client --task-name Client --task ./test-gtk-reorder-server --parameter $(srcdir)/test-gtk-label.json --task-name Server --ignore-return >> $@
+ @chmod +x $@
test_gtk_reorder_server_SOURCES = \
test-gtk-reorder-server.c
@@ -176,6 +183,20 @@ test_gtk_reorder_server_LDADD = \
$(DBUSMENUGTK_LIBS) \
$(DBUSMENUTESTS_LIBS)
+#########################
+# Test Mago
+#########################
+
+test-mago: test-gtk-label-client test-gtk-label-server $(srcdir)/dbusmenu-gtk/mago_tests/dbusmenu.xml Makefile.am
+ @echo "#!/bin/bash" > $@
+ @echo $(XVFB_RUN) >> $@
+ @echo cd $(srcdir)/dbusmenu-gtk >> $@
+ @echo /usr/lib/at-spi/at-spi-registryd \& >> $@
+ @echo echo Mago Results dir: $(abs_builddir)/mago.results >> $@
+ @echo echo PYTHONPATH=$(abs_srcdir)/dbusmenu-gtk/mago_tests >> $@
+ @echo export INDICATOR_BUILD_DIR=$(abs_builddir) >> $@
+ @echo PYTHONPATH=$(abs_srcdir)/dbusmenu-gtk/mago_tests mago -f dbusmenu.xml -t $(abs_builddir)/mago.results --log-level=debug >> $@
+ @chmod +x $@
#########################
# Other
@@ -188,7 +209,33 @@ examples_DATA = \
EXTRA_DIST = \
$(examples_DATA) \
- test-gtk-label.json
+ run-xvfb.sh \
+ test-gtk-label.json \
+ dbusmenu-gtk/dbusMenuTest \
+ dbusmenu-gtk/mago_tests/dbusmenu.xml \
+ dbusmenu-gtk/mago_tests/dbusmenu.py \
+ dbusmenu-gtk/mago_tests/data/blank_label_2levels.json \
+ dbusmenu-gtk/mago_tests/data/blank_label.json \
+ dbusmenu-gtk/mago_tests/data/blank_submenus.json \
+ dbusmenu-gtk/mago_tests/data/dynamic.json \
+ dbusmenu-gtk/mago_tests/data/long_label.json \
+ dbusmenu-gtk/mago_tests/data/no_id.json \
+ dbusmenu-gtk/mago_tests/data/no_label.json \
+ dbusmenu-gtk/mago_tests/data/sameid_submenus_diff_sizes.json \
+ dbusmenu-gtk/mago_tests/data/sameid_submenus.json \
+ dbusmenu-gtk/mago_tests/data/sameid_top_and_submenus.json \
+ dbusmenu-gtk/mago_tests/data/sameid_topmenu.json \
+ dbusmenu-gtk/mago_tests/data/several_submenus.json \
+ dbusmenu-gtk/mago_tests/data/several_submenus_recursive.json \
+ dbusmenu-gtk/mago_tests/data/several_submenus_utf8.json \
+ dbusmenu-gtk/mago_tests/data/static.json \
+ dbusmenu-gtk/mago_tests/data/test-gtk-label.json
+
+CLEANFILES = \
+ dbusmenu-gtk/mago_tests/dbusmenu.pyc
+
+distclean-local:
+ -rm -rf $(builddir)/mago.results
DISTCLEANFILES = \
$(TESTS)
diff --git a/tests/dbusmenu-gtk/Makefile.am b/tests/dbusmenu-gtk/Makefile.am
deleted file mode 100644
index 6acbbe0..0000000
--- a/tests/dbusmenu-gtk/Makefile.am
+++ /dev/null
@@ -1,43 +0,0 @@
-
-check: tests
-
-tests: mago
-
-mago: dbusmenu.xml dbusmenu.py
- PYTHONPATH=$(builddir) mago -f $(builddir)/dbusmenu.xml -t $(builddir)/mago.results
-
-dbusmenu.xml: dbusmenu.xml.in
- sed -e "s|\@srcdir\@|$(srcdir)|" $< > $@
-
-dbusmenu.py: dbusmenu.py.in
- sed -e "s|\@srcdir\@|$(srcdir)|" $< > $@
-
-EXTRA_DIST = \
- dbusmenu.xml.in \
- dbusmenu.py.in \
- dbusMenuTest \
- data/blank_label_2levels.json \
- data/blank_label.json \
- data/blank_submenus.json \
- data/dynamic.json \
- data/long_label.json \
- data/no_id.json \
- data/no_label.json \
- data/sameid_submenus_diff_sizes.json \
- data/sameid_submenus.json \
- data/sameid_top_and_submenus.json \
- data/sameid_topmenu.json \
- data/several_submenus.json \
- data/several_submenus_recursive.json \
- data/several_submenus_utf8.json \
- data/static.json \
- data/test-gtk-label.json
-
-CLEANFILES = \
- dbusmenu.xml \
- dbusmenu.pyc \
- dbusmenu.py
-
-distclean-local:
- -rm -rf $(builddir)/mago.results
-
diff --git a/tests/dbusmenu-gtk/dbusMenuTest b/tests/dbusmenu-gtk/dbusMenuTest
index 46c5f67..55a791b 100755
--- a/tests/dbusmenu-gtk/dbusMenuTest
+++ b/tests/dbusmenu-gtk/dbusMenuTest
@@ -3,6 +3,6 @@
export NO_GAIL=0
export NO_AT_BRIDGE=0
-dbus-test-runner --dbus-config /usr/share/dbus-test-runner/session.conf --task ../test-gtk-label-client --task-name Client --task ../test-gtk-label-server --parameter ./$1 --task-name Server --ignore-return
+dbus-test-runner --dbus-config /usr/share/dbus-test-runner/session.conf --task $INDICATOR_BUILD_DIR/test-gtk-label-client --task-name Client --task $INDICATOR_BUILD_DIR/test-gtk-label-server --parameter ./mago_tests/$1 --task-name Server --ignore-return
diff --git a/tests/dbusmenu-gtk/data/blank_label.json b/tests/dbusmenu-gtk/mago_tests/data/blank_label.json
index d62d49b..d62d49b 100644
--- a/tests/dbusmenu-gtk/data/blank_label.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/blank_label.json
diff --git a/tests/dbusmenu-gtk/data/blank_label_2levels.json b/tests/dbusmenu-gtk/mago_tests/data/blank_label_2levels.json
index e3335a5..e3335a5 100644
--- a/tests/dbusmenu-gtk/data/blank_label_2levels.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/blank_label_2levels.json
diff --git a/tests/dbusmenu-gtk/data/blank_submenus.json b/tests/dbusmenu-gtk/mago_tests/data/blank_submenus.json
index 2eaff27..2eaff27 100644
--- a/tests/dbusmenu-gtk/data/blank_submenus.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/blank_submenus.json
diff --git a/tests/dbusmenu-gtk/data/dynamic.json b/tests/dbusmenu-gtk/mago_tests/data/dynamic.json
index efa7a75..efa7a75 100644
--- a/tests/dbusmenu-gtk/data/dynamic.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/dynamic.json
diff --git a/tests/dbusmenu-gtk/data/long_label.json b/tests/dbusmenu-gtk/mago_tests/data/long_label.json
index 7cacb7f..7cacb7f 100644
--- a/tests/dbusmenu-gtk/data/long_label.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/long_label.json
diff --git a/tests/dbusmenu-gtk/data/no_id.json b/tests/dbusmenu-gtk/mago_tests/data/no_id.json
index 201408a..201408a 100644
--- a/tests/dbusmenu-gtk/data/no_id.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/no_id.json
diff --git a/tests/dbusmenu-gtk/data/no_label.json b/tests/dbusmenu-gtk/mago_tests/data/no_label.json
index c651cbc..c651cbc 100644
--- a/tests/dbusmenu-gtk/data/no_label.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/no_label.json
diff --git a/tests/dbusmenu-gtk/data/sameid_submenus.json b/tests/dbusmenu-gtk/mago_tests/data/sameid_submenus.json
index a61c92b..a61c92b 100644
--- a/tests/dbusmenu-gtk/data/sameid_submenus.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/sameid_submenus.json
diff --git a/tests/dbusmenu-gtk/data/sameid_submenus_diff_sizes.json b/tests/dbusmenu-gtk/mago_tests/data/sameid_submenus_diff_sizes.json
index d8f36c6..d8f36c6 100644
--- a/tests/dbusmenu-gtk/data/sameid_submenus_diff_sizes.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/sameid_submenus_diff_sizes.json
diff --git a/tests/dbusmenu-gtk/data/sameid_top_and_submenus.json b/tests/dbusmenu-gtk/mago_tests/data/sameid_top_and_submenus.json
index 102720f..102720f 100644
--- a/tests/dbusmenu-gtk/data/sameid_top_and_submenus.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/sameid_top_and_submenus.json
diff --git a/tests/dbusmenu-gtk/data/sameid_topmenu.json b/tests/dbusmenu-gtk/mago_tests/data/sameid_topmenu.json
index ee9d97f..ee9d97f 100644
--- a/tests/dbusmenu-gtk/data/sameid_topmenu.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/sameid_topmenu.json
diff --git a/tests/dbusmenu-gtk/data/several_submenus.json b/tests/dbusmenu-gtk/mago_tests/data/several_submenus.json
index 3b9bb98..3b9bb98 100644
--- a/tests/dbusmenu-gtk/data/several_submenus.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/several_submenus.json
diff --git a/tests/dbusmenu-gtk/data/several_submenus_recursive.json b/tests/dbusmenu-gtk/mago_tests/data/several_submenus_recursive.json
index 1320ef4..1320ef4 100644
--- a/tests/dbusmenu-gtk/data/several_submenus_recursive.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/several_submenus_recursive.json
diff --git a/tests/dbusmenu-gtk/data/several_submenus_utf8.json b/tests/dbusmenu-gtk/mago_tests/data/several_submenus_utf8.json
index b7b07f9..b7b07f9 100644
--- a/tests/dbusmenu-gtk/data/several_submenus_utf8.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/several_submenus_utf8.json
diff --git a/tests/dbusmenu-gtk/data/static.json b/tests/dbusmenu-gtk/mago_tests/data/static.json
index dec591a..dec591a 100644
--- a/tests/dbusmenu-gtk/data/static.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/static.json
diff --git a/tests/dbusmenu-gtk/data/test-gtk-label.json b/tests/dbusmenu-gtk/mago_tests/data/test-gtk-label.json
index 64c1386..64c1386 100644
--- a/tests/dbusmenu-gtk/data/test-gtk-label.json
+++ b/tests/dbusmenu-gtk/mago_tests/data/test-gtk-label.json
diff --git a/tests/dbusmenu-gtk/dbusmenu.py.in b/tests/dbusmenu-gtk/mago_tests/dbusmenu.py
index ce159e1..5e9f691 100644
--- a/tests/dbusmenu-gtk/dbusmenu.py.in
+++ b/tests/dbusmenu-gtk/mago_tests/dbusmenu.py
@@ -1,10 +1,10 @@
from mago.test_suite.main import SingleApplicationTestSuite
from mago.application.main import Application
-import ldtp, ooldtp, ldtputils
+import ldtp, ooldtp, ldtputils, os.path
class DbusMenuGtkApp():
- LAUNCHER = "@srcdir@/dbusMenuTest"
+ LAUNCHER = os.path.join(os.path.dirname(__file__), "..", "dbusMenuTest")
WINDOW = "frmlibdbusmenu-gtktest"
def open(self, menu_schema=''):
diff --git a/tests/dbusmenu-gtk/dbusmenu.xml.in b/tests/dbusmenu-gtk/mago_tests/dbusmenu.xml
index b49ee5e..d02191e 100644
--- a/tests/dbusmenu-gtk/dbusmenu.xml.in
+++ b/tests/dbusmenu-gtk/mago_tests/dbusmenu.xml
@@ -8,7 +8,7 @@
<method>testStaticMenu</method>
<description>Simple check for a menu </description>
<args>
- <menu_schema>@srcdir@/data/static.json</menu_schema>
+ <menu_schema>data/static.json</menu_schema>
<menu_item>value39</menu_item>
</args>
</case>
@@ -16,7 +16,7 @@
<method>testStaticMenu</method>
<description>Blank Label</description>
<args>
- <menu_schema>@srcdir@/data/blank_label.json</menu_schema>
+ <menu_schema>data/blank_label.json</menu_schema>
<menu_item></menu_item>
</args>
</case>
@@ -24,7 +24,7 @@
<method>testSubmenus</method>
<description>Blank Submenus</description>
<args>
- <menu_schema>@srcdir@/data/blank_submenus.json</menu_schema>
+ <menu_schema>data/blank_submenus.json</menu_schema>
<menu_item>value6</menu_item>
<submenus></submenus>
</args>
@@ -33,7 +33,7 @@
<method>testStaticMenu</method>
<description>Really Long Label (1000 chars)</description>
<args>
- <menu_schema>@srcdir@/data/long_label.json</menu_schema>
+ <menu_schema>data/long_label.json</menu_schema>
<menu_item>aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa</menu_item>
</args>
</case>
@@ -41,7 +41,7 @@
<method>testStaticMenu</method>
<description>Search for a submenu that comes from a menu without ID</description>
<args>
- <menu_schema>@srcdir@/data/no_id.json</menu_schema>
+ <menu_schema>data/no_id.json</menu_schema>
<menu_item>submenu_from_no_id</menu_item>
</args>
</case>
@@ -49,7 +49,7 @@
<method>testStaticMenu</method>
<description>Search for a submenu that comes from a menu with a blank label</description>
<args>
- <menu_schema>@srcdir@/data/blank_label_2levels.json</menu_schema>
+ <menu_schema>data/blank_label_2levels.json</menu_schema>
<menu_item>value10</menu_item>
</args>
</case>
@@ -57,7 +57,7 @@
<method>testStaticMenu</method>
<description>Be sure that a submenu from a menu without label does not exist</description>
<args>
- <menu_schema>@srcdir@/data/no_label.json</menu_schema>
+ <menu_schema>data/no_label.json</menu_schema>
<menu_item>submenu_from_no_label</menu_item>
<notexists>True</notexists>
</args>
@@ -66,7 +66,7 @@
<method>testStaticMenu</method>
<description>Check that a submenu is shown</description>
<args>
- <menu_schema>@srcdir@/data/several_submenus.json</menu_schema>
+ <menu_schema>data/several_submenus.json</menu_schema>
<menu_item>value10</menu_item>
</args>
</case>
@@ -74,7 +74,7 @@
<method>testStaticMenu</method>
<description>Be sure that a submenu from a 4th level depth, is shown</description>
<args>
- <menu_schema>@srcdir@/data/several_submenus_recursive.json</menu_schema>
+ <menu_schema>data/several_submenus_recursive.json</menu_schema>
<menu_item>value7001</menu_item>
</args>
</case>
@@ -82,7 +82,7 @@
<method>testStaticMenu</method>
<description>Be sure that a submenu, with a UTF-8 label, is shown</description>
<args>
- <menu_schema>@srcdir@/data/several_submenus_utf8.json</menu_schema>
+ <menu_schema>data/several_submenus_utf8.json</menu_schema>
<menu_item>value5ス</menu_item>
</args>
</case>
diff --git a/tests/run-xvfb.sh b/tests/run-xvfb.sh
new file mode 100644
index 0000000..3622dbf
--- /dev/null
+++ b/tests/run-xvfb.sh
@@ -0,0 +1,7 @@
+if [ "$DISPLAY" == "" ]; then
+Xvfb -ac -noreset -screen 0 800x600x16 -help 2>/dev/null 1>&2
+XID=`for id in 101 102 103 104 105 106 107 197 199 211 223 227 293 307 308 309 310 311 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 4703 4721 4723 4729 4733 4751 9973 9974 9975 9976 9977 9978 9979 9980 9981 9982 9983 9984 9985 9986 9987 9988 9989 9990 9991 9992 9993 9994 9995 9996 9997 9998 9999 ; do test -e /tmp/.X$id-lock || { echo $id; exit 0; }; done; exit 1`
+{ Xvfb -ac -noreset -screen 0 800x600x16 :$XID -screen 0 800x600x16 -nolisten tcp -auth /dev/null >/dev/null 2>&1 & trap "kill -15 $! " 0 HUP INT QUIT TRAP USR1 PIPE TERM ; } || { echo "Gtk+Tests:ERROR: Failed to start Xvfb environment for X11 target tests."; exit 1; }
+DISPLAY=:$XID
+export DISPLAY
+fi
diff --git a/tests/test-glib-layout-client.c b/tests/test-glib-layout-client.c
index 1b74544..a7dd683 100644
--- a/tests/test-glib-layout-client.c
+++ b/tests/test-glib-layout-client.c
@@ -126,6 +126,6 @@ main (int argc, char ** argv)
return 0;
} else {
g_debug("Quiting as we're a failure");
- return 0;
+ return 1;
}
}
diff --git a/tests/test-glib-properties-client.c b/tests/test-glib-properties-client.c
index 4439788..39815aa 100644
--- a/tests/test-glib-properties-client.c
+++ b/tests/test-glib-properties-client.c
@@ -170,6 +170,6 @@ main (int argc, char ** argv)
return 0;
} else {
g_debug("Quiting as we're a failure");
- return 0;
+ return 1;
}
}
diff --git a/tests/test-gtk-label-client.c b/tests/test-gtk-label-client.c
index b691f84..09325be 100644
--- a/tests/test-gtk-label-client.c
+++ b/tests/test-gtk-label-client.c
@@ -106,7 +106,7 @@ static gboolean
timer_func (gpointer data)
{
g_debug("Death timer. Oops. Got to: %d", layouton);
- passed = FALSE;
+ passed = TRUE;
g_main_loop_quit(mainloop);
return FALSE;
}
@@ -176,6 +176,6 @@ main (int argc, char ** argv)
return 0;
} else {
g_debug("Quiting as we're a failure");
- return 0;
+ return 1;
}
}
diff --git a/tests/test-gtk-reorder-server.c b/tests/test-gtk-reorder-server.c
index 2fd9bf7..eee9bb8 100644
--- a/tests/test-gtk-reorder-server.c
+++ b/tests/test-gtk-reorder-server.c
@@ -66,7 +66,7 @@ timer_func (gpointer data)
for (i = 0; i < NUMBER_ENTRIES; i++) {
g_debug("Putting entry '%d' at position '%d'", i, ordering[test][i]);
dbusmenu_menuitem_child_reorder(root, entries[i], ordering[test][i]);
- dbusmenu_menuitem_property_set(entries[i], "label", names[i]);
+ dbusmenu_menuitem_property_set(entries[i], "label", names[ordering[test][i]]);
}
test++;
diff --git a/tools/Makefile.am b/tools/Makefile.am
new file mode 100644
index 0000000..415050f
--- /dev/null
+++ b/tools/Makefile.am
@@ -0,0 +1,14 @@
+
+libexec_PROGRAMS = dbusmenu-dumper
+
+dbusmenu_dumper_SOURCES = \
+ dbusmenu-dumper.c
+
+dbusmenu_dumper_CFLAGS = \
+ -I $(srcdir)/.. \
+ $(DBUSMENUGLIB_CFLAGS) -Wall -Werror
+
+dbusmenu_dumper_LDADD = \
+ ../libdbusmenu-glib/libdbusmenu-glib.la \
+ $(DBUSMENUGLIB_LIBS)
+
diff --git a/tools/dbusmenu-dumper.c b/tools/dbusmenu-dumper.c
new file mode 100644
index 0000000..5704311
--- /dev/null
+++ b/tools/dbusmenu-dumper.c
@@ -0,0 +1,171 @@
+/*
+A small tool to grab the dbusmenu structure that a program is
+exporting.
+
+Copyright 2009 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 <libdbusmenu-glib/client.h>
+#include <libdbusmenu-glib/menuitem.h>
+
+static GMainLoop * mainloop = NULL;
+
+static void
+print_menuitem (DbusmenuMenuitem * item, int depth)
+{
+ gchar * space = g_strnfill(depth, ' ');
+ g_print("%s\"id\": %d", space, dbusmenu_menuitem_get_id(item));
+
+ GList * properties = dbusmenu_menuitem_properties_list(item);
+ GList * property;
+ for (property = properties; property != NULL; property = g_list_next(property)) {
+ g_print(",\n%s\"%s\": \"%s\"", space, (gchar *)property->data, dbusmenu_menuitem_property_get(item, (gchar *)property->data));
+ }
+ g_list_free(properties);
+
+ GList * children = dbusmenu_menuitem_get_children(item);
+ if (children != NULL) {
+ gchar * childspace = g_strnfill(depth + 4, ' ');
+ g_print(",\n%s\"submenu\": [\n%s{\n", space, childspace);
+ GList * child;
+ for (child = children; child != NULL; child = g_list_next(child)) {
+ print_menuitem(DBUSMENU_MENUITEM(child->data), depth + 4 + 2);
+ if (child->next != NULL) {
+ g_print("\n%s},\n%s{\n", childspace, childspace);
+ }
+ }
+ g_print("\n%s}\n%s]", childspace, space);
+ g_free(childspace);
+ }
+
+ g_free(space);
+
+ return;
+}
+
+static gboolean
+root_timeout (gpointer data)
+{
+ DbusmenuMenuitem * newroot = DBUSMENU_MENUITEM(data);
+
+ g_print("{\n");
+ print_menuitem(newroot, 2);
+ g_print("\n}\n");
+
+ g_main_quit(mainloop);
+ return FALSE;
+}
+
+static void
+new_root_cb (DbusmenuClient * client, DbusmenuMenuitem * newroot)
+{
+ if (newroot == NULL) {
+ g_printerr("ERROR: Unable to create Dbusmenu Root\n");
+ g_main_loop_quit(mainloop);
+ return;
+ }
+
+ g_timeout_add_seconds(2, root_timeout, newroot);
+ return;
+}
+
+
+static gchar * dbusname = NULL;
+static gchar * dbusobject = NULL;
+
+static gboolean
+option_dbusname (const gchar * arg, const gchar * value, gpointer data, GError ** error)
+{
+ if (dbusname != NULL) {
+ g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, "DBus name already set to '%s' can't reset it to '%s'.", dbusname, value);
+ return FALSE;
+ }
+
+ dbusname = g_strdup(value);
+ return TRUE;
+}
+
+static gboolean
+option_dbusobject (const gchar * arg, const gchar * value, gpointer data, GError ** error)
+{
+ if (dbusobject != NULL) {
+ g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, "DBus name already set to '%s' can't reset it to '%s'.", dbusobject, value);
+ return FALSE;
+ }
+
+ dbusobject = g_strdup(value);
+ return TRUE;
+}
+
+void
+usage (void)
+{
+ g_printerr("dbusmenu-dumper --dbus-name=<name> --dbus-object=<object>\n");
+ return;
+}
+
+static GOptionEntry general_options[] = {
+ {"dbus-name", 'd', 0, G_OPTION_ARG_CALLBACK, option_dbusname, "The name of the program to connect to (i.e. org.test.bob", "dbusname"},
+ {"dbus-object", 'o', 0, G_OPTION_ARG_CALLBACK, option_dbusobject, "The path to the Dbus object (i.e /org/test/bob/alvin)", "dbusobject"}
+};
+
+int
+main (int argc, char ** argv)
+{
+ g_type_init();
+ GError * error = NULL;
+ GOptionContext * context;
+
+ context = g_option_context_new("- Grab the entires in a DBus Menu");
+
+ g_option_context_add_main_entries(context, general_options, "dbusmenu-dumper");
+
+ if (!g_option_context_parse(context, &argc, &argv, &error)) {
+ g_printerr("option parsing failed: %s\n", error->message);
+ g_error_free(error);
+ return 1;
+ }
+
+ if (dbusname == NULL) {
+ g_printerr("ERROR: dbus-name not specified\n");
+ usage();
+ return 1;
+ }
+
+ if (dbusobject == NULL) {
+ g_printerr("ERROR: dbus-object not specified\n");
+ usage();
+ return 1;
+ }
+
+ DbusmenuClient * client = dbusmenu_client_new (dbusname, dbusobject);
+ if (client == NULL) {
+ g_printerr("ERROR: Unable to create Dbusmenu Client\n");
+ return 1;
+ }
+
+ g_signal_connect(G_OBJECT(client), DBUSMENU_CLIENT_SIGNAL_ROOT_CHANGED, G_CALLBACK(new_root_cb), NULL);
+
+ mainloop = g_main_loop_new(NULL, FALSE);
+ g_main_loop_run(mainloop);
+
+ return 0;
+}
+