diff options
author | Deng Zhengrong <dzrongg@gmail.com> | 2012-07-23 13:12:46 +0800 |
---|---|---|
committer | Arun Raghavan <arun.raghavan@collabora.co.uk> | 2012-08-04 08:28:48 +0200 |
commit | 84ffc41bfb9c9f3c7eaa7ff6e106ee2fccb5ea81 (patch) | |
tree | 9937e58d09aeb520e38ae1e403be9f6607c8ccf2 | |
parent | 89a6fd740fd28c538016cff74655121996c8bc85 (diff) |
tests: enable to test standalone pulseaudio daemon
With this fix, `check-daemon` doesn't need a system-wide running pulseaudio
anymore.
The method to use is to invoke `make check-daemon` under `src/` and it just
works! :)
-rw-r--r-- | src/Makefile.am | 6 | ||||
-rwxr-xr-x | src/tests/test-daemon.sh | 70 |
2 files changed, 73 insertions, 3 deletions
diff --git a/src/Makefile.am b/src/Makefile.am index 0957fb9cc..aba850cb0 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -303,11 +303,11 @@ TESTS = $(TESTS_default) if BUILD_TESTS_DEFAULT noinst_PROGRAMS = $(TESTS_default) $(TESTS_norun) $(TESTS_daemon) else -check_PROGRAMS = $(TESTS_default) $(TESTS_norun) $(TESTS_daemon) +check_PROGRAMS = $(TESTS_default) $(TESTS_norun) endif -check-daemon: - $(MAKE) check TESTS="$(TESTS_daemon)" +check-daemon: $(TESTS_daemon) + PATH=$(builddir):${PATH} $(top_srcdir)/src/tests/test-daemon.sh $(TESTS_daemon) mainloop_test_SOURCES = tests/mainloop-test.c mainloop_test_CFLAGS = $(AM_CFLAGS) $(LIBCHECK_CFLAGS) diff --git a/src/tests/test-daemon.sh b/src/tests/test-daemon.sh new file mode 100755 index 000000000..3347b4282 --- /dev/null +++ b/src/tests/test-daemon.sh @@ -0,0 +1,70 @@ +#!/bin/sh +# +# This script is modified from dbus's run-with-temp-session-bus.sh. +# + +SCRIPTNAME=$0 + +die() +{ + if ! test -z "$DBUS_SESSION_BUS_PID" ; then + echo "killing message bus "$DBUS_SESSION_BUS_PID >&2 + kill -9 $DBUS_SESSION_BUS_PID + fi + echo $SCRIPTNAME: $* >&2 + exit 1 +} + +## convenient to be able to ctrl+C without leaking the message bus process +trap 'die "Received SIGINT"' INT + +unset DBUS_SESSION_BUS_ADDRESS +unset DBUS_SESSION_BUS_PID + +echo "Running dbus-launch --sh-syntax" >&2 + +eval `dbus-launch --sh-syntax` + +if test -z "$DBUS_SESSION_BUS_PID" ; then + die "Failed to launch message bus for test script to run" +fi + +echo "Started bus pid $DBUS_SESSION_BUS_PID at $DBUS_SESSION_BUS_ADDRESS" >&2 + +TEMP_PULSE_DIR=`mktemp -d` +export PULSE_RUNTIME_PATH=${TEMP_PULSE_DIR} + +# this script would be called inside src/ directory, so we need to use the correct path. +# notice that for tests, we don't load ALSA related modules. +pulseaudio -n \ + --log-target=file:${PWD}/pulse-daemon.log \ + --log-level=debug \ + --load="module-null-sink" \ + --load="module-null-source" \ + --load="module-suspend-on-idle" \ + --load="module-native-protocol-unix" \ + --load="module-cli-protocol-unix" \ + & + +# wait a few seconds to let the daemon start! +sleep 5 + +unset DISPLAY + +for ONE_TEST in $@; do + ${ONE_TEST} +done + +# terminate the designated pulseaudio daemon +pacmd exit + +wait + +kill -TERM $DBUS_SESSION_BUS_PID || die "Message bus vanished! should not have happened" && echo "Killed daemon $DBUS_SESSION_BUS_PID" >&2 + +sleep 2 + +## be sure it really died +kill -9 $DBUS_SESSION_BUS_PID > /dev/null 2>&1 || true + +exit 0 |