summaryrefslogtreecommitdiff
path: root/run_tests.sh
diff options
context:
space:
mode:
Diffstat (limited to 'run_tests.sh')
-rwxr-xr-xrun_tests.sh39
1 files changed, 39 insertions, 0 deletions
diff --git a/run_tests.sh b/run_tests.sh
new file mode 100755
index 0000000..3c561a7
--- /dev/null
+++ b/run_tests.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+pass=0
+fail=0
+
+for testfile in tests/*.bþ; do
+ outfile=${testfile%.bþ}.out
+ output="$(./bþ <$testfile 2>&1)"
+ run_res=$?
+ echo "$output" | diff $outfile - >/dev/null
+ diff_res=$?
+ testname=${testfile#tests/}
+ testname=${testname%.bþ}
+ case $diff_res in
+ 0) printf '\033[32m\033[1mPASS\033[0m %s\n' "$testname"
+ pass=$((pass + 1)) ;;
+ 1) printf '\033[31m\033[1mFAIL\033[0m %s\n' "$testname"
+ printf "\tgot output: %s\n" "$output"
+ printf "\texpected: "
+ cat $outfile
+ fail=$((fail + 1)) ;;
+ esac
+done
+
+echo
+printf "\033[32m%s\033[0m passed; " $pass
+if [ $fail -eq 0 ]; then
+ printf "0 failed; "
+else
+ printf "\033[31m%s\033[0m failed; " $fail
+fi
+printf "%s total\n" $((pass + fail))
+
+if [ $fail -eq 0 ]; then
+ exit 0
+else
+ exit 1
+fi
+