]> git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests/runtests
Merge pull request #3981 from zeha/provide-js-sources
[thirdparty/pdns.git] / regression-tests / runtests
1 #!/usr/bin/env bash
2 PATH=.:$PATH:/usr/sbin
3 MAKE=${MAKE:-make}
4
5 export PDNS=${PDNS:-${PWD}/../pdns/pdns_server}
6 export PDNS2=${PDNS2:-${PWD}/../pdns/pdns_server}
7 export PDNSRECURSOR=${PDNSRECURSOR:-${PWD}/../pdns/recursordist/pdns_recursor}
8 export RECCONTROL=${RECCONTROL:-${PWD}/../pdns/recursordist/rec_control}
9 export SDIG=${SDIG:-${PWD}/../pdns/sdig}
10 export NOTIFY=${NOTIFY:-${PWD}/../pdns/pdns_notify}
11 export NSEC3DIG=${NSEC3DIG:-${PWD}/../pdns/nsec3dig}
12 export SAXFR=${SAXFR:-${PWD}/../pdns/saxfr}
13 export ZONE2SQL=${ZONE2SQL:-${PWD}/../pdns/zone2sql}
14 export ZONE2LDAP=${ZONE2LDAP:-${PWD}/../pdns/zone2ldap}
15 export PDNSUTIL=${PDNSUTIL:-${PWD}/../pdns/pdnsutil}
16 export PDNSCONTROL=${PDNSCONTROL:-${PWD}/../pdns/pdns_control}
17
18 spectest=$1
19 [ -z $spectest ] && spectest=""
20
21 for prog in $SDIG $SAXFR $NOTIFY $NSEC3DIG; do
22 if `echo $prog | grep -q '../pdns'`; then
23 ${MAKE} -C ../pdns ${prog##*../pdns/} || exit
24 fi
25 done
26
27 export SDIG="timeout 5 $SDIG"
28 export NSEC3DIG="timeout 5 $NSEC3DIG"
29 export SAXFR="timeout 30 $SAXFR"
30 export PDNSCONTROL="timeout 5 $PDNSCONTROL"
31
32 rm -f test-results failed_tests passed_tests skipped_tests ${testsdir}/*/real_result ${testsdir}/*/diff ${testsdir}/*/*.out ${testsdir}/*/start ${testsdir}/*/step.*
33
34 passed=0
35 failed=0
36 skipped=0
37
38 touch passed_tests failed_tests skipped_tests
39
40 for a in $(find $testsdir -type d | grep -v ^.$ | grep -v .svn | grep -v ^confdir | LC_ALL=C sort)
41 do
42 if [ ! -x $a/command ]
43 then
44 continue
45 fi
46 testname=$(basename $a)
47 export testname
48 echo "$testname: "
49 cat $a/description
50
51 echo "$testname: " >> test-results
52 cat $a/description >> test-results
53
54 SKIPIT=0
55 if [ -e $a/skip ]
56 then
57 SKIPIT=1
58 result=" Skipped test $a"
59 else
60 for reason in $skipreasons $context
61 do
62 if [ -e $a/skip.$reason ]
63 then
64 SKIPIT=1
65 result=" Skipped test $a for reason $reason"
66 break
67 fi
68 done
69 fi
70
71 FAIL=0
72 for reason in $skipreasons $context
73 do
74 if [ -e $a/fail.$reason ]
75 then
76 FAIL=1
77 break
78 fi
79 done
80
81 if [ "$spectest" != "" ] && [ "$spectest" != "$testname" ] && [ "$testname" != "00dnssec-grabkeys" ]
82 then
83 SKIPIT=1
84 result=" Skipped test $a because it's not the specified single test"
85 fi
86
87
88 if [ $SKIPIT = 1 ]
89 then
90 echo $testname >> skipped_tests
91 skipped=$[$skipped+1]
92 else
93 $a/command > $a/real_result
94 expected=$a/expected_result
95
96 diffopts="-u"
97 if [ -e $a/expected_result.i ]; then
98 expected=$a/expected_result.i
99 diffopts="${diffopts} -i"
100 fi
101
102 for extracontext in $extracontexts
103 do
104 [ -e "$a/expected_result.$extracontext" ] && expected=$a/expected_result.$extracontext
105 done
106 [ -n "$context" ] && [ -e "$a/expected_result.$context" ] && expected=$a/expected_result.$context
107 diff ${diffopts} $expected $a/real_result > $a/diff 2>&1
108 if [ -s $a/diff ]
109 then
110 if [ $FAIL = 0 ]
111 then
112 result=" Failed test $a"
113 echo $testname >> failed_tests
114 failed=$[$failed+1]
115 else
116 result=" Expected failure for reason $reason, test passed $a"
117 echo $testname >> passed_tests
118 passed=$[$passed+1]
119 fi
120 else
121 if [ $FAIL = 0 ]
122 then
123 result=" Passed test $a"
124 echo $testname >> passed_tests
125 passed=$[$passed+1]
126 else
127 result=" Unexpected pass for reason $reason, test failed $a"
128 echo $testname >> failed_tests
129 failed=$[$failed+1]
130 fi
131 fi
132 fi
133 echo "$result"
134 echo
135 echo "$result" >> test-results
136 echo >> test-results
137 done
138
139 echo -n $passed out of $[$passed+$failed]
140 echo -n " ("
141 res=$((echo scale=2; echo 100*$passed/\($passed+$failed\)) | bc )
142 echo -n "$res%) "
143 echo tests passed, $skipped were skipped