]> git.ipfire.org Git - thirdparty/dbus.git/commitdiff
Run name-test tests under the TAP driver
authorSimon McVittie <simon.mcvittie@collabora.co.uk>
Wed, 1 Apr 2015 12:27:46 +0000 (13:27 +0100)
committerSimon McVittie <simon.mcvittie@collabora.co.uk>
Thu, 16 Apr 2015 12:06:32 +0000 (13:06 +0100)
Reviewed-by: Philip Withnall <philip.withnall@collabora.co.uk>
Bug: https://bugs.freedesktop.org/show_bug.cgi?id=89846

test/name-test/Makefile.am
test/name-test/run-test-systemserver.sh
test/name-test/run-test.sh

index ad637ecd134878173298fef9f85bf24eab1c06c9..3564c8514fff35c59e2c811bf0c71ac5550c48e2 100644 (file)
@@ -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
index 403c0e5b7e52361e0870ff386319835f78119fa5..9926cad6c5100943a2a56191bfed19653bebaa3a 100755 (executable)
@@ -17,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
@@ -25,22 +25,65 @@ 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
+# Translate a command and exit status into TAP syntax.
+# Usage: interpret_result $? description-of-test
+# Uses global variable $test_num.
+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 3
+  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
+    sed -e 's/^/#  /' < output.tmp
+    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)"
+  rm -f output.tmp
+}
+
+py_test () {
+  t="$1"
+  shift
+  if test "x$PYTHON" = "x:"; then
+    interpret_result 77 "$t" "(Python interpreter not found)"
+  else
+    e=0
+    echo "# running test $t"
+    $PYTHON "$DBUS_TOP_SRCDIR/test/name-test/$t" "$@" >&2 || e=$?
+    interpret_result "$e" "$t" "$@"
+  fi
+}
+
+test_num=1
+# TAP syntax: we plan to run 2 tests
+echo "1..2"
 
-exit 0
+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
index c0730bee8fdd1b9879574589dbd236e71f56f7fd..1e257a163772e2f2ce964dd92a4ebfc7696f57b3 100755 (executable)
@@ -15,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
@@ -23,31 +23,60 @@ 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"
+# Translate a command and exit status into TAP syntax.
+# Usage: interpret_result $? description-of-test
+# Uses global variable $test_num.
+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-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"
+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-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"
+py_test () {
+  t="$1"
+  shift
+  if test "x$PYTHON" = "x:"; then
+    interpret_result 77 "$t" "(Python interpreter not found)"
+  else
+    e=0
+    echo "# running test $t"
+    $PYTHON "$DBUS_TOP_SRCDIR/test/name-test/$t" "$@" >&2 || e=$?
+    interpret_result "$e" "$t" "$@"
+  fi
+}
 
-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"
+test_num=1
+# TAP test plan: we will run 8 tests
+echo "1..8"
 
-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"
-
-echo "running test-shutdown"
-${DBUS_TOP_BUILDDIR}/libtool --mode=execute $DEBUG $DBUS_TOP_BUILDDIR/test/name-test/test-shutdown || die "test-shutdown failed"
-
-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
-
-echo "running test-autolaunch"
-${DBUS_TOP_BUILDDIR}/libtool --mode=execute $DEBUG $DBUS_TOP_BUILDDIR/test/name-test/test-autolaunch || die "test-autolaunch failed"
+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