56 lines
1.1 KiB
Bash
56 lines
1.1 KiB
Bash
#!/bin/sh
|
|
|
|
hawk_bin="${HAWK_TEST_COMPILER:-../bin/hawk}"
|
|
hawk_lib_path="${LD_LIBRARY_PATH-}"
|
|
|
|
case "$hawk_bin" in
|
|
*/.libs/*)
|
|
libdir=$(cd "$(dirname "$hawk_bin")/../../lib/.libs" 2>/dev/null && pwd)
|
|
if [ -n "${libdir-}" ]
|
|
then
|
|
if [ -n "$hawk_lib_path" ]
|
|
then
|
|
hawk_lib_path="$libdir:$hawk_lib_path"
|
|
else
|
|
hawk_lib_path="$libdir"
|
|
fi
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
export LD_LIBRARY_PATH="$hawk_lib_path"
|
|
|
|
if [ "${VALGRIND:-0}" = "1" ]
|
|
then
|
|
vglog="/tmp/hawk-valgrind-$$.log"
|
|
vgerr="${VALGRIND_ERROR_EXITCODE:-99}"
|
|
trap 'rm -f "$vglog"' EXIT
|
|
|
|
${VALGRIND_CMD:-valgrind} ${VALGRIND_FLAGS:-} --log-file="$vglog" "$hawk_bin" "$@"
|
|
status=$?
|
|
|
|
if [ -f "$vglog" ]
|
|
then
|
|
awk '
|
|
/^==[0-9]+== HEAP SUMMARY:/ { show = 1 }
|
|
show { print }
|
|
/^==[0-9]+== LEAK SUMMARY:/ { leak = 1; next }
|
|
leak && /^==[0-9]+==[[:space:]]*$/ { exit }
|
|
' "$vglog" >&2
|
|
|
|
if [ "$status" -eq 0 ]
|
|
then
|
|
echo "[VALGRIND] LEAK-FREE" >&2
|
|
elif [ "$status" -eq "$vgerr" ]
|
|
then
|
|
echo "[VALGRIND] LEAK DETECTED OR MEMORY ERROR" >&2
|
|
else
|
|
echo "[VALGRIND] TEST FAILED (NO VALGRIND LEAK EXIT)" >&2
|
|
fi
|
|
fi
|
|
|
|
exit "$status"
|
|
else
|
|
exec "$hawk_bin" "$@"
|
|
fi
|