diff options
15 files changed, 251 insertions, 31 deletions
@@ -83,11 +83,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 562ca9d4..b8420de5 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" @@ -435,6 +449,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/account-manager/update-parameters.py b/tests/twisted/account-manager/update-parameters.py index 16c94d85..337ea73b 100644 --- a/tests/twisted/account-manager/update-parameters.py +++ b/tests/twisted/account-manager/update-parameters.py @@ -248,7 +248,7 @@ def test(q, bus, mc): not_yet = ret.value[0] assertEquals([], not_yet) - accounts_dir = os.environ['MC_ACCOUNT_DIR'] + cache_dir = os.environ['XDG_CACHE_HOME'] # fd.o #28557: when the file has been updated, the account parameter # has its two backslashes doubled to 4 (because of the .desktop encoding), @@ -257,7 +257,7 @@ def test(q, bus, mc): updated = False while i < 500: - for line in open(accounts_dir + + for line in open(cache_dir + '/mcp-test-diverted-account-plugin.conf', 'r'): if line.startswith('param-account=') and '\\' in line: assertEquals(r'param-account=\\\\' + '\n', line) 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> |