diff options
Diffstat (limited to 'run_tests.sh')
-rwxr-xr-x | run_tests.sh | 53 |
1 files changed, 33 insertions, 20 deletions
diff --git a/run_tests.sh b/run_tests.sh index 63b85aa..18885da 100755 --- a/run_tests.sh +++ b/run_tests.sh @@ -2,34 +2,47 @@ pass=0 fail=0 +skip=0 for testfile in tests/*.bth; do outfile=${testfile%.bth}.out - output="$(./bth $testfile 2>&1)" - run_res=$? - echo "$output" | diff $outfile - >/dev/null - diff_res=$? testname=${testfile#tests/} testname=${testname%.bth} - 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 + if [ ! -f "$outfile" ]; then + printf '\033[33mSKIP\033[0m %s (no output file)\n' "$testname" + skip=$((skip + 1)) + else + output="$(./bth $testfile 2>&1)" + run_res=$? + 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 + fi 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)) + +pnum () { + if [ $1 -eq 0 ]; then + printf "0 %s; " "$2" + else + printf "\033[3%dm%d\033[0m %s; " $3 $1 "$2" + fi +} + +pnum $pass passed 2 +pnum $fail failed 1 +pnum $skip skipped 3 + +printf "%s total\n" $((pass + fail + skip)) if [ $fail -eq 0 ]; then exit 0 |