X-Git-Url: http://git.shiar.net/barcat.git/blobdiff_plain/188cb157abb592e69997c7831c3554c25a48fae7..4eb6190a15e5025c04d6432c97312623fdf743be:/t/regress.t diff --git a/t/regress.t b/t/regress.t index ef28f6f..734e42d 100755 --- a/t/regress.t +++ b/t/regress.t @@ -3,16 +3,73 @@ cd "${0%/*}" || exit 1 test_count=0 +fail_count=0 COLUMNS=40 -diffcmd='diff --unchanged-line-format= --old-line-format=<%L --new-line-format=>%L' +colorize= +test -t 1 && colorize=1 +color () { + test -n "$colorize" && + printf '\e[%sm' $@ +} +regenerate= +diffcmd () { + comm --nocheck-order --output-delimiter=::: -3 $@ | + perl -pe"END{exit !!\$.} s/^:::/$(color 31)>/ || s/^/$(color 32)...]"; exit 64;; + esac +done for candidate in ${@:-t*.in} do test_count=$((test_count+1)) - name="${candidate%.out}" - barcat <"$name.in" | $diffcmd "$name.out" - || printf 'not ' + file="${candidate%.in}" + test -r "$file.in" || continue + + name="$(echo ${file#*-} | tr _ \ )" + set -- barcat "$file.in" + case "$name" in *\ -*) set -- "$@" "-${name#* -}";; esac + case "$name" in *' |'*) set -- sh -c "\$0 \$1 $3" "$@";; esac + + if test -n "$regenerate" + then + if test -e $file.sh + then + echo "ok $test_count # skip $file.out" + continue + fi + "$@" >$file.out 2>&1 + else + if test -e $file.out; then "$@" 2>&1 | diffcmd "$file.out" -; fi + fi + + if test 0 != $? + then + fail_count=$((fail_count+1)) + color 1\;31 + printf 'not ' + fi echo "ok $test_count - $name" + color 0 done +if test $fail_count = 0 +then + color 32 + echo "# passed all $test_count test(s)" +else + color 31 + echo "# failed $fail_count among $test_count test(s)" + fail_count=1 # exit code +fi + +color 0\;36 echo "1..$test_count" +color 0 +exit $fail_count