aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Kerr <charles.kerr@canonical.com>2012-05-02 11:10:52 -0700
committerCharles Kerr <charles.kerr@canonical.com>2012-05-02 11:10:52 -0700
commitb7a6eedae94cf5276cc549e44af5b4fe7849bda5 (patch)
tree3094cc3300bda1559998bc9b1dcda89d08d711af
parent1ddba0eb336a87dafc522f15be584ba4cbdc97d5 (diff)
parentea22a6005cd8c2c07447bb7303f542d4e00570ad (diff)
downloadayatana-indicator-session-b7a6eedae94cf5276cc549e44af5b4fe7849bda5.tar.gz
ayatana-indicator-session-b7a6eedae94cf5276cc549e44af5b4fe7849bda5.tar.bz2
ayatana-indicator-session-b7a6eedae94cf5276cc549e44af5b4fe7849bda5.zip
merge lp:~charlesk/indicator-session/gtest to add Google Test + libdbustest
-rw-r--r--Makefile.am6
-rw-r--r--configure.ac31
-rw-r--r--m4/gtest.m463
-rw-r--r--tests/Makefile.am24
-rw-r--r--tests/test-service.cc56
5 files changed, 180 insertions, 0 deletions
diff --git a/Makefile.am b/Makefile.am
index bb27c84..ad42d8e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -4,6 +4,12 @@ SUBDIRS = \
data \
po
+if BUILD_TESTS
+SUBDIRS += tests
+# build src first
+tests: src
+endif
+
EXTRA_DIST = autogen.sh
DISTCHECK_CONFIGURE_FLAGS = --enable-localinstall
diff --git a/configure.ac b/configure.ac
index 1ef7d50..de54ff4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -14,6 +14,7 @@ IT_PROG_INTLTOOL([0.35.0])
AC_ISC_POSIX
AC_PROG_CC
+AC_PROG_CXX
AM_PROG_CC_C_O
AC_STDC_HEADERS
AC_PROG_LIBTOOL
@@ -32,6 +33,7 @@ GTK3_REQUIRED_VERSION=3.0
INDICATOR_REQUIRED_VERSION=0.3.19
DBUSMENUGTK_REQUIRED_VERSION=0.5.90
POLKIT_REQUIRED_VERSION=0.92
+DBUSTEST_REQUIRED_VERSION=0.0.5
AC_ARG_WITH([gtk],
[AS_HELP_STRING([--with-gtk],
@@ -170,6 +172,33 @@ else
fi
AC_SUBST(DBUSSERVICEDIR)
+###########################
+# Google Test framework
+###########################
+
+AC_ARG_ENABLE([tests],
+ [AS_HELP_STRING([--disable-tests], [Disable test scripts and tools (default=auto)])],
+ [enable_tests=${enableval}],
+ [enable_tests=auto])
+if test "x$enable_tests" != "xno"; then
+ m4_include([m4/gtest.m4])
+ CHECK_GTEST
+ CHECK_XORG_GTEST
+ if test "x$enable_tests" = "xauto"; then
+ enable_tests=${have_gtest}
+ elif test "x$enable_tests" = "xyes" && test "x$have_gtest" != "xyes"; then
+ AC_MSG_ERROR([tests were requested but gtest is not installed.])
+ fi
+ if test "x$enable_tests" = "xyes"; then
+ PKG_CHECK_MODULES([TEST_SERVICE],[indicator3-0.4 >= $INDICATOR_REQUIRED_VERSION
+ dbustest-1 >= $DBUSTEST_REQUIRED_VERSION
+ dbusmenu-glib-0.4 >= $DBUSMENUGLIB_REQUIRED_VERSION])
+ fi
+fi
+AM_CONDITIONAL([BUILD_TESTS],[test "x$enable_tests" = "xyes"])
+AC_SUBST([TEST_SERVICE_CFLAGS])
+AC_SUBST([TEST_SERVICE_LDFLAGS])
+
##############################
# Custom Junk
##############################
@@ -236,6 +265,7 @@ data/icons/scalable/Makefile
data/icons/scalable/actions/Makefile
data/icons/scalable/status/Makefile
data/extra-sessions/Makefile
+tests/Makefile
po/Makefile.in
])
@@ -254,5 +284,6 @@ SUS Indicator Configuration:
Indicator GTK: $with_gtk
Logout Helper: $have_gtklogouthelper
APT support: $enable_apt
+ Unit Tests: $enable_tests
Coverage reporting: $use_gcov
])
diff --git a/m4/gtest.m4 b/m4/gtest.m4
new file mode 100644
index 0000000..2de334c
--- /dev/null
+++ b/m4/gtest.m4
@@ -0,0 +1,63 @@
+# Copyright (C) 2012 Canonical, Ltd.
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice (including the next
+# paragraph) shall be included in all copies or substantial portions of the
+# Software.
+#
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+# SOFTWARE.
+
+# Checks whether the gtest source is available on the system. Allows for
+# adjusting the include and source path. Sets have_gtest=yes if the source is
+# present. Sets GTEST_CPPFLAGS and GTEST_SOURCE to the preprocessor flags and
+# source location respectively.
+AC_DEFUN([CHECK_GTEST],
+[
+ AC_ARG_WITH([gtest-include-path],
+ [AS_HELP_STRING([--with-gtest-include-path],
+ [location of the Google test headers])],
+ [GTEST_CPPFLAGS="-I$withval"])
+
+ AC_ARG_WITH([gtest-source-path],
+ [AS_HELP_STRING([--with-gtest-source-path],
+ [location of the Google test sources, defaults to /usr/src/gtest])],
+ [GTEST_SOURCE="$withval"],
+ [GTEST_SOURCE="/usr/src/gtest"])
+
+ GTEST_CPPFLAGS="$GTEST_CPPFLAGS -I$GTEST_SOURCE"
+
+ AC_LANG_PUSH([C++])
+
+ tmp_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $GTEST_CPPFLAGS"
+
+ AC_CHECK_HEADER([gtest/gtest.h])
+
+ CPPFLAGS="$tmp_CPPFLAGS"
+
+ AC_LANG_POP
+
+ AC_CHECK_FILES([$GTEST_SOURCE/src/gtest-all.cc]
+ [$GTEST_SOURCE/src/gtest_main.cc],
+ [have_gtest_source=yes],
+ [have_gtest_source=no])
+
+ AS_IF([test "x$ac_cv_header_gtest_gtest_h" = xyes -a \
+ "x$have_gtest_source" = xyes],
+ [have_gtest=yes]
+ [AC_SUBST(GTEST_CPPFLAGS)]
+ [AC_SUBST(GTEST_SOURCE)],
+ [have_gtest=no])
+]) # CHECK_GTEST
diff --git a/tests/Makefile.am b/tests/Makefile.am
new file mode 100644
index 0000000..0d30bba
--- /dev/null
+++ b/tests/Makefile.am
@@ -0,0 +1,24 @@
+
+AM_CPPFLAGS = \
+ $(GTEST_CPPFLAGS) \
+ $(XORG_GTEST_CPPFLAGS) \
+ $(INDICATOR_CFLAGS) \
+ -I${top_srcdir}/src \
+ -Wall -Werror
+AM_CXXFLAGS = $(GTEST_CXXFLAGS)
+
+TESTS = test-service
+check_PROGRAMS = test-service
+test_service_SOURCES = test-service.cc
+test_service_LDADD = $(TEST_SERVICE_LIBS) libgtest.a $(XORG_GTEST_MAIN_LIBS) $(X11_LIBS)
+test_service_CPPFLAGS = \
+ $(TEST_SERVICE_CFLAGS) \
+ $(AM_CPPFLAGS) \
+ -DINDICATOR_SERVICE_PATH="\"$(top_builddir)/src/indicator-session-service\""
+
+check_LIBRARIES = libgtest.a
+nodist_libgtest_a_SOURCES = \
+ $(XORG_GTEST_SOURCE)/src/xorg-gtest-all.cpp \
+ $(GTEST_SOURCE)/src/gtest-all.cc \
+ $(XORG_GTEST_SOURCE)/src/xorg-gtest_main.cpp
+
diff --git a/tests/test-service.cc b/tests/test-service.cc
new file mode 100644
index 0000000..d163db5
--- /dev/null
+++ b/tests/test-service.cc
@@ -0,0 +1,56 @@
+/*
+Copyright 2012 Canonical Ltd.
+
+Authors:
+ Charles Kerr <charles.kerr@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 <libindicator/indicator-service-test.h>
+
+#include "dbus-shared-names.h"
+
+/***
+****
+***/
+
+/**
+ * Fixture class for testing indicator-session-service with Google Test.
+ */
+class SessionServiceTest: public IndicatorServiceTest
+{
+ public:
+ virtual ~SessionServiceTest() {}
+ SessionServiceTest(): IndicatorServiceTest(INDICATOR_SESSION_DBUS_NAME,
+ INDICATOR_SESSION_DBUS_OBJECT,
+ INDICATOR_SERVICE_PATH) { }
+ public:
+ virtual void SetUp() {
+ wait_seconds(1);
+ IndicatorServiceTest::SetUp();
+ }
+ virtual void TearDown() {
+ IndicatorServiceTest::TearDown();
+ }
+};
+
+
+/**
+ * Basic sanity test to see if we can account for all our menuitems.
+ */
+TEST_F(SessionServiceTest, HelloWorld)
+{
+ ASSERT_TRUE(true);
+}
+