# #-- 02-unittest.test --#
# source the master var file when it's there
[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master
# use .tpkg.var.test for in test variable passing
[ -f .tpkg.var.test ] && source .tpkg.var.test

. ../common.sh
PRE="../.."
get_make
(cd $PRE ; $MAKE unittest; $MAKE lock-verify)

if test -f $PRE/unbound_do_valgrind_in_test; then
	do_valgrind=yes
else
	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
		echo "lock-verify test worked."
	else
		echo "lock-verify test failed."
		exit 1
	fi
fi
exit 0
