1#!/bin/sh
2
3mkdir -p NEW
4mkdir -p DIFF
5passed=0
6failed=0
7cat /dev/null > failure-outputs.txt
8
9runComplexTests()
10{
11  for i in *.sh
12  do
13    case $i in TEST*.sh) continue;; esac
14    if sh ./$i
15    then
16      passed=`expr $passed + 1`
17    else
18      failed=`expr $failed + 1`
19    fi
20  done
21}
22
23runSimpleTests()
24{
25  only=$1
26  echo $passed >.passed
27  echo $failed >.failed
28  cat TESTLIST | while read name input output options
29  do
30    case $name in
31      \#*) continue;;
32      '') continue;;
33    esac
34    rm -f core
35    [ "$only" != "" -a "$name" != "$only" ] && continue
36    if ./TESTonce $name $input $output "$options"
37    then
38      passed=`expr $passed + 1`
39      echo $passed >.passed
40    else
41      failed=`expr $failed + 1`
42      echo $failed >.failed
43    fi
44    [ "$only" != "" -a "$name" = "$only" ] && break
45  done
46  # I hate shells with their stupid, useless subshells.
47  passed=`cat .passed`
48  failed=`cat .failed`
49}
50
51if [ $# -eq 0 ]
52then
53  runComplexTests
54  runSimpleTests
55elif [ $# -eq 1 ]
56then
57  runSimpleTests $1
58else
59  echo "Usage: $0 [test_name]"
60  exit 30
61fi
62
63# exit with number of failing tests.
64echo '------------------------------------------------'
65printf "%4u tests failed\n" $failed
66printf "%4u tests passed\n" $passed
67echo
68echo
69cat failure-outputs.txt
70echo
71echo
72exit $failed
73