|
Packit Service |
def718 |
#!/bin/sh
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
# Make sure srcdir is an absolute path. Supply the variable
|
|
Packit Service |
def718 |
# if it does not exist. We want to be able to run the tests
|
|
Packit Service |
def718 |
# stand-alone!!
|
|
Packit Service |
def718 |
#
|
|
Packit Service |
def718 |
srcdir=${srcdir-.}
|
|
Packit Service |
def718 |
if test ! -d $srcdir ; then
|
|
Packit Service |
def718 |
echo "test-defs.sh: installation error" 1>&2
|
|
Packit Service |
def718 |
exit 1
|
|
Packit Service |
def718 |
fi
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
# Use absolute paths
|
|
Packit Service |
def718 |
case "$srcdir" in
|
|
Packit Service |
def718 |
/* | [A-Za-z]:\\*) ;;
|
|
Packit Service |
def718 |
*) srcdir=`\cd $srcdir && pwd` ;;
|
|
Packit Service |
def718 |
esac
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
case "$top_builddir" in
|
|
Packit Service |
def718 |
/* | [A-Za-z]:\\*) ;;
|
|
Packit Service |
def718 |
*) top_builddir=`\cd ${top_builddir-..} && pwd` ;;
|
|
Packit Service |
def718 |
esac
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
top_builddir=${top_builddir}/tests
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
progname=`echo "$0" | sed 's,^.*/,,'`
|
|
Packit Service |
def718 |
testname=`echo "$progname" | sed 's,-.*$,,'`
|
|
Packit Service |
def718 |
testsubdir=${testsubdir-testSubDir}
|
|
Packit Service |
def718 |
testsubdir=${testsubdir}/${progname}
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
# User can set VERBOSE to cause output redirection
|
|
Packit Service |
def718 |
case "$VERBOSE" in
|
|
Packit Service |
def718 |
[Nn]|[Nn][Oo]|0|"")
|
|
Packit Service |
def718 |
VERBOSE=0
|
|
Packit Service |
def718 |
exec > /dev/null
|
|
Packit Service |
def718 |
;;
|
|
Packit Service |
def718 |
[Yy]|[Yy][Ee][Ss])
|
|
Packit Service |
def718 |
VERBOSE=1
|
|
Packit Service |
def718 |
;;
|
|
Packit Service |
def718 |
esac
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
rm -rf "$testsubdir" > /dev/null 2>&1
|
|
Packit Service |
def718 |
mkdir -p "$testsubdir"
|
|
Packit Service |
def718 |
CURDIR=$(pwd)
|
|
Packit Service |
def718 |
cd "$testsubdir" \
|
|
Packit Service |
def718 |
|| { echo "Cannot make or change into $testsubdir"; exit 1; }
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
echo "=== Running test $progname"
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
CMP="${CMP-cmp}"
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
use_valgrind=${USE_VALGRIND-1}
|
|
Packit Service |
def718 |
case "${use_valgrind}" in
|
|
Packit Service |
def718 |
[0Nn]*)
|
|
Packit Service |
def718 |
use_valgrind=0
|
|
Packit Service |
def718 |
;;
|
|
Packit Service |
def718 |
*)
|
|
Packit Service |
def718 |
use_valgrind=1
|
|
Packit Service |
def718 |
;;
|
|
Packit Service |
def718 |
esac
|
|
Packit Service |
def718 |
valgrind_path=$(which valgrind 2> /dev/null)
|
|
Packit Service |
def718 |
if [ -z "${valgrind_path}" -o ! -x "${valgrind_path}" ] ; then
|
|
Packit Service |
def718 |
use_valgrind=0
|
|
Packit Service |
def718 |
fi
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
#
|
|
Packit Service |
def718 |
# This is a common function to check the results of a test program
|
|
Packit Service |
def718 |
# that is intended to generate consistent output across runs.
|
|
Packit Service |
def718 |
#
|
|
Packit Service |
def718 |
# ${top_builddir} must be set to the top level build directory.
|
|
Packit Service |
def718 |
#
|
|
Packit Service |
def718 |
# Output will be written to the current directory.
|
|
Packit Service |
def718 |
#
|
|
Packit Service |
def718 |
# It must be passed the name of the test command to run, which must be present
|
|
Packit Service |
def718 |
# in the ${top_builddir} directory.
|
|
Packit Service |
def718 |
#
|
|
Packit Service |
def718 |
# It will compare the output of running that against <name of command>.expected
|
|
Packit Service |
def718 |
#
|
|
Packit Service |
def718 |
run_output_test()
|
|
Packit Service |
def718 |
{
|
|
Packit Service |
def718 |
if [ "$1" = "-o" ] ; then
|
|
Packit Service |
def718 |
TEST_OUTPUT="$2"
|
|
Packit Service |
def718 |
shift
|
|
Packit Service |
def718 |
shift
|
|
Packit Service |
def718 |
fi
|
|
Packit Service |
def718 |
TEST_COMMAND="$1"
|
|
Packit Service |
def718 |
shift
|
|
Packit Service |
def718 |
if [ -z "${TEST_OUTPUT}" ] ; then
|
|
Packit Service |
def718 |
TEST_OUTPUT=${TEST_COMMAND}
|
|
Packit Service |
def718 |
fi
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
REDIR_OUTPUT="> \"${TEST_OUTPUT}.out\""
|
|
Packit Service |
def718 |
if [ $VERBOSE -gt 1 ] ; then
|
|
Packit Service |
def718 |
REDIR_OUTPUT="| tee \"${TEST_OUTPUT}.out\""
|
|
Packit Service |
def718 |
fi
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
if [ $use_valgrind -eq 1 ] ; then
|
|
Packit Service |
def718 |
eval valgrind --tool=memcheck \
|
|
Packit Service |
def718 |
--trace-children=yes \
|
|
Packit Service |
def718 |
--demangle=yes \
|
|
Packit Service |
def718 |
--log-file="${TEST_OUTPUT}.vg.out" \
|
|
Packit Service |
def718 |
--leak-check=full \
|
|
Packit Service |
def718 |
--show-reachable=yes \
|
|
Packit Service |
def718 |
--run-libc-freeres=yes \
|
|
Packit Service |
def718 |
"\"${top_builddir}/${TEST_COMMAND}\"" \"\$@\" ${REDIR_OUTPUT}
|
|
Packit Service |
def718 |
err=$?
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
else
|
|
Packit Service |
def718 |
eval "\"${top_builddir}/${TEST_COMMAND}"\" \"\$@\" ${REDIR_OUTPUT}
|
|
Packit Service |
def718 |
err=$?
|
|
Packit Service |
def718 |
fi
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
if [ $err -ne 0 ] ; then
|
|
Packit Service |
def718 |
echo "ERROR: \"${TEST_COMMAND} $@\" exited with non-zero exit status: $err" 1>&2
|
|
Packit Service |
def718 |
fi
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
if [ $use_valgrind -eq 1 ] ; then
|
|
Packit Service |
def718 |
if ! tail -1 "${TEST_OUTPUT}.vg.out" | grep -q "ERROR SUMMARY: 0 errors" ; then
|
|
Packit Service |
def718 |
echo "ERROR: valgrind found errors during execution:" 1>&2
|
|
Packit Service |
def718 |
cat "${TEST_OUTPUT}.vg.out"
|
|
Packit Service |
def718 |
err=1
|
|
Packit Service |
def718 |
fi
|
|
Packit Service |
def718 |
fi
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
if ! "$CMP" -s "${srcdir}/${TEST_OUTPUT}.expected" "${TEST_OUTPUT}.out" ; then
|
|
Packit Service |
def718 |
echo "ERROR: \"${TEST_COMMAND} $@\" (${TEST_OUTPUT}) failed (set VERBOSE=1 to see full output):" 1>&2
|
|
Packit Service |
def718 |
(cd "${CURDIR}" ; set -x ; diff "${srcdir}/${TEST_OUTPUT}.expected" "$testsubdir/${TEST_OUTPUT}.out")
|
|
Packit Service |
def718 |
echo "cp \"$testsubdir/${TEST_OUTPUT}.out\" \"${srcdir}/${TEST_OUTPUT}.expected\"" 1>&2
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
err=1
|
|
Packit Service |
def718 |
fi
|
|
Packit Service |
def718 |
|
|
Packit Service |
def718 |
return $err
|
|
Packit Service |
def718 |
}
|