chiark / gitweb /
regress/Makefile.in: Declare <client>_c.o as .SECONDARY
[adns.git] / regress / m1test
index 361e5b17106d5a274dcfaf9ad3c3306d385eab37..493db0b0fbea2a34ae6c98e181be3706a1f3fe62 100755 (executable)
-#!/bin/sh
-# usage: m1test <name> <initfile> <queryargs>
+#!/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
-tcn="$1"
-initfile="$2"
+
+: ${srcdir=.}
+if [ $# -lt 3 ]
+then
+       echo >&2 \
+'usage: m1test <name> <initfile> [-<initflags>] ["<"]
+              [=<hrecord-command-args>] <queryargs>
+("<" means read input from case-<name>.in)'
+       exit 1
+fi
+
+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="$*"
-test -d ../testcases || cd testcases
 
-initstring="`cat $initfile.init`"
+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 $program $initfile $initflags >"$case.sys"
+echo "$queryargs" >>"$case.sys"
+
+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" >&4 2>&5 \
+ $hrecord $useinitflags"$initstring" $queryargs
+rc=$?
+set -e
+
+echo "rc=$rc" >&4
+exec 4>&-
+exec 5>&-
 
-exec >$tcn.log
-echo "$initfile"
-echo "$queryargs"
+wait $tee_out
+wait $tee_err
 
-H../hrecord "/$initstring" $queryargs
+echo "exit status: $rc"