From c44abecb086b8436f3177142400f293230ad0017 Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Mon, 2 Mar 2015 12:09:53 +0000 Subject: [PATCH 8/9] Run name-test tests under the TAP driver --- test/name-test/Makefile.am | 5 ++ test/name-test/run-test-systemserver.sh | 83 ++++++++++++++++++++---------- test/name-test/run-test.sh | 90 +++++++++++++++++++-------------- 3 files changed, 112 insertions(+), 66 deletions(-) diff --git a/test/name-test/Makefile.am b/test/name-test/Makefile.am index c6611aa..5cab851 100644 --- a/test/name-test/Makefile.am +++ b/test/name-test/Makefile.am @@ -7,6 +7,11 @@ AM_CPPFLAGS = \ # if assertions are enabled, improve backtraces AM_LDFLAGS = @R_DYNAMIC_LDFLAG@ +TEST_EXTENSIONS = .sh + +SH_LOG_DRIVER = env AM_TAP_AWK='$(AWK)' $(SHELL) $(top_srcdir)/tap-driver.sh +SH_LOG_COMPILER = $(SHELL) + ## note that TESTS has special meaning (stuff to use in make check) ## so if adding tests not to be run in make check, don't add them to ## TESTS diff --git a/test/name-test/run-test-systemserver.sh b/test/name-test/run-test-systemserver.sh index 90c0372..8a084d3 100755 --- a/test/name-test/run-test-systemserver.sh +++ b/test/name-test/run-test-systemserver.sh @@ -1,14 +1,4 @@ #! /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 @@ -27,7 +17,7 @@ if test -z "$DBUS_TEST_NAME_IN_SYS_RUN_TEST"; then fi if test -n "$DBUS_TEST_MONITOR"; then - dbus-monitor --session & + dbus-monitor --session >&2 & fi XDG_RUNTIME_DIR="$DBUS_TOP_BUILDDIR"/test/XDG_RUNTIME_DIR @@ -35,22 +25,59 @@ test -d "$XDG_RUNTIME_DIR" || mkdir "$XDG_RUNTIME_DIR" chmod 0700 "$XDG_RUNTIME_DIR" export XDG_RUNTIME_DIR -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 +interpret_result () { + e="$1" + shift + case "$e" in + (0) + echo "ok $test_num $*" + ;; + (77) + echo "ok $test_num # SKIP $*" + ;; + (*) + echo "not ok $test_num $*" + ;; + esac + test_num=$(( $test_num + 1 )) +} -echo "running test echo signal" -if test "x$PYTHON" = "x:"; then - echo "Skipped test-echo-signal: Python interpreter not found" -elif ! $PYTHON $DBUS_TOP_SRCDIR/test/name-test/test-wait-for-echo.py; then - echo "Failed test-wait-for-echo" - exit 1 -fi +dbus_send_test () { + t="$1" + expected_exit="$2" + phrase="$3" + shift + shift + shift + e=0 + echo "# running test $t" + "${DBUS_TOP_BUILDDIR}/libtool" --mode=execute $DEBUG "$DBUS_TOP_BUILDDIR/tools/dbus-send" "$@" > output.tmp 2>&1 || e=$? + if [ $e != $expected_exit ]; then + interpret_result "1" "$t" "$@" "(expected exit status $expected_exit, got $e)" + return + fi + echo "# parsing results of test $t" + if ! grep -q "$phrase" output.tmp; then + sed -e 's/^/# /' < output.tmp + interpret_result "1" "$t" "$@" "(Did not see \"$phrase\" in output)" + return + fi + interpret_result "0" "$t" "$@" "(Saw \"$phrase\" in output as expected)" +} + +py_test () { + t="$1" + shift + if test "x$PYTHON" = "x:"; then + interpret_result 77 "$t" "(Python interpreter not found)" + else + e=0 + $PYTHON "$DBUS_TOP_SRCDIR/test/name-test/$t" "$@" >&2 || e=$? + interpret_result "$e" "$t" "$@" + fi +} -exit 0 +test_num=1 +echo "1..2" +dbus_send_test test-expected-echo-fail 1 DBus.Error --print-reply --dest=org.freedesktop.DBus.TestSuiteEchoService /org/freedesktop/TestSuite org.freedesktop.TestSuite.Echo string:hi +py_test test-wait-for-echo.py diff --git a/test/name-test/run-test.sh b/test/name-test/run-test.sh index 84379c4..ea7b04a 100755 --- a/test/name-test/run-test.sh +++ b/test/name-test/run-test.sh @@ -1,17 +1,5 @@ #! /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 @@ -27,7 +15,7 @@ if test -z "$DBUS_TEST_NAME_IN_RUN_TEST"; then fi if test -n "$DBUS_TEST_MONITOR"; then - dbus-monitor --session & + dbus-monitor --session >&2 & fi XDG_RUNTIME_DIR="$DBUS_TOP_BUILDDIR"/test/XDG_RUNTIME_DIR @@ -35,31 +23,57 @@ test -d "$XDG_RUNTIME_DIR" || mkdir "$XDG_RUNTIME_DIR" chmod 0700 "$XDG_RUNTIME_DIR" export XDG_RUNTIME_DIR -echo "running test-ids" -${DBUS_TOP_BUILDDIR}/libtool --mode=execute $DEBUG $DBUS_TOP_BUILDDIR/test/name-test/test-ids || die "test-ids failed" - -echo "running test-pending-call-dispatch" -${DBUS_TOP_BUILDDIR}/libtool --mode=execute $DEBUG $DBUS_TOP_BUILDDIR/test/name-test/test-pending-call-dispatch || die "test-pending-call-dispatch failed" - -echo "running test-pending-call-timeout" -${DBUS_TOP_BUILDDIR}/libtool --mode=execute $DEBUG $DBUS_TOP_BUILDDIR/test/name-test/test-pending-call-timeout || die "test-pending-call-timeout failed" - -echo "running test-threads-init" -${DBUS_TOP_BUILDDIR}/libtool --mode=execute $DEBUG $DBUS_TOP_BUILDDIR/test/name-test/test-threads-init || die "test-threads-init failed" - -echo "running test-privserver-client" -${DBUS_TOP_BUILDDIR}/libtool --mode=execute $DEBUG $DBUS_TOP_BUILDDIR/test/name-test/test-privserver-client || die "test-privserver-client failed" +interpret_result () { + e="$1" + shift + case "$e" in + (0) + echo "ok $test_num $*" + ;; + (77) + echo "ok $test_num # SKIP $*" + ;; + (*) + echo "not ok $test_num $*" + ;; + esac + test_num=$(( $test_num + 1 )) +} -echo "running test-shutdown" -${DBUS_TOP_BUILDDIR}/libtool --mode=execute $DEBUG $DBUS_TOP_BUILDDIR/test/name-test/test-shutdown || die "test-shutdown failed" +c_test () { + t="$1" + shift + e=0 + echo "# running test $t" + if ! "${DBUS_TOP_BUILDDIR}/libtool" --mode=execute $DEBUG "$DBUS_TOP_BUILDDIR/test/name-test/$t" "$@" >&2; then + e=$? + echo "# exit status $e" + fi + interpret_result "$e" "$t" "$@" +} -echo "running test activation forking" -if test "x$PYTHON" = "x:"; then - echo "Skipped test-activation-forking: Python interpreter not found" -elif ! $PYTHON $DBUS_TOP_SRCDIR/test/name-test/test-activation-forking.py; then - echo "Failed test-activation-forking" - exit 1 -fi +py_test () { + t="$1" + shift + if test "x$PYTHON" = "x:"; then + interpret_result 77 "$t" "(Python interpreter not found)" + else + e=0 + if ! $PYTHON "$DBUS_TOP_SRCDIR/test/name-test/$t" "$@" >&2; then + e=$? + echo "# exit status $e" + fi + interpret_result "$e" "$t" "$@" + fi +} -echo "running test-autolaunch" -${DBUS_TOP_BUILDDIR}/libtool --mode=execute $DEBUG $DBUS_TOP_BUILDDIR/test/name-test/test-autolaunch || die "test-autolaunch failed" +test_num=1 +echo "1..8" +c_test test-ids +c_test test-pending-call-dispatch +c_test test-pending-call-timeout +c_test test-threads-init +c_test test-privserver-client +c_test test-shutdown +py_test test-activation-forking.py +c_test test-autolaunch -- 2.1.4