Licensing: Update copyright dates for Ian Jackson
[adns] / regress / m1test
1 #!/bin/bash
2 # usage: m1test <name> <initfile> [<initflags>] <queryargs>'
3 # test recording script
4 #
5 # This file is part of adns, which is
6 # Copyright (C) 1997-2000,2003,2006,2014 Ian Jackson
7 # Copyright (C) 1999-2000,2003,2006 Tony Finch
8 # Copyright (C) 1991 Massachusetts Institute of Technology
9 # (See the file INSTALL for full details.)
10 #
11 # This program is free software; you can redistribute it and/or modify
12 # it under the terms of the GNU General Public License as published by
13 # the Free Software Foundation; either version 3, or (at your option)
14 # any later version.
15 #
16 # This program is distributed in the hope that it will be useful,
17 # but WITHOUT ANY WARRANTY; without even the implied warranty of
18 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 # GNU General Public License for more details.
20 #
21 # You should have received a copy of the GNU General Public License
22 # along with this program; if not, write to the Free Software Foundation.
23
24 set -e
25
26 : ${srcdir=.}
27 if [ $# -lt 3 ]
28 then
29 echo >&2 \
30 'usage: m1test <name> <initfile> [-<initflags>] ["<"]
31 [=<hrecord-command-args>] <queryargs>
32 ("<" means read input from case-<name>.in)'
33 exit 1
34 fi
35
36 case="$srcdir/case-$1"; shift
37 initfile="$1"; shift
38
39 hrecord="./adnstest_record"
40
41 case "$1" in
42 -*) initflags="$1"; shift
43 esac
44
45 if test "x$1" = "x<"
46 then
47 shift; exec <"$case.in"
48 fi
49
50 case "$1" in
51 =*) hrecord="`echo \"$1\" | sed -e 's/^=//'`"; shift
52 esac
53
54 if test ! -f "$hrecord" -a -f "${hrecord}_record"
55 then
56 case "$hrecord" in
57 /*) program="$hrecord" ;;
58 *) program="./$hrecord" ;;
59 esac
60 hrecord="${program}_record"
61 else
62 program="$(echo "$hrecord" | sed -e 's/ .*//; s/_record$//')"
63 fi
64
65 queryargs="$*"
66
67 initstring="`cat $srcdir/init-$initfile.text`"
68 xinitflagsf=$srcdir/$program-xinitflags.text
69 if test -f $xinitflagsf
70 then
71 useinitflags="$initflags $(cat $xinitflagsf)";
72 else
73 useinitflags="$initflags /"
74 fi
75
76 echo $program $initfile $initflags >"$case.sys"
77 echo "$queryargs" >>"$case.sys"
78
79 EF_DISABLE_BANNER=1
80 export EF_DISABLE_BANNER
81
82 rm -f pipe.out pipe.err
83 mknod pipe.out p
84 mknod pipe.err p
85 tee <pipe.out "$case.out" &
86 tee_out=$!
87 tee <pipe.err "$case.err" &
88 tee_err=$!
89 exec 4>pipe.out
90 exec 5>pipe.err
91
92 echo running hrecord $initflags "... $queryargs"
93 set +e
94 ADNS_TEST_OUT_FD=3 3>>"$case.sys" >&4 2>&5 \
95 $hrecord $useinitflags"$initstring" $queryargs
96 rc=$?
97 set -e
98
99 echo "rc=$rc" >&4
100 exec 4>&-
101 exec 5>&-
102
103 wait $tee_out
104 wait $tee_err
105
106 echo "exit status: $rc"