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