aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2010-07-15 10:20:14 -0500
committerTed Gould <ted@gould.cx>2010-07-15 10:20:14 -0500
commit863cd1c1debec979f11ca59c8fbf4ed129183edf (patch)
tree74d872edb8efc6770dedb64a63673f9ba9add08e /tests
parent44880df7222487d65b68c7c53a9d28de9cc2f32c (diff)
parent17dea0907c51dfb39686f6840a9404467d79db82 (diff)
downloadlibayatana-appindicator-863cd1c1debec979f11ca59c8fbf4ed129183edf.tar.gz
libayatana-appindicator-863cd1c1debec979f11ca59c8fbf4ed129183edf.tar.bz2
libayatana-appindicator-863cd1c1debec979f11ca59c8fbf4ed129183edf.zip
Import upstream version 0.2.3
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile.am28
-rw-r--r--tests/Makefile.in70
-rw-r--r--tests/test-approver.c179
3 files changed, 268 insertions, 9 deletions
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 8d356bc..f2bdbb2 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,5 +1,6 @@
check_PROGRAMS = \
+ test-approver \
test-libappindicator \
test-libappindicator-dbus-client \
test-libappindicator-dbus-server \
@@ -99,6 +100,33 @@ test_libappindicator_status_server_LDADD = \
$(top_builddir)/src/libappindicator.la
#########################################
+## test-approver
+#########################################
+
+test_approver_SOURCES = \
+ test-approver.c
+
+test_approver_CFLAGS = \
+ $(INDICATOR_CFLAGS) \
+ -Wall -Werror \
+ -I$(top_srcdir)/src \
+ -I$(top_builddir)/src
+
+test_approver_LDADD = \
+ $(INDICATOR_LIBS) \
+ $(top_builddir)/src/libappindicator.la
+
+test-approver-tester: test-approver Makefile.am
+ @echo "#!/bin/bash" > $@
+ @echo export INDICATOR_SERVICE_SHUTDOWN_TIMEOUT=1000 >> $@
+ @echo . $(srcdir)/run-xvfb.sh >> $@
+ @echo $(DBUS_RUNNER) --task $(builddir)/test-approver --task-name Approver --task $(top_builddir)/src/indicator-application-service --task-name Service --ignore-return >> $@
+ @chmod +x $@
+
+TESTS += test-approver-tester
+
+
+#########################################
## test-libappindicator-fallback
#########################################
diff --git a/tests/Makefile.in b/tests/Makefile.in
index edc828f..dc4be9b 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -33,7 +33,7 @@ PRE_UNINSTALL = :
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
-check_PROGRAMS = test-libappindicator$(EXEEXT) \
+check_PROGRAMS = test-approver$(EXEEXT) test-libappindicator$(EXEEXT) \
test-libappindicator-dbus-client$(EXEEXT) \
test-libappindicator-dbus-server$(EXEEXT) \
test-libappindicator-status-client$(EXEEXT) \
@@ -52,15 +52,22 @@ mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-am_test_libappindicator_OBJECTS = \
- test_libappindicator-test-libappindicator.$(OBJEXT)
-test_libappindicator_OBJECTS = $(am_test_libappindicator_OBJECTS)
+am_test_approver_OBJECTS = test_approver-test-approver.$(OBJEXT)
+test_approver_OBJECTS = $(am_test_approver_OBJECTS)
am__DEPENDENCIES_1 =
-test_libappindicator_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+test_approver_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(top_builddir)/src/libappindicator.la
AM_V_lt = $(am__v_lt_$(V))
am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
am__v_lt_0 = --silent
+test_approver_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(test_approver_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+am_test_libappindicator_OBJECTS = \
+ test_libappindicator-test-libappindicator.$(OBJEXT)
+test_libappindicator_OBJECTS = $(am_test_libappindicator_OBJECTS)
+test_libappindicator_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(top_builddir)/src/libappindicator.la
test_libappindicator_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
$(test_libappindicator_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
@@ -154,7 +161,7 @@ am__v_CCLD_0 = @echo " CCLD " $@;
AM_V_GEN = $(am__v_GEN_$(V))
am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY))
am__v_GEN_0 = @echo " GEN " $@;
-SOURCES = $(test_libappindicator_SOURCES) \
+SOURCES = $(test_approver_SOURCES) $(test_libappindicator_SOURCES) \
$(test_libappindicator_dbus_client_SOURCES) \
$(test_libappindicator_dbus_server_SOURCES) \
$(test_libappindicator_fallback_item_SOURCES) \
@@ -162,7 +169,8 @@ SOURCES = $(test_libappindicator_SOURCES) \
$(test_libappindicator_status_client_SOURCES) \
$(test_libappindicator_status_server_SOURCES) \
$(test_simple_app_SOURCES)
-DIST_SOURCES = $(test_libappindicator_SOURCES) \
+DIST_SOURCES = $(test_approver_SOURCES) \
+ $(test_libappindicator_SOURCES) \
$(test_libappindicator_dbus_client_SOURCES) \
$(test_libappindicator_dbus_server_SOURCES) \
$(test_libappindicator_fallback_item_SOURCES) \
@@ -341,8 +349,9 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
-TESTS = test-libappindicator-fallback libappindicator-tests \
- test-libappindicator-dbus test-libappindicator-status
+TESTS = test-approver-tester test-libappindicator-fallback \
+ libappindicator-tests test-libappindicator-dbus \
+ test-libappindicator-status
DISTCLEANFILES = $(TESTS) $(XML_REPORT) $(HTML_REPORT) \
libappindicator-tests-gtester
EXTRA_DIST = run-xvfb.sh
@@ -428,6 +437,22 @@ test_libappindicator_status_server_LDADD = \
#########################################
#########################################
+test_approver_SOURCES = \
+ test-approver.c
+
+test_approver_CFLAGS = \
+ $(INDICATOR_CFLAGS) \
+ -Wall -Werror \
+ -I$(top_srcdir)/src \
+ -I$(top_builddir)/src
+
+test_approver_LDADD = \
+ $(INDICATOR_LIBS) \
+ $(top_builddir)/src/libappindicator.la
+
+
+#########################################
+#########################################
test_libappindicator_fallback_watcher_SOURCES = \
test-libappindicator-fallback-watcher.c
@@ -516,6 +541,9 @@ clean-checkPROGRAMS:
list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
echo " rm -f" $$list; \
rm -f $$list
+test-approver$(EXEEXT): $(test_approver_OBJECTS) $(test_approver_DEPENDENCIES)
+ @rm -f test-approver$(EXEEXT)
+ $(AM_V_CCLD)$(test_approver_LINK) $(test_approver_OBJECTS) $(test_approver_LDADD) $(LIBS)
test-libappindicator$(EXEEXT): $(test_libappindicator_OBJECTS) $(test_libappindicator_DEPENDENCIES)
@rm -f test-libappindicator$(EXEEXT)
$(AM_V_CCLD)$(test_libappindicator_LINK) $(test_libappindicator_OBJECTS) $(test_libappindicator_LDADD) $(LIBS)
@@ -547,6 +575,7 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_approver-test-approver.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_libappindicator-test-libappindicator.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_libappindicator_dbus_client-test-libappindicator-dbus-client.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_libappindicator_dbus_server-test-libappindicator-dbus-server.Po@am__quote@
@@ -580,6 +609,22 @@ distclean-compile:
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+test_approver-test-approver.o: test-approver.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_approver_CFLAGS) $(CFLAGS) -MT test_approver-test-approver.o -MD -MP -MF $(DEPDIR)/test_approver-test-approver.Tpo -c -o test_approver-test-approver.o `test -f 'test-approver.c' || echo '$(srcdir)/'`test-approver.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_approver-test-approver.Tpo $(DEPDIR)/test_approver-test-approver.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-approver.c' object='test_approver-test-approver.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_approver_CFLAGS) $(CFLAGS) -c -o test_approver-test-approver.o `test -f 'test-approver.c' || echo '$(srcdir)/'`test-approver.c
+
+test_approver-test-approver.obj: test-approver.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_approver_CFLAGS) $(CFLAGS) -MT test_approver-test-approver.obj -MD -MP -MF $(DEPDIR)/test_approver-test-approver.Tpo -c -o test_approver-test-approver.obj `if test -f 'test-approver.c'; then $(CYGPATH_W) 'test-approver.c'; else $(CYGPATH_W) '$(srcdir)/test-approver.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_approver-test-approver.Tpo $(DEPDIR)/test_approver-test-approver.Po
+@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='test-approver.c' object='test_approver-test-approver.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_approver_CFLAGS) $(CFLAGS) -c -o test_approver-test-approver.obj `if test -f 'test-approver.c'; then $(CYGPATH_W) 'test-approver.c'; else $(CYGPATH_W) '$(srcdir)/test-approver.c'; fi`
+
test_libappindicator-test-libappindicator.o: test-libappindicator.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(test_libappindicator_CFLAGS) $(CFLAGS) -MT test_libappindicator-test-libappindicator.o -MD -MP -MF $(DEPDIR)/test_libappindicator-test-libappindicator.Tpo -c -o test_libappindicator-test-libappindicator.o `test -f 'test-libappindicator.c' || echo '$(srcdir)/'`test-libappindicator.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/test_libappindicator-test-libappindicator.Tpo $(DEPDIR)/test_libappindicator-test-libappindicator.Po
@@ -1008,6 +1053,13 @@ uninstall-am:
tags uninstall uninstall-am
+test-approver-tester: test-approver Makefile.am
+ @echo "#!/bin/bash" > $@
+ @echo export INDICATOR_SERVICE_SHUTDOWN_TIMEOUT=1000 >> $@
+ @echo . $(srcdir)/run-xvfb.sh >> $@
+ @echo $(DBUS_RUNNER) --task $(builddir)/test-approver --task-name Approver --task $(top_builddir)/src/indicator-application-service --task-name Service --ignore-return >> $@
+ @chmod +x $@
+
test-libappindicator-fallback: test-libappindicator-fallback-watcher test-libappindicator-fallback-item Makefile.am
@echo "#!/bin/bash" > $@
@echo . $(srcdir)/run-xvfb.sh >> $@
diff --git a/tests/test-approver.c b/tests/test-approver.c
new file mode 100644
index 0000000..bc25761
--- /dev/null
+++ b/tests/test-approver.c
@@ -0,0 +1,179 @@
+#include <glib.h>
+#include <glib-object.h>
+
+#include <dbus/dbus-glib-bindings.h>
+
+#include "notification-watcher-client.h"
+#include "dbus-shared.h"
+#include "app-indicator.h"
+
+#define APPROVER_PATH "/my/approver"
+
+#define INDICATOR_ID "test-indicator-id"
+#define INDICATOR_ICON "test-indicator-icon-name"
+#define INDICATOR_CATEGORY APP_INDICATOR_CATEGORY_APPLICATION_STATUS
+
+#define TEST_APPROVER_TYPE (test_approver_get_type ())
+#define TEST_APPROVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TEST_APPROVER_TYPE, TestApprover))
+#define TEST_APPROVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TEST_APPROVER_TYPE, TestApproverClass))
+#define IS_TEST_APPROVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TEST_APPROVER_TYPE))
+#define IS_TEST_APPROVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TEST_APPROVER_TYPE))
+#define TEST_APPROVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TEST_APPROVER_TYPE, TestApproverClass))
+
+typedef struct _TestApprover TestApprover;
+typedef struct _TestApproverClass TestApproverClass;
+
+struct _TestApproverClass {
+ GObjectClass parent_class;
+};
+
+struct _TestApprover {
+ GObject parent;
+};
+
+GType test_approver_get_type (void);
+
+static void test_approver_class_init (TestApproverClass *klass);
+static void test_approver_init (TestApprover *self);
+static gboolean _notification_approver_server_approve_item (TestApprover * ta, const gchar * id, const gchar * category, guint pid, const gchar * address, const gchar * path, gboolean * approved, GError ** error);
+
+#include "../src/notification-approver-server.h"
+
+GMainLoop * main_loop = NULL;
+DBusGConnection * session_bus = NULL;
+DBusGProxy * bus_proxy = NULL;
+AppIndicator * app_indicator = NULL;
+gboolean passed = FALSE;
+
+G_DEFINE_TYPE (TestApprover, test_approver, G_TYPE_OBJECT);
+
+static void
+test_approver_class_init (TestApproverClass *klass)
+{
+ dbus_g_object_type_install_info(TEST_APPROVER_TYPE,
+ &dbus_glib__notification_approver_server_object_info);
+
+ return;
+}
+
+static void
+test_approver_init (TestApprover *self)
+{
+ dbus_g_connection_register_g_object(session_bus,
+ APPROVER_PATH,
+ G_OBJECT(self));
+
+ return;
+}
+
+static gboolean
+_notification_approver_server_approve_item (TestApprover * ta, const gchar * id, const gchar * category, guint pid, const gchar * address, const gchar * path, gboolean * approved, GError ** error)
+{
+ *approved = TRUE;
+ g_debug("Asked to approve indicator");
+
+ if (g_strcmp0(id, INDICATOR_ID) == 0) {
+ passed = TRUE;
+ }
+
+ g_main_loop_quit(main_loop);
+
+ return TRUE;
+}
+
+static void
+register_cb (DBusGProxy * proxy, GError * error, gpointer user_data)
+{
+ if (error != NULL) {
+ g_warning("Unable to register approver: %s", error->message);
+ g_error_free(error);
+ g_main_loop_quit(main_loop);
+ return;
+ }
+
+ g_debug("Building App Indicator");
+ app_indicator = app_indicator_new(INDICATOR_ID, INDICATOR_ICON, INDICATOR_CATEGORY);
+
+ GtkWidget * menu = gtk_menu_new();
+ GtkWidget * mi = gtk_image_menu_item_new_from_stock(GTK_STOCK_ABOUT, NULL);
+ gtk_menu_shell_append(GTK_MENU_SHELL(menu), mi);
+
+ app_indicator_set_menu(app_indicator, GTK_MENU(menu));
+
+ return;
+}
+
+gint owner_count = 0;
+gboolean
+check_for_service (gpointer user_data)
+{
+ g_debug("Checking for Watcher");
+
+ if (owner_count > 100) {
+ g_warning("Couldn't find watcher after 100 tries.");
+ g_main_loop_quit(main_loop);
+ return FALSE;
+ }
+
+ owner_count++;
+
+ gboolean has_owner = FALSE;
+ org_freedesktop_DBus_name_has_owner(bus_proxy, NOTIFICATION_WATCHER_DBUS_ADDR, &has_owner, NULL);
+
+ if (has_owner) {
+ const char * cats = NULL;
+ DBusGProxy * proxy = dbus_g_proxy_new_for_name(session_bus,
+ NOTIFICATION_WATCHER_DBUS_ADDR,
+ NOTIFICATION_WATCHER_DBUS_OBJ,
+ NOTIFICATION_WATCHER_DBUS_IFACE);
+
+ g_debug("Registering Approver");
+ org_kde_StatusNotifierWatcher_register_notification_approver_async (proxy, APPROVER_PATH, &cats, register_cb, NULL);
+
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+fail_timeout (gpointer user_data)
+{
+ g_debug("Failure timeout initiated.");
+ g_main_loop_quit(main_loop);
+ return FALSE;
+}
+
+int
+main (int argc, char ** argv)
+{
+ GError * error = NULL;
+
+ gtk_init(&argc, &argv);
+ g_debug("Initing");
+
+ session_bus = dbus_g_bus_get(DBUS_BUS_SESSION, &error);
+ if (error != NULL) {
+ g_warning("Unable to get session bus: %s", error->message);
+ g_error_free(error);
+ return -1;
+ }
+
+ TestApprover * approver = g_object_new(TEST_APPROVER_TYPE, NULL);
+
+ bus_proxy = dbus_g_proxy_new_for_name(session_bus, DBUS_SERVICE_DBUS, DBUS_PATH_DBUS, DBUS_INTERFACE_DBUS);
+
+ g_timeout_add(100, check_for_service, NULL);
+ g_timeout_add_seconds(2, fail_timeout, NULL);
+
+ main_loop = g_main_loop_new(NULL, FALSE);
+ g_main_loop_run(main_loop);
+
+ g_object_unref(approver);
+
+ if (!passed) {
+ return -1;
+ }
+
+ return 0;
+}