]> The Tcpdump Group git mirrors - tcpdump/blob - tests/TESTrun.sh
98e644bfa2bc42d29f2dc6fb97b087614cadeb9d
[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 if [ -d COREFILES ]; then
38 if [ -f core ]; then mv core COREFILES/$name.core; fi
39 fi
40 [ "$only" != "" -a "$name" = "$only" ] && break
41 done
42 # I hate shells with their stupid, useless subshells.
43 passed=`cat .passed`
44 failed=`cat .failed`
45 }
46
47 passed=0
48 failed=0
49 echo $passed >.passed
50 echo $failed >.failed
51 if [ $# -eq 0 ]
52 then
53 runComplexTests
54 runSimpleTests
55 elif [ $# -eq 1 ]
56 then
57 runSimpleTests $1
58 else
59 echo "Usage: $0 [test_name]"
60 exit 30
61 fi
62
63 # exit with number of failing tests.
64 echo '------------------------------------------------'
65 printf "%4u tests failed\n" $failed
66 printf "%4u tests passed\n" $passed
67 echo
68 cat failure-outputs.txt
69 echo
70 echo
71 exit $failed