diff options
Diffstat (limited to 'run_tests.sh')
-rwxr-xr-x | run_tests.sh | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/run_tests.sh b/run_tests.sh index 16201b5..e852582 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -4,27 +4,39 @@ pass=0 fail=0 skip=0 +skipglob="$1" + + +skip() { + printf '\033[33mSKIP\033[0m %s (%s)\n' "$testname" "$1" + skip=$((skip + 1)) +} + for testfile in tests/*.bth; do outfile=${testfile%.bth}.out testname=${testfile#tests/} testname=${testname%.bth} if [ ! -f "$outfile" ]; then - printf '\033[33mSKIP\033[0m %s (no output file)\n' "$testname" - skip=$((skip + 1)) - else - output="$(./bth "$testfile" 2>&1)" - echo "$output" | diff "$outfile" - >/dev/null - diff_res=$? - 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" "$(echo "$output" | head -n4)" - printf "\texpected: " - cat "$outfile" - fail=$((fail + 1)) ;; - esac + skip "no output file" + continue fi + case "$testname" in + $skipglob) skip "matches skip glob $skipglob" + continue ;; + esac + + output="$(./bth "$testfile" 2>&1)" + echo "$output" | diff "$outfile" - >/dev/null + diff_res=$? + 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" "$(echo "$output" | head -n4)" + printf "\texpected: " + cat "$outfile" + fail=$((fail + 1)) ;; + esac done echo |