chiark / gitweb /
+ General Improvements:
[adns.git] / regress / m1test
index 81b46345a4b00f11148941fc86ac9eb7a82a905c..c556f8c669061ea78365664e1c5c543464779ba4 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 # usage: m1test <name> <initfile> [<initflags>] <queryargs>'
 # test recording script
 #
@@ -28,15 +28,15 @@ set -e
 if [ $# -lt 3 ]
 then
        echo >&2 \
-'usage: m1test <name> <initfile> [<initflags>] [=<hrecord-command-args>]
-       <queryargs>'
+'usage: m1test <name> <initfile> [-<initflags>]
+              [=<hrecord-command-args>] <queryargs>'
        exit 1
 fi
 
 case="case-$1"; shift
 initfile="$1"; shift
 
-hrecord="./hrecord"
+hrecord="./adnstest_record"
 
 case "$1" in
 -*)    initflags="$1"; shift
@@ -46,24 +46,56 @@ 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`"
+xinitflagsf=$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"
 
 EF_DISABLE_BANNER=1
 export EF_DISABLE_BANNER
 
-echo running hrecord $initflags "/... $queryargs"
+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"