From 4b1f9e2cb436e74ce6084dbc35df5f052cb701bf Mon Sep 17 00:00:00 2001
From: David Phillips <david@sighup.nz>
Date: Sun, 4 Aug 2019 14:21:05 +1200
Subject: Wrap tests in valgrind, clean up memory leaks

---
 test/emul/run-emul.sh | 42 ++++++++++++++++++++++--------------------
 1 file changed, 22 insertions(+), 20 deletions(-)

(limited to 'test/emul')

diff --git a/test/emul/run-emul.sh b/test/emul/run-emul.sh
index 496f13d..2db56f3 100755
--- a/test/emul/run-emul.sh
+++ b/test/emul/run-emul.sh
@@ -23,6 +23,7 @@ clean() {
 
 WORK=$(mktemp -d)
 pushd $(dirname "$0") >/dev/null
+source ../valgrind.sh
 export ASM="$PWD/../../assembler"
 export EMUL="$PWD/../../emulator"
 has_failure=0
@@ -36,26 +37,27 @@ for asmfile in *.asm ; do
 		continue
 	fi
 
-	"$EMUL" "$binfile" > "$outfile"
-
-	# Each postcondition line must hold true, and forms a separate test to
-	# help track down failures
-	(echo '; POST $0 = 0' ;
-	 echo '; POST $H = 0xFFFF' ;
-	 grep '^;\s\+POST\s\+' "$asmfile" ) | while read line ; do
-		reg=$(awk -F= '{print $1}' <<< "$line" | awk '{print $(NF)}')
-		val=$(awk -F= '{print $2}' <<< "$line"| awk '{print $1}')
-		subtest="${asmfile}:${reg}"
-		# Scrape output of emulator for register value
-		actual=$(grep "$reg" "$outfile" | awk '{print $2}')
-		if [[ "$actual" -eq "$val" ]]; then
-			pass "$subtest"
-		else
-			fail "$subtest" "postcondition (expect $val, got $actual)"
-			has_failure=1
-		fi
-	done
-
+	if "$VALGRIND" $VALGRIND_OPTS "$EMUL" "$binfile" > "$outfile" ; then
+		# Each postcondition line must hold true, and forms a separate test to
+		# help track down failures
+		(echo '; POST $0 = 0' ;
+		 echo '; POST $H = 0xFFFF' ;
+		 grep '^;\s\+POST\s\+' "$asmfile" ) | while read line ; do
+			reg=$(awk -F= '{print $1}' <<< "$line" | awk '{print $(NF)}')
+			val=$(awk -F= '{print $2}' <<< "$line"| awk '{print $1}')
+			subtest="${asmfile}:${reg}"
+			# Scrape output of emulator for register value
+			actual=$(grep "$reg" "$outfile" | awk '{print $2}')
+			if [[ "$actual" -eq "$val" ]]; then
+				pass "$subtest"
+			else
+				fail "$subtest" "postcondition (expect $val, got $actual)"
+				has_failure=1
+			fi
+		done
+	else
+		fail "$asmfile" "non-zero exit code"
+	fi
 done
 popd >/dev/null
 
-- 
cgit v1.1