2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-08-22 01:49:48 +00:00

[trac614] First cut at an ugly script

It produces the output, but fails at the end reporting the status, needs
at last some documentation, etc. It might leave some files after the
run. It doesn't handle some parameters properly (problems with
escaping).

It is a big ugly bash script. But as it is to be used by the developers,
not users, it might not be so big problem.
This commit is contained in:
Michal 'vorner' Vaner 2011-02-24 19:10:02 +01:00
parent 586df2b37d
commit ddd04eed61

55
tools/tests_in_valgrind.sh Executable file
View File

@ -0,0 +1,55 @@
#!/bin/bash
# Yes, really bash, there are some bashisms
# First, make sure the tests are up to date
make
if [ $? = 2 ] ; then
echo "Did you run configure? Do you call me from the top bind10 directory?" >&2
exit 1
fi
set -ex
# Some configuration
# TODO Escape for sed, this might break
LOGFILE="${VALGRIND_FILE:-valgrind.log}"
FLAGS="${VALGRIND_FLAGS:---read-var-info=yes --leak-check=full}"
FLAGS="$FLAGS --log-file=$LOGFILE.%p"
FOUND_ANY=false
FAILED=
# Find all the tests (yes, doing it by a name is a nasty hack)
# Since the while runs in a subprocess, we need to get the assignments out, done by the eval
eval $(find . -type f -executable -name run_unittests -print | grep -v '\.libs/run_unittests$' | while read testname ; do
sed -e 's#exec "#exec valgrind '"$FLAGS"' "#' "$testname" > "$testname.valgrind"
chmod +x "$testname.valgrind"
echo "$testname" >>"$LOGFILE"
echo "===============" >>"$LOGFILE"
"$testname.valgrind" >&2 &
PID="$!"
wait "$PID"
CODE="$?"
if [ "$CODE" != 0 ] ; then
echo 'FAILED="$FAILED
'"'$testname'"
fi
NAME="$LOGFILE.$PID"
rm "$testname.valgrind"
# Remove the ones from death tests
grep "==$PID==" "$NAME" >>"$LOGFILE"
rm "$NAME"
echo 'FOUND_ANY=true'
done)
if [ -n "$FAILED" ] ; then
echo "These tests failed:" >&2
echo "$FAILED" >&2
fi
if ! $FOUND_ANY ; then
echo "No test was found. It is possible you configured witouth --with-gtest or you run it from wrong directory" >&2
exit 1
fi