#!/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" \ --dl-search-path="$(dirname $SCRIPTNAME)/.libs/" \ & # wait a few seconds to let the daemon start! sleep 5 unset DISPLAY EXIT_CODE=0 for ONE_TEST in $@; do ${ONE_TEST} || EXIT_CODE=1 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 $EXIT_CODE