Index: cjs/test/run-with-dbus
===================================================================
--- cjs.orig/test/run-with-dbus	2014-07-26 18:20:22.943434900 +0200
+++ cjs/test/run-with-dbus	2014-07-26 18:24:09.405063263 +0200
@@ -114,15 +114,12 @@
     unset DBUS_SESSION_BUS_ADDRESS
     unset DBUS_SESSION_BUS_PID
 
-    echo "Running dbus-launch --config-file=$CONFIG_FILE" >&2
-
-    eval `dbus-launch --exit-with-session --sh-syntax --config-file=$CONFIG_FILE 2>"$STDERR_LOGFILE"`
-
-    if test -z "$DBUS_SESSION_BUS_PID" ; then
-        die "Failed to launch message bus for test script to run"
+    # Use dbus-run-session because dbus-launch exits if stdin is not a tty.
+    if ! test -z "$START_SYSTEM_BUS" ; then
+        ARGS="--system"
     fi
-
-    echo "Started bus pid $DBUS_SESSION_BUS_PID at $DBUS_SESSION_BUS_ADDRESS" >&2
+    echo "Running dbus-run-session --config-file=$CONFIG_FILE -- $SCRIPTNAME $ARGS $WRAPPED_SCRIPT">&2
+    exec dbus-run-session --config-file=$CONFIG_FILE -- "$SCRIPTNAME" $ARGS "$WRAPPED_SCRIPT" "$@"
 fi
 
 if ! test -z "$START_SYSTEM_BUS" ; then
@@ -162,21 +159,12 @@
 echo "Running with dbus: $WRAPPED_SCRIPT $@ with stderr to $STDERR_LOGFILE" >&2
 $WRAPPED_SCRIPT "$@" 2>>"$STDERR_LOGFILE" || die "script \"$WRAPPED_SCRIPT\" failed"
 
-if ! test -z "$DBUS_SESSION_BUS_PID" ; then
-    kill -TERM $DBUS_SESSION_BUS_PID || die "Message bus vanished! should not have happened" && echo "Killed daemon $DBUS_SESSION_BUS_PID" >&2
-fi
-
 if ! test -z "$DBUS_SYSTEM_BUS_PID" ; then
     kill -TERM $DBUS_SYSTEM_BUS_PID || die "Message bus vanished! should not have happened" && echo "Killed daemon $DBUS_SYSTEM_BUS_PID" >&2
 fi
 
 sleep 2
 
-## be sure it really died
-if ! test -z "$DBUS_SESSION_BUS_PID" ; then
-    kill -9 $DBUS_SESSION_BUS_PID > /dev/null 2>&1 || true
-fi
-
 if ! test -z "$DBUS_SYSTEM_BUS_PID" ; then
     kill -9 $DBUS_SYSTEM_BUS_PID > /dev/null 2>&1 || true
 fi
