2025-09-09 11:20:22 +10:00
|
|
|
#!/usr/bin/env bash
|
2025-09-11 17:36:10 +10:00
|
|
|
USAGE='test program [[run]-[valgrind]] ...'
|
2025-09-09 11:20:22 +10:00
|
|
|
if [[ "$1" =~ help ]]; then
|
|
|
|
|
echo "$USAGE"
|
|
|
|
|
exit 0
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# === ARGPARSE
|
|
|
|
|
MODE=
|
|
|
|
|
REBUILD=true
|
|
|
|
|
VALGRIND=false
|
|
|
|
|
TARGET=all
|
2025-09-11 17:36:10 +10:00
|
|
|
PROGRAM="$1"
|
|
|
|
|
MODE_ARG="$2"
|
|
|
|
|
|
|
|
|
|
if [[ "$MODE_ARG" =~ run.* ]]; then
|
|
|
|
|
MODE="$MODE_ARG"
|
2025-09-09 11:20:22 +10:00
|
|
|
REBUILD=false
|
|
|
|
|
fi
|
2025-09-11 17:36:10 +10:00
|
|
|
if [[ "$MODE_ARG" =~ .*valgrind ]]; then
|
|
|
|
|
MODE="$MODE_ARG"
|
2025-09-09 11:20:22 +10:00
|
|
|
VALGRIND=true
|
|
|
|
|
PROXY='valgrind -s --leak-check=full --show-leak-kinds=all'
|
|
|
|
|
TARGET=debug
|
|
|
|
|
fi
|
|
|
|
|
|
2025-09-11 17:36:10 +10:00
|
|
|
|
2025-09-09 11:20:22 +10:00
|
|
|
if [[ -n "$MODE" ]]; then
|
|
|
|
|
shift
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# === MAIN
|
|
|
|
|
if [[ "$REBUILD" == true ]]; then
|
|
|
|
|
make clean $TARGET
|
|
|
|
|
fi
|
2025-09-11 22:17:17 +10:00
|
|
|
|
|
|
|
|
if [[ ! -x "$PROGRAM" ]]; then
|
|
|
|
|
echo "[!] Invalid program: \"$PROGRAM\""
|
|
|
|
|
echo "$USAGE"
|
|
|
|
|
exit 1
|
|
|
|
|
fi
|
|
|
|
|
|
2025-09-11 17:36:10 +10:00
|
|
|
LD_LIBRARY_PATH=./lib $PROXY "$PROGRAM" $@
|