Commit ddd04eed authored by Michal 'vorner' Vaner's avatar Michal 'vorner' Vaner
Browse files

[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.
parent 586df2b3
#!/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
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment