diff options
author | dan <[email protected]> | 2023-05-29 10:54:33 -0400 |
---|---|---|
committer | dan <[email protected]> | 2023-05-29 10:54:33 -0400 |
commit | 8151ce5ffec4283a3bc1eeea52b8f9b17cb5d069 (patch) | |
tree | 6acc9920cc286346952d5a14a9111722dc8aaee9 /runtests.sh | |
parent | 1cc9bd9d82f970aba524ff57d9b67e9efac47ce9 (diff) | |
download | forth-8151ce5ffec4283a3bc1eeea52b8f9b17cb5d069.tar.gz forth-8151ce5ffec4283a3bc1eeea52b8f9b17cb5d069.tar.bz2 forth-8151ce5ffec4283a3bc1eeea52b8f9b17cb5d069.zip |
tests: add initial tests and test runner script
Diffstat (limited to 'runtests.sh')
-rwxr-xr-x | runtests.sh | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/runtests.sh b/runtests.sh new file mode 100755 index 0000000..ddff74f --- /dev/null +++ b/runtests.sh @@ -0,0 +1,40 @@ +#!/bin/sh + +if [ -z "$FORTH_CMD" ] ; then + FORTH_CMD="./forth" +fi + +n=0 +failed=0 + +runtest () { + file="$1" + + output="$(mktemp)" + expectedoutput="$(mktemp)" + sed '0,/^INPUT$/d;/^OUTPUT$/,$d' "$file" | "$FORTH_CMD" > "$output" &2> /dev/null + sed '0,/^OUTPUT$/d' "$file" > "$expectedoutput" + + diff="$(diff -w -y "$output" "$expectedoutput")" + + if [ "1" -eq "$?" ] ; then + echo "Test $n failed: $file" >&2 + echo "Diff:" >&2 + echo "$diff" + exitcode=1 + failed="$(expr "$failed" + 1)" + + fi +} + +for f in ./tests/*; do + n="$(expr "$n" + 1)" + runtest "$f" +done + +if [ "0" -eq "$failed" ]; then + echo "All $n tests passed" >&2 + exit 0 +else + echo "$failed/$n tests failed" >&2 +fi |