#!/bin/sh

tests="$@"
test -z "$tests" && tests=`echo t-*.sh`

for t in $tests; do
   printf "Running %-40s" "$t ..."
   out=`bash ./$t 2>&1`
   ret=$?
   if test $ret = 0; then
       echo " passed."
   elif test $ret = 200; then
       skipped="$skipped $t"
       echo " skipped."
   else
       echo " FAILED!"
       len=`echo $t | wc -c`
       # fancy formatting...
       printf -- "--- Output: $t -"
       for i in `seq $(($len + 14)) 78`; do echo -n "-"; done; echo
       printf "%s\n" "$out"
       printf -- "--- End: $t ----"
       for i in `seq $(($len + 14)) 78`; do echo -n "-"; done; echo
       failed="$failed $t"
   fi
done

if test -n "$failed"; then
   echo "Tests skipped:"
   for t in $skipped; do
       printf "\t%s\n" $t
   done
   echo "TESTS FAILED:"
   for t in $failed; do
       printf "\t%s\n" $t
   done
   exit 1
else
   echo "All tests passed."
fi