Files
hawk/t/run-hawk-test.sh
hyung-hwan c15ba6aa15
continuous-integration/drone/push Build is passing
updated c++ classes for thread-safe ENVIRON handling
2026-05-20 19:02:57 +09:00

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