t: rename output files without command parameters
[barcat.git] / t / regress.t
index ef28f6f934e17160acb53972ef620ee0aa685eb3..177cc8dfa1f22c0f99208e60d7fa104bcfcabdd9 100755 (executable)
@@ -3,16 +3,69 @@
 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 '\33[%sm' $@
+}
 
-for candidate in ${@:-t*.in}
+for option in "$@"
+do
+       case "$option" in
+       -*) echo "Usage: $0 [<files>...]"; exit 64;;
+       esac
+done
+
+params="${@:-t*.out}"
+color 0\;36
+echo "1..$(echo $params | wc -w)"
+color 0
+
+for candidate in $params
 do
        test_count=$((test_count+1))
-       name="${candidate%.out}"
-       barcat <"$name.in" | $diffcmd "$name.out" - || printf 'not '
+       file="${candidate%.out}"
+       name="$(echo ${file#*-} | tr _ \ )"
+
+       if test -e "$file.out"
+       then
+               ./cmddiff "$file.out"
+       else
+               color 33
+               echo "not ok $test_count - $name # TODO"
+               color 0
+               continue
+       fi
+
+       if test 0 != $?
+       then
+               case "$name" in
+               *' #TODO')
+                       color 33
+                       ;;
+               *)
+                       fail_count=$((fail_count+1))
+                       color 1\;31
+               esac
+
+               printf 'not '
+       fi
        echo "ok $test_count - $name"
+       color 0
 done
 
-echo "1..$test_count"
+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
+
+exit $fail_count