get_make
(cd $PRE ; $MAKE unittest; $MAKE lock-verify)
-if (cd $PRE; ./unittest); then
- echo "unit test worked."
+if test -f $PRE/unbound_do_valgrind_in_test; then
+ do_valgrind=yes
else
- echo "unit test failed."
- exit 1
+ do_valgrind=no
+fi
+VALGRIND_FLAGS="--leak-check=full --show-leak-kinds=all"
+
+if test $do_valgrind = "yes"; then
+ echo "valgrind yes"
+ echo
+ tmpout=/tmp/tmpout.$$
+ if (cd $PRE; valgrind $VALGRIND_FLAGS ./unittest >$tmpout 2>&1); then
+ echo "unit test worked."
+ else
+ echo "unit test failed."
+ exit 1
+ fi
+ if grep "All heap blocks were freed -- no leaks are possible" $tmpout; then
+ : # clean
+ else
+ cat $tmpout
+ echo "Memory leaked in unittest"
+ grep "in use at exit" $tmpout
+ exit 1
+ fi
+ if grep "ERROR SUMMARY: 0 errors from 0 contexts" $tmpout; then
+ : # clean
+ else
+ cat $tmpout
+ echo "Errors in unittest"
+ grep "ERROR SUMMARY" $tmpout
+ exit 1
+ fi
+ rm -f $tmpout
+else
+ # without valgrind
+ if (cd $PRE; ./unittest); then
+ echo "unit test worked."
+ else
+ echo "unit test failed."
+ exit 1
+ fi
fi
if test -f $PRE/ublocktrace.0; then
if (cd $PRE; ./lock-verify ublocktrace.*); then