commit 205d6510b5d6c2dad2983b9c1579e51d9f0961b5 Author: Colin Walters Date: Thu Dec 4 14:27:21 2008 -0500 Infrastructure for testing a "system like" bus in test suite The tmp-session-like-system.conf bus configuration has a security policy intended to mirror that of the system bus. This allows testing policy rules. diff --git a/test/name-test/Makefile.am b/test/name-test/Makefile.am index 17e05be..fee1e60 100644 --- a/test/name-test/Makefile.am +++ b/test/name-test/Makefile.am @@ -5,7 +5,7 @@ INCLUDES=-I$(top_srcdir) $(DBUS_CLIENT_CFLAGS) $(DBUS_GLIB_CFLAGS) $(DBUS_TEST_C ## TESTS if DBUS_BUILD_TESTS TESTS_ENVIRONMENT=DBUS_TOP_BUILDDIR=@abs_top_builddir@ DBUS_TOP_SRCDIR=@abs_top_srcdir@ -TESTS=run-test.sh +TESTS=run-test.sh run-test-systemserver.sh else TESTS= endif diff --git a/test/name-test/run-test-systemserver.sh b/test/name-test/run-test-systemserver.sh new file mode 100755 index 0000000..fd82326 --- /dev/null +++ b/test/name-test/run-test-systemserver.sh @@ -0,0 +1,41 @@ +#! /bin/sh +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 +} + +SCRIPTNAME=$0 +MODE=$1 + +## so the tests can complain if you fail to use the script to launch them +DBUS_TEST_NAME_RUN_TEST_SCRIPT=1 +export DBUS_TEST_NAME_RUN_TEST_SCRIPT + +SOURCE_CONFIG_FILE=$DBUS_TOP_SRCDIR/test/name-test/tmp-session-like-system.conf +export SOURCE_CONFIG_FILE +# Rerun ourselves with tmp session bus if we're not already +if test -z "$DBUS_TEST_NAME_IN_SYS_RUN_TEST"; then + DBUS_TEST_NAME_IN_SYS_RUN_TEST=1 + export DBUS_TEST_NAME_IN_SYS_RUN_TEST + exec $DBUS_TOP_SRCDIR/tools/run-with-tmp-session-bus.sh $SCRIPTNAME $MODE +fi + +if test -n "$DBUS_TEST_MONITOR"; then + dbus-monitor --session & +fi + +echo "running test-expected-echo-fail" +${DBUS_TOP_BUILDDIR}/libtool --mode=execute $DEBUG $DBUS_TOP_BUILDDIR/tools/dbus-send --print-reply --dest=org.freedesktop.DBus.TestSuiteEchoService /org/freedesktop/TestSuite org.freedesktop.TestSuite.Echo string:hi >echo-error-output.tmp 2>&1 +if ! grep -q 'DBus.Error' echo-error-output.tmp; then + echo "Didn't get expected failure; output was:" + echo "=====" + cat echo-error-output.tmp + echo "=====" + exit 1 +fi diff --git a/test/name-test/tmp-session-like-system.conf b/test/name-test/tmp-session-like-system.conf new file mode 100644 index 0000000..9e96459 --- /dev/null +++ b/test/name-test/tmp-session-like-system.conf @@ -0,0 +1,80 @@ + + + + + + session + + + + + unix:tmpdir=/tmp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + session.d + + + session-local.conf + + contexts/dbus_contexts + + + + + 1000000000 + 1000000000 + 1000000000 + 120000 + 240000 + 100000 + 10000 + 100000 + 10000 + 50000 + 50000 + 50000 + 300000 + + diff --git a/tools/run-with-tmp-session-bus.sh b/tools/run-with-tmp-session-bus.sh index f95ee62..982184a 100755 --- a/tools/run-with-tmp-session-bus.sh +++ b/tools/run-with-tmp-session-bus.sh @@ -26,8 +26,11 @@ SERVICE_DIR="$DBUS_TOP_BUILDDIR/test/data/valid-service-files" ESCAPED_SERVICE_DIR=`echo $SERVICE_DIR | sed -e 's/\//\\\\\\//g'` echo "escaped service dir is: $ESCAPED_SERVICE_DIR" >&2 +if test -z "$SOURCE_CONFIG_FILE"; then + SOURCE_CONFIG_FILE="$DBUS_TOP_BUILDDIR/bus/session.conf"; +fi ## create a configuration file based on the standard session.conf -cat $DBUS_TOP_BUILDDIR/bus/session.conf | \ +cat $SOURCE_CONFIG_FILE | \ sed -e 's/'$ESCAPED_SERVICE_DIR'<\/servicedir>/g' | \ sed -e 's/ $CONFIG_FILE