diff options
-rw-r--r-- | .bzrignore | 2 | ||||
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | debian/changelog | 9 | ||||
-rw-r--r-- | libdbusmenu-glib/client.c | 10 | ||||
-rw-r--r-- | libdbusmenu-glib/dbus-menu.xml | 59 | ||||
-rw-r--r-- | libdbusmenu-glib/server.c | 6 | ||||
-rw-r--r-- | libdbusmenu-gtk/menu.c | 8 | ||||
-rw-r--r-- | tests/Makefile.am | 85 | ||||
-rw-r--r-- | tests/dbusmenu-gtk/Makefile.am | 43 | ||||
-rwxr-xr-x | tests/dbusmenu-gtk/dbusMenuTest | 2 | ||||
-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.sh | 7 | ||||
-rw-r--r-- | tests/test-glib-layout-client.c | 2 | ||||
-rw-r--r-- | tests/test-glib-properties-client.c | 2 | ||||
-rw-r--r-- | tests/test-gtk-label-client.c | 4 | ||||
-rw-r--r-- | tests/test-gtk-reorder-server.c | 2 | ||||
-rw-r--r-- | tools/Makefile.am | 14 | ||||
-rw-r--r-- | tools/dbusmenu-dumper.c | 171 |
36 files changed, 363 insertions, 91 deletions
@@ -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; +} + |