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