aboutsummaryrefslogtreecommitdiff
path: root/tests/TESTrun.sh
blob: d1baaa7be6039c184a4353713a6c6bda8da82404 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#!/bin/sh

mkdir -p NEW
mkdir -p DIFF
passed=0
failed=0
cat /dev/null > failure-outputs.txt

# first run any specific tests.
for i in *.sh
do
  case $i in TEST*.sh) continue;; esac

  if sh ./$i >DIFF/$i.result
  then
      echo $i: passed.
      rm -f DIFF/$i.result
      passed=`expr $passed + 1`
  else
      echo $i: failed.
      failed=`expr $failed + 1`
  fi          
done 

echo $passed >.passed
echo $failed >.failed

# now run typical tests
cat TESTLIST | while read name input output options
do
  case $name in
      \#*) continue;;
      '') continue;;
  esac

  if ./TESTonce $name $input $output "$options"
  then
      echo $name: passed.
      rm -f DIFF/$output.diff
      passed=`expr $passed + 1`
      echo $passed >.passed
  else
      echo $name: failed.
      failed=`expr $failed + 1`
      echo $failed >.failed
      echo "Failed test: $name" >> failure-outputs.txt
      echo >> failure-outputs.txt
      cat DIFF/$output.diff >> failure-outputs.txt
      echo >> failure-outputs.txt
  fi
done 

# I hate shells with their stupid, useless subshells.
passed=`cat .passed`
failed=`cat .failed`

# exit with number of failing tests.
echo 
echo
printf "%4u tests failed\n" $failed
printf "%4u tests passed\n" $passed
echo
echo
cat failure-outputs.txt
echo
echo
exit $failed