summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlban Crequy <alban.crequy@collabora.co.uk>2011-10-10 16:43:10 +0100
committerAlban Crequy <alban.crequy@collabora.co.uk>2011-11-04 16:19:50 +0000
commitb1970f4371d3efdf4a385cd6b4eebb6731fadd1c (patch)
tree4cf4e434211a7306c0a066cba3d55c0f4784b55f
parent41c5b207f8482182834d7ea05d677316538f358b (diff)
tests: add --enable-installed-tests
This configure option makes it possible to install the twisted tests in /usr/share/telepathy-mission-control-tests and run them without the sources. https://bugs.freedesktop.org/show_bug.cgi?id=41927
-rw-r--r--.gitignore9
-rw-r--r--configure.ac15
-rw-r--r--tests/twisted/Makefile.am94
-rw-r--r--tests/twisted/run-test.sh.in43
-rw-r--r--tests/twisted/tools/Makefile.am71
-rwxr-xr-xtests/twisted/tools/run-mc.sh.in5
-rw-r--r--tests/twisted/tools/servicedir-installed/Client.AbiWord.service.in3
-rw-r--r--tests/twisted/tools/servicedir-installed/Client.Logger.service.in3
-rw-r--r--tests/twisted/tools/servicedir-installed/MissionControl5.service.in3
-rw-r--r--tests/twisted/tools/servicedir-installed/tmp-session-bus.conf.in (renamed from tests/twisted/tools/tmp-session-bus.conf.in)2
-rw-r--r--tests/twisted/tools/servicedir-uninstalled/Client.AbiWord.service.in (renamed from tests/twisted/tools/Client.AbiWord.service.in)0
-rw-r--r--tests/twisted/tools/servicedir-uninstalled/Client.Logger.service.in (renamed from tests/twisted/tools/Client.Logger.service.in)0
-rw-r--r--tests/twisted/tools/servicedir-uninstalled/MissionControl5.service.in (renamed from tests/twisted/tools/MissionControl5.service.in)0
-rw-r--r--tests/twisted/tools/servicedir-uninstalled/tmp-session-bus.conf.in30
14 files changed, 249 insertions, 29 deletions
diff --git a/.gitignore b/.gitignore
index 7435c965..be2a4df4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -82,11 +82,16 @@ tests/twisted/with-session-bus-*.dbus-monitor-logs
/tests/twisted/accounts/.mc_connections
/tests/twisted/accounts/accounts.cfg
/tests/twisted/mc-debug-server
+tests/twisted/mc-twisted-tests.list
+tests/twisted/run-test.sh
tests/twisted/tools/exec-with-log.sh
tests/twisted/tools/missioncontrol-*.log
tests/twisted/tools/missioncontrol.log
-tests/twisted/tools/tmp-session-bus.conf
-/tests/twisted/tools/*.service
+tests/twisted/tools/run-mc.sh
+tests/twisted/tools/servicedir-installed/tmp-session-bus.conf
+tests/twisted/tools/servicedir-uninstalled/tmp-session-bus.conf
+/tests/twisted/tools/servicedir-installed/*.service
+/tests/twisted/tools/servicedir-uninstalled/*.service
/tests/twisted/tmp-*/
/tests/twisted/with-session-bus-*.address
/tests/twisted/with-session-bus-*.pid
diff --git a/configure.ac b/configure.ac
index 42a2c843..e26c8809 100644
--- a/configure.ac
+++ b/configure.ac
@@ -117,6 +117,20 @@ if test "x$enable_coverage" = "xyes"; then
CFLAGS="$CFLAGS -g -fprofile-arcs -ftest-coverage"
fi
+AC_ARG_ENABLE([installed-tests],
+ AC_HELP_STRING([--enable-installed-tests],
+ [make tests installable]),
+ [installed_tests=$enableval], [installed_tests=no])
+
+if test x$installed_tests = xyes; then
+ AC_DEFINE(ENABLE_INSTALLED_TESTS, [],
+ [Make tests installable])
+fi
+AM_CONDITIONAL([ENABLE_INSTALLED_TESTS], [test "x$installed_tests" = xyes])
+
+mctestsdir=${libdir}/telepathy-mission-control-tests
+AC_SUBST(mctestsdir)
+
AC_ARG_WITH(accounts_dir, AS_HELP_STRING([--with-accounts-dir=<path>],[Directory for storing accounts]))
if test -z "$with_accounts_dir" ; then
ACCOUNTS_DIR="~/.mission-control/accounts"
@@ -433,6 +447,7 @@ Configure summary:
Prefix.......................: ${prefix}
Enable debug.................: ${enable_debug}
Python tests.................: ${mc_want_twisted_tests}
+ Install unit tests...........: ${installed_tests}
Options:
Account storage directory....: ${ACCOUNTS_DIR}
diff --git a/tests/twisted/Makefile.am b/tests/twisted/Makefile.am
index 5832e53e..642e9814 100644
--- a/tests/twisted/Makefile.am
+++ b/tests/twisted/Makefile.am
@@ -63,7 +63,8 @@ TWISTED_BASIC_TESTS = \
dispatcher/respawn-observers.py \
dispatcher/some-delay-approvers.py \
dispatcher/undispatchable.py \
- dispatcher/vanishing-client.py
+ dispatcher/vanishing-client.py \
+ $(NULL)
if ENABLE_MCD_PLUGINS
TWISTED_BASIC_TESTS += \
@@ -98,6 +99,51 @@ TWISTED_SEPARATE_TESTS = \
TWISTED_SEPARATE_TESTS += $(TWISTED_SPECIAL_BUILD_TESTS)
+# other files used by the twisted tests, but are not tests and are not built
+# source
+TWISTED_OTHER_FILES = \
+ constants.py \
+ fakeclient.py \
+ fakecm.py \
+ fakeconnectivity.py \
+ mctest.py \
+ servicetest.py \
+ telepathy/clients/README \
+ telepathy/clients/AbiWord.client \
+ telepathy/clients/Logger.client \
+ telepathy/managers/fakecm.manager \
+ telepathy/managers/onewitheverything.manager \
+ telepathy/managers/README \
+ $(NULL)
+
+mc-twisted-tests.list:
+ $(AM_V_GEN)echo $(TWISTED_BASIC_TESTS) > $@
+
+run-test.sh: run-test.sh.in Makefile
+ $(AM_V_GEN)sed \
+ -e "s|[@]mctestsdir[@]|@mctestsdir@|g" \
+ -e "s|[@]PYTHON[@]|$(PYTHON)|g" \
+ $< > $@
+ @chmod +x $@
+
+if ENABLE_INSTALLED_TESTS
+# Install files in each directory. They could be tests, pristine data files,
+# scripts or built source
+twistedtestsdir = @mctestsdir@/twisted
+nobase_nodist_twistedtests_SCRIPTS = \
+ run-test.sh \
+ $(NULL)
+nobase_dist_twistedtests_DATA = \
+ $(TWISTED_BASIC_TESTS) \
+ $(TWISTED_OTHER_FILES) \
+ $(NULL)
+nobase_nodist_twistedtests_DATA = \
+ config.py \
+ mc-twisted-tests.list \
+ $(NULL)
+endif
+
+
if HAVE_MCE
HAVE_MCE_PYBOOL = True
else
@@ -124,8 +170,34 @@ BUILT_SOURCES = config.py
AM_CFLAGS = $(ERROR_CFLAGS)
+plugins_list = \
+ mcp-plugin.la \
+ mcp-account-diversion.la \
+ mcp-dbus-caller-permission.la \
+ $(NULL)
+
+if ENABLE_INSTALLED_TESTS
+
+noinst_LTLIBRARIES = \
+ $(NULL)
+testplugindir = @mctestsdir@/twisted/plugins
+testplugin_LTLIBRARIES = \
+ $(plugins_list) \
+ $(NULL)
+if ENABLE_MCD_PLUGINS
+testplugin_LTLIBRARIES += test-plugin.la
+endif
+
+else
+
# A demo dispatcher plugin (new, minimal API)
-noinst_LTLIBRARIES = mcp-plugin.la mcp-account-diversion.la mcp-dbus-caller-permission.la
+noinst_LTLIBRARIES = $(plugins_list)
+if ENABLE_MCD_PLUGINS
+noinst_LTLIBRARIES += test-plugin.la
+endif
+
+endif
+
mcp_plugin_la_SOURCES = mcp-plugin.c
# these runes are necessary to make libtool build a dlopen()able shared
# library even though it's not going to be installed - the default for noinst
@@ -140,7 +212,6 @@ mcp_dbus_caller_permission_la_LDFLAGS = $(mcp_plugin_la_LDFLAGS)
if ENABLE_MCD_PLUGINS
# A demo dispatcher plugin (old API, with access to MCD internals)
-noinst_LTLIBRARIES += test-plugin.la
test_plugin_la_SOURCES = test-plugin.c
test_plugin_la_LDFLAGS = -module -shared -avoid-version -rpath @abs_builddir@
endif
@@ -197,7 +268,7 @@ endif
WITH_SESSION_BUS = \
sh $(srcdir)/tools/with-session-bus.sh \
--also-for-system \
- --config-file=tools/tmp-session-bus.conf --
+ --config-file=tools/servicedir-uninstalled/tmp-session-bus.conf --
COMBINED_TESTS_ENVIRONMENT = \
$(BASIC_TESTS_ENVIRONMENT) \
@@ -286,19 +357,10 @@ check-separate:
EXTRA_DIST = \
$(TWISTED_BASIC_TESTS) \
$(TWISTED_SEPARATE_TESTS) \
+ $(TWISTED_OTHER_FILES) \
accounts/README \
- telepathy/clients/README \
- telepathy/clients/AbiWord.client \
- telepathy/clients/Logger.client \
- telepathy/managers/fakecm.manager \
- telepathy/managers/onewitheverything.manager \
- telepathy/managers/README \
- constants.py \
- fakeclient.py \
- fakecm.py \
- fakeconnectivity.py \
- mctest.py \
- servicetest.py
+ run-test.sh.in \
+ $(NULL)
CLEANFILES = \
accounts/accounts.cfg \
diff --git a/tests/twisted/run-test.sh.in b/tests/twisted/run-test.sh.in
new file mode 100644
index 00000000..43760592
--- /dev/null
+++ b/tests/twisted/run-test.sh.in
@@ -0,0 +1,43 @@
+#!/bin/sh
+
+script_fullname=`readlink -e "@mctestsdir@/twisted/run-test.sh"`
+if [ `readlink -e "$0"` != "$script_fullname" ] ; then
+ echo "This script is meant to be installed"
+ exit 1
+fi
+
+export PYTHONPATH=@mctestsdir@/twisted
+
+export XDG_CONFIG_DIRS=@mctestsdir@/twisted
+export XDG_DATA_DIRS=@mctestsdir@/twisted
+
+TMP=/tmp/telepathy-mission-control-tests/tmp
+mkdir -p $TMP
+export XDG_CONFIG_HOME=$TMP
+export XDG_DATA_HOME=$TMP
+export XDG_CACHE_DIR=$TMP
+export XDG_CACHE_HOME=$TMP
+
+export G_DEBUG=fatal-criticals
+export MC_DEBUG=all
+export MC_FILTER_PLUGIN_DIR=@mctestsdir@/twisted/plugins
+export MC_ACCOUNT_DIR=/tmp/telepathy-mission-control-tests/accounts
+export MC_CLIENTS_DIR=@mctestsdir@/twisted/telepathy/clients
+export MC_MANAGER_DIR=@mctestsdir@/twisted/telepathy/managers
+export MC_FILTER_PLUGIN_DIR=@mctestsdir@/twisted/plugins
+mkdir -p $MC_ACCOUNT_DIR || exit 1
+
+if [ -n "$1" ] ; then
+ list="$1"
+else
+ list=$(cat @mctestsdir@/twisted/mc-twisted-tests.list)
+fi
+
+for i in $list ; do
+ echo "Testing $i"
+ sh @mctestsdir@/twisted/tools/with-session-bus.sh \
+ --config-file=@mctestsdir@/twisted/tools/servicedir-installed/tmp-session-bus.conf \
+ -- \
+ @PYTHON@ @mctestsdir@/twisted/$i
+done
+
diff --git a/tests/twisted/tools/Makefile.am b/tests/twisted/tools/Makefile.am
index 463a5b81..ffe04eff 100644
--- a/tests/twisted/tools/Makefile.am
+++ b/tests/twisted/tools/Makefile.am
@@ -1,38 +1,89 @@
+if ENABLE_INSTALLED_TESTS
+twistedtestsdir = @mctestsdir@/twisted/tools
+nobase_nodist_twistedtests_SCRIPTS = \
+ run-mc.sh \
+ fake-startup.sh \
+ $(NULL)
+nobase_dist_twistedtests_SCRIPTS = \
+ with-session-bus.sh \
+ $(NULL)
+nobase_nodist_twistedtests_DATA = \
+ $(installed_conf_files) \
+ $(installed_service_files) \
+ $(NULL)
+endif
+
exec-with-log.sh: exec-with-log.sh.in Makefile
$(AM_V_GEN)sed -e "s|[@]abs_top_srcdir[@]|@abs_top_srcdir@|g" \
-e "s|[@]abs_top_builddir[@]|@abs_top_builddir@|g" \
$< > $@
$(AM_V_at)chmod +x $@
-%.conf: %.conf.in
+run-mc.sh: run-mc.sh.in Makefile
+ $(AM_V_GEN)sed \
+ -e "s|[@]mctestsdir[@]|@mctestsdir@|g" \
+ -e "s|[@]libexecdir[@]|$(libexecdir)|g" \
+ $< > $@
+ @chmod +x $@
+
+servicedir-uninstalled/%.conf: servicedir-uninstalled/%.conf.in Makefile
+ $(AM_V_at)$(mkdir_p) servicedir-uninstalled
$(AM_V_GEN)sed -e "s|[@]abs_top_builddir[@]|@abs_top_builddir@|g" $< > $@
+servicedir-installed/%.conf: servicedir-installed/%.conf.in Makefile
+ $(AM_V_at)$(mkdir_p) servicedir-installed
+ $(AM_V_GEN)sed -e "s|[@]mctestsdir[@]|@mctestsdir@|g" $< > $@
+
# We don't use the full filename for the .in because > 99 character filenames
# in tarballs are non-portable (and automake 1.8 doesn't let us build
# non-archaic tarballs)
-org.freedesktop.Telepathy.%.service: %.service.in
+servicedir-uninstalled/org.freedesktop.Telepathy.%.service: servicedir-uninstalled/%.service.in Makefile
+ $(AM_V_at)$(mkdir_p) servicedir-uninstalled
$(AM_V_GEN)sed \
-e "s|[@]abs_top_srcdir[@]|@abs_top_srcdir@|g" \
-e "s|[@]abs_top_builddir[@]|@abs_top_builddir@|g" \
$< > $@
+servicedir-installed/org.freedesktop.Telepathy.%.service: servicedir-installed/%.service.in Makefile
+ $(AM_V_at)$(mkdir_p) servicedir-installed
+ $(AM_V_GEN)sed \
+ -e "s|[@]mctestsdir[@]|@mctestsdir@|g" \
+ $< > $@
+
# D-Bus service file for testing
-service_in_files = MissionControl5.service.in Client.AbiWord.service.in Client.Logger.service.in
-service_files = $(patsubst %.in,org.freedesktop.Telepathy.%, $(service_in_files))
+uninstalled_service_in_files = \
+ servicedir-uninstalled/MissionControl5.service.in \
+ servicedir-uninstalled/Client.AbiWord.service.in \
+ servicedir-uninstalled/Client.Logger.service.in
+uninstalled_service_files = $(patsubst servicedir-uninstalled/%.in,servicedir-uninstalled/org.freedesktop.Telepathy.%, $(uninstalled_service_in_files))
+installed_service_in_files = \
+ servicedir-installed/MissionControl5.service.in \
+ servicedir-installed/Client.AbiWord.service.in \
+ servicedir-installed/Client.Logger.service.in
+installed_service_files = $(patsubst servicedir-installed/%.in,servicedir-installed/org.freedesktop.Telepathy.%, $(installed_service_in_files))
# D-Bus config file for testing
-conf_in_files = tmp-session-bus.conf.in
-conf_files = $(conf_in_files:.conf.in=.conf)
+uninstalled_conf_in_files = servicedir-uninstalled/tmp-session-bus.conf.in
+uninstalled_conf_files = $(uninstalled_conf_in_files:.conf.in=.conf)
+installed_conf_in_files = servicedir-installed/tmp-session-bus.conf.in
+installed_conf_files = $(installed_conf_in_files:.conf.in=.conf)
-BUILT_SOURCES = $(service_files) $(conf_files) exec-with-log.sh
+BUILT_SOURCES = \
+ $(uninstalled_service_files) $(uninstalled_conf_files) \
+ $(installed_service_files) $(installed_conf_files) \
+ exec-with-log.sh
EXTRA_DIST = \
- $(service_in_files) \
- $(conf_in_files) \
+ $(uninstalled_service_in_files) \
+ $(uninstalled_conf_in_files) \
+ $(installed_service_in_files) \
+ $(installed_conf_in_files) \
exec-with-log.sh.in \
fake-startup.sh \
valgrind.supp \
- with-session-bus.sh
+ with-session-bus.sh \
+ run-mc.sh.in \
+ $(NULL)
CLEANFILES = \
$(BUILT_SOURCES) \
diff --git a/tests/twisted/tools/run-mc.sh.in b/tests/twisted/tools/run-mc.sh.in
new file mode 100755
index 00000000..458a4611
--- /dev/null
+++ b/tests/twisted/tools/run-mc.sh.in
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+ulimit -c unlimited
+
+@libexecdir@/mission-control-5
diff --git a/tests/twisted/tools/servicedir-installed/Client.AbiWord.service.in b/tests/twisted/tools/servicedir-installed/Client.AbiWord.service.in
new file mode 100644
index 00000000..219461ee
--- /dev/null
+++ b/tests/twisted/tools/servicedir-installed/Client.AbiWord.service.in
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.freedesktop.Telepathy.Client.AbiWord
+Exec=/bin/sh @mctestsdir@/twisted/tools/fake-startup.sh org.freedesktop.Telepathy.Client.AbiWord
diff --git a/tests/twisted/tools/servicedir-installed/Client.Logger.service.in b/tests/twisted/tools/servicedir-installed/Client.Logger.service.in
new file mode 100644
index 00000000..67f07942
--- /dev/null
+++ b/tests/twisted/tools/servicedir-installed/Client.Logger.service.in
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.freedesktop.Telepathy.Client.Logger
+Exec=/bin/sh @mctestsdir@/twisted/tools/fake-startup.sh org.freedesktop.Telepathy.Client.Logger
diff --git a/tests/twisted/tools/servicedir-installed/MissionControl5.service.in b/tests/twisted/tools/servicedir-installed/MissionControl5.service.in
new file mode 100644
index 00000000..db016b11
--- /dev/null
+++ b/tests/twisted/tools/servicedir-installed/MissionControl5.service.in
@@ -0,0 +1,3 @@
+[D-BUS Service]
+Name=org.freedesktop.Telepathy.MissionControl5
+Exec=@mctestsdir@/twisted/tools/run-mc.sh
diff --git a/tests/twisted/tools/tmp-session-bus.conf.in b/tests/twisted/tools/servicedir-installed/tmp-session-bus.conf.in
index 84d8d656..d3a71d82 100644
--- a/tests/twisted/tools/tmp-session-bus.conf.in
+++ b/tests/twisted/tools/servicedir-installed/tmp-session-bus.conf.in
@@ -10,7 +10,7 @@
<listen>unix:tmpdir=/tmp</listen>
- <servicedir>@abs_top_builddir@/tests/twisted/tools</servicedir>
+ <servicedir>@mctestsdir@/twisted/tools/servicedir-installed</servicedir>
<policy context="default">
<!-- Allow everything to be sent -->
diff --git a/tests/twisted/tools/Client.AbiWord.service.in b/tests/twisted/tools/servicedir-uninstalled/Client.AbiWord.service.in
index 300bd5b0..300bd5b0 100644
--- a/tests/twisted/tools/Client.AbiWord.service.in
+++ b/tests/twisted/tools/servicedir-uninstalled/Client.AbiWord.service.in
diff --git a/tests/twisted/tools/Client.Logger.service.in b/tests/twisted/tools/servicedir-uninstalled/Client.Logger.service.in
index 9fd4bfb1..9fd4bfb1 100644
--- a/tests/twisted/tools/Client.Logger.service.in
+++ b/tests/twisted/tools/servicedir-uninstalled/Client.Logger.service.in
diff --git a/tests/twisted/tools/MissionControl5.service.in b/tests/twisted/tools/servicedir-uninstalled/MissionControl5.service.in
index e8f41c41..e8f41c41 100644
--- a/tests/twisted/tools/MissionControl5.service.in
+++ b/tests/twisted/tools/servicedir-uninstalled/MissionControl5.service.in
diff --git a/tests/twisted/tools/servicedir-uninstalled/tmp-session-bus.conf.in b/tests/twisted/tools/servicedir-uninstalled/tmp-session-bus.conf.in
new file mode 100644
index 00000000..404484f2
--- /dev/null
+++ b/tests/twisted/tools/servicedir-uninstalled/tmp-session-bus.conf.in
@@ -0,0 +1,30 @@
+<!-- This configuration file controls the per-user-login-session message bus.
+ Add a session-local.conf and edit that rather than changing this
+ file directly. -->
+
+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"
+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+<busconfig>
+ <!-- Our well-known bus type, don't change this -->
+ <type>session</type>
+
+ <listen>unix:tmpdir=/tmp</listen>
+
+ <servicedir>@abs_top_builddir@/tests/twisted/tools/servicedir-uninstalled</servicedir>
+
+ <policy context="default">
+ <!-- Allow everything to be sent -->
+ <allow send_destination="*" eavesdrop="true"/>
+ <!-- Allow everything to be received -->
+ <allow eavesdrop="true"/>
+ <!-- Allow anyone to own anything -->
+ <allow own="*"/>
+ </policy>
+
+ <!-- This is included last so local configuration can override what's
+ in this standard file -->
+
+
+
+
+</busconfig>