chiark / gitweb /
regress: *.m4: Provide for hm_rv_select and hm_rv_poll
[adns.git] / regress / r1test
1 #!/bin/sh
2 # usage: r1test <testcasename>
3 # test execution script, for running one test
4 #
5 #  This file is part of adns, which is
6 #    Copyright (C) 1997-2000,2003,2006,2014-2016,2020  Ian Jackson
7 #    Copyright (C) 2014  Mark Wooding
8 #    Copyright (C) 1999-2000,2003,2006  Tony Finch
9 #    Copyright (C) 1991 Massachusetts Institute of Technology
10 #  (See the file INSTALL for full details.)
11 #  
12 #  This program is free software; you can redistribute it and/or modify
13 #  it under the terms of the GNU General Public License as published by
14 #  the Free Software Foundation; either version 3, or (at your option)
15 #  any later version.
16 #  
17 #  This program is distributed in the hope that it will be useful,
18 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
19 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 #  GNU General Public License for more details.
21 #  
22 #  You should have received a copy of the GNU General Public License
23 #  along with this program; if not, write to the Free Software Foundation.
24
25 set -e
26 : ${srcdir=.}
27 . "$srcdir"/shlib
28 mrc=1
29 trap 'exit $mrc' 0
30
31 casename="$1"
32
33 playback_prepare
34
35 rm -f $ocase.*
36
37 EF_DISABLE_BANNER=1
38 export EF_DISABLE_BANNER
39
40 if test -e "$case.in"
41 then
42         exec <"$case.in"
43 else
44         exec </dev/null
45 fi
46
47 if test ! -e $playback
48 then
49         printf "SKIPPED-$casename "
50         mrc=5
51         exit
52 fi
53
54 playback_execute_hook () { :; }
55 playback_execute
56
57 if [ "$rc" = 5 ]
58 then
59         printf "SKIPPED-$casename "
60         mrc=5
61         exit
62 fi
63
64 echo "rc=$rc" >>$ocase.out
65
66 failed=false
67 for part in err out
68 do
69         if diff -u -- "$case.$part" "$ocase.$part"
70         then
71                 :
72         else
73                 failwhy="$failwhy WRONG OUTPUT"
74         fi
75 done
76
77 cat <&4 >"$ocase.leftover"
78 if egrep . /dev/null "$ocase.leftover"
79 then
80         failwhy="$failwhy EXITED EARLY"
81 fi
82
83 if [ "x$failwhy" != x ]
84 then
85         scremain="`wc -l <\"$ocase.leftover\"`"
86         echo >&2 "FAILED $case -$failwhy - lines of syscall remaining $scremain"
87         mrc=2
88         exit
89 fi
90
91 printf "$casename "
92 mrc=0