chiark / gitweb /
src/event.c: Use `continue' in adns_processreadable (style)
[adns.git] / regress / m1test
index 82e94caba6cc2d0929084ad118c90395962f1a13..493db0b0fbea2a34ae6c98e181be3706a1f3fe62 100755 (executable)
-#!/bin/sh
+#!/bin/bash
+# usage: m1test <name> <initfile> [<initflags>] <queryargs>'
+# test recording script
+#
+#  This file is part of adns, which is
+#    Copyright (C) 1997-2000,2003,2006  Ian Jackson
+#    Copyright (C) 1999-2000,2003,2006  Tony Finch
+#    Copyright (C) 1991 Massachusetts Institute of Technology
+#  (See the file INSTALL for full details.)
+#  
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by
+#  the Free Software Foundation; either version 2, or (at your option)
+#  any later version.
+#  
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#  
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the Free Software Foundation,
+#  Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 
 
 set -e
 
+: ${srcdir=.}
 if [ $# -lt 3 ]
 then
-       echo >&2 'usage: m1test <name> <initfile> [<initflags>] <queryargs>'
+       echo >&2 \
+'usage: m1test <name> <initfile> [-<initflags>] ["<"]
+              [=<hrecord-command-args>] <queryargs>
+("<" means read input from case-<name>.in)'
        exit 1
 fi
 
-case="case-$1"; shift
+case="$srcdir/case-$1"; shift
 initfile="$1"; shift
 
+hrecord="./adnstest_record"
+
 case "$1" in
 -*)    initflags="$1"; shift
 esac
 
+if test "x$1" = "x<"
+then
+       shift; exec <"$case.in"
+fi
+
+case "$1" in
+=*)    hrecord="`echo \"$1\" | sed -e 's/^=//'`"; shift
+esac
+
+if test ! -f "$hrecord" -a -f "${hrecord}_record"
+then
+       case "$hrecord" in
+       /*)     program="$hrecord"      ;;
+       *)      program="./$hrecord"    ;;
+       esac
+       hrecord="${program}_record"
+else
+       program="$(echo "$hrecord" | sed -e 's/ .*//; s/_record$//')"
+fi
+
 queryargs="$*"
 
-initstring="`cat init-$initfile.text`"
+initstring="`cat $srcdir/init-$initfile.text`"
+xinitflagsf=$srcdir/$program-xinitflags.text
+if test -f $xinitflagsf
+then
+       useinitflags="$initflags $(cat $xinitflagsf)";
+else
+       useinitflags="$initflags /"
+fi
 
-echo $initfile $initflags >"$case.sys"
+echo $program $initfile $initflags >"$case.sys"
 echo "$queryargs" >>"$case.sys"
 
-echo running hrecord $initflags "/... $queryargs"
+EF_DISABLE_BANNER=1
+export EF_DISABLE_BANNER
+
+rm -f pipe.out pipe.err
+mknod pipe.out p
+mknod pipe.err p
+tee <pipe.out "$case.out" &
+tee_out=$!
+tee <pipe.err "$case.err" &
+tee_err=$!
+exec 4>pipe.out
+exec 5>pipe.err
+
+echo running hrecord $initflags "... $queryargs"
 set +e
-ADNS_TEST_OUT_FD=3 3>>"$case.sys" >"$case.out" 2>"$case.err" </dev/null \
./hrecord $initflags "/$initstring" $queryargs
+ADNS_TEST_OUT_FD=3 3>>"$case.sys" >&4 2>&5 \
$hrecord $useinitflags"$initstring" $queryargs
 rc=$?
 set -e
 
-echo "rc=$rc" >>$case.out
+echo "rc=$rc" >&4
+exec 4>&-
+exec 5>&-
+
+wait $tee_out
+wait $tee_err
 
-egrep . -- "$case.err" "$case.out"
 echo "exit status: $rc"