From 0e3eb48f14cc31f6f739ef9fe1d1d44778773707 Mon Sep 17 00:00:00 2001 From: Cosimo Alfarano Date: Mon, 10 Jan 2011 18:16:49 +0000 Subject: Add test/dbus testsuites, as tp-glib does. Importing only the needed modules from tests/lib/ --- tools/test-wrapper.sh | 30 +++++++++++++++ tools/valgrind.mk | 13 +++++++ tools/with-session-bus.sh | 94 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 137 insertions(+) create mode 100755 tools/test-wrapper.sh create mode 100644 tools/valgrind.mk create mode 100644 tools/with-session-bus.sh (limited to 'tools') diff --git a/tools/test-wrapper.sh b/tools/test-wrapper.sh new file mode 100755 index 0000000..9490067 --- /dev/null +++ b/tools/test-wrapper.sh @@ -0,0 +1,30 @@ +#!/bin/sh +# Make tests shut up. On success, if stdout is a tty, we only output messages +# about skipped tests; on failure, or if stdout is a file or pipe, we output +# the lot. +# +# Usage: test-wrapper.sh PROGRAM [ARGS...] + +set -e + +if test -t 1 && test "z$CHECK_VERBOSE" = z; then + : # continue with the output-suppressed code path, below +else + "$@" || e=$? + exit $e +fi + +e=0 +"$@" > capture-$$.log 2>&1 || e=$? +if test z$e = z0; then + grep -i skipped capture-$$.log || true + rm -f capture-$$.log +else + cat capture-$$.log + exit $e +fi + +# Copyright © 2010 Collabora Ltd. +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. There is no warranty. diff --git a/tools/valgrind.mk b/tools/valgrind.mk new file mode 100644 index 0000000..25a3488 --- /dev/null +++ b/tools/valgrind.mk @@ -0,0 +1,13 @@ +VALGRIND = valgrind --tool=memcheck \ + --verbose \ + --leak-check=full \ + --leak-resolution=high \ + --suppressions=$(top_srcdir)/tools/telepathy-glib.supp \ + --child-silent-after-fork=yes \ + --num-callers=20 \ + --gen-suppressions=all + +# other potentially interesting options: +# --show-reachable=yes reachable objects (many!) +# --read-var-info=yes better diagnostics from DWARF3 info +# --track-origins=yes better diagnostics for uninit values (slow) diff --git a/tools/with-session-bus.sh b/tools/with-session-bus.sh new file mode 100644 index 0000000..063bd7e --- /dev/null +++ b/tools/with-session-bus.sh @@ -0,0 +1,94 @@ +#!/bin/sh +# with-session-bus.sh - run a program with a temporary D-Bus session daemon +# +# The canonical location of this program is the telepathy-glib tools/ +# directory, please synchronize any changes with that copy. +# +# Copyright (C) 2007-2008 Collabora Ltd. +# +# Copying and distribution of this file, with or without modification, +# are permitted in any medium without royalty provided the copyright +# notice and this notice are preserved. + +set -e + +me=with-session-bus + +dbus_daemon_args="--print-address=5 --print-pid=6 --fork" +sleep=0 + +usage () +{ + echo "usage: $me [options] -- program [program_options]" >&2 + echo "Requires write access to the current directory." >&2 + echo "" >&2 + echo "If \$WITH_SESSION_BUS_FORK_DBUS_MONITOR is set, fork dbus-monitor" >&2 + echo "with the arguments in \$WITH_SESSION_BUS_FORK_DBUS_MONITOR_OPT." >&2 + echo "The output of dbus-monitor is saved in $me-.dbus-monitor-logs" >&2 + exit 2 +} + +while test "z$1" != "z--"; do + case "$1" in + --sleep=*) + sleep="$1" + sleep="${sleep#--sleep=}" + shift + ;; + --session) + dbus_daemon_args="$dbus_daemon_args --session" + shift + ;; + --config-file=*) + # FIXME: assumes config file doesn't contain any special characters + dbus_daemon_args="$dbus_daemon_args $1" + shift + ;; + *) + usage + ;; + esac +done +shift +if test "z$1" = "z"; then usage; fi + +exec 5> $me-$$.address +exec 6> $me-$$.pid + +cleanup () +{ + pid=`head -n1 $me-$$.pid` + if test -n "$pid" ; then + echo "Killing temporary bus daemon: $pid" >&2 + kill -INT "$pid" + fi + rm -f $me-$$.address + rm -f $me-$$.pid +} + +trap cleanup INT HUP TERM +dbus-daemon $dbus_daemon_args + +{ echo -n "Temporary bus daemon is "; cat $me-$$.address; } >&2 +{ echo -n "Temporary bus daemon PID is "; head -n1 $me-$$.pid; } >&2 + +e=0 +DBUS_SESSION_BUS_ADDRESS="`cat $me-$$.address`" +export DBUS_SESSION_BUS_ADDRESS + +if [ -n "$WITH_SESSION_BUS_FORK_DBUS_MONITOR" ] ; then + echo -n "Forking dbus-monitor $WITH_SESSION_BUS_FORK_DBUS_MONITOR_OPT" >&2 + dbus-monitor $WITH_SESSION_BUS_FORK_DBUS_MONITOR_OPT \ + > $me-$$.dbus-monitor-logs 2>&1 & +fi + +"$@" || e=$? + +if test $sleep != 0; then + sleep $sleep +fi + +trap - INT HUP TERM +cleanup + +exit $e -- cgit v1.2.3