about summary refs log tree commit diff stats
path: root/templates/c/scripts/valgrind_test.sh
diff options
context:
space:
mode:
Diffstat (limited to 'templates/c/scripts/valgrind_test.sh')
-rwxr-xr-xtemplates/c/scripts/valgrind_test.sh29
1 files changed, 29 insertions, 0 deletions
diff --git a/templates/c/scripts/valgrind_test.sh b/templates/c/scripts/valgrind_test.sh
new file mode 100755
index 0000000..4d0d964
--- /dev/null
+++ b/templates/c/scripts/valgrind_test.sh
@@ -0,0 +1,29 @@
+#! /usr/bin/env sh
+
+for arg in "$@"; do
+    case "$arg" in
+    "--help" | "-h")
+        cat <<-EOF
+            valgrind_test.sh [BINARY_NAME] [ARGS_FOR_BINARY..]
+EOF
+        exit 0
+        ;;
+    esac
+done
+
+binary_name="${1-main}"
+[ -n "$1" ] && shift 1
+
+log_file="$(git rev-parse --show-toplevel)/target/valgrind_out.report"
+mkdir --parents "$(dirname "$log_file")"
+
+CFLAGS="-ggdb3" make "$binary_name"
+
+valgrind --leak-check=full \
+    --show-leak-kinds=all \
+    --show-error-list=yes \
+    --track-origins=yes \
+    --log-file="$log_file" \
+    "./target/$binary_name" "$@"
+
+cat "$log_file"