]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
valgrind for unittest.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 1 May 2018 12:20:37 +0000 (12:20 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Tue, 1 May 2018 12:20:37 +0000 (12:20 +0000)
git-svn-id: file:///svn/unbound/trunk@4668 be551aaa-1e26-0410-a405-d3ace91eadb9

testdata/02-unittest.tdir/02-unittest.test

index 898cd3dcc1243118f64d93f48618cc10902f2fb5..7b1105b74508ff86e9683aa4cc3a95a377c2bad2 100644 (file)
@@ -9,11 +9,48 @@ PRE="../.."
 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