summaryrefslogtreecommitdiff
path: root/src/regress/lib/libc/asr/regress.subr
diff options
context:
space:
mode:
Diffstat (limited to 'src/regress/lib/libc/asr/regress.subr')
-rw-r--r--src/regress/lib/libc/asr/regress.subr120
1 files changed, 63 insertions, 57 deletions
diff --git a/src/regress/lib/libc/asr/regress.subr b/src/regress/lib/libc/asr/regress.subr
index 3e8cc0ebd5..43b7280158 100644
--- a/src/regress/lib/libc/asr/regress.subr
+++ b/src/regress/lib/libc/asr/regress.subr
@@ -1,13 +1,5 @@
1#!/bin/sh 1#!/bin/sh
2# $OpenBSD: regress.subr,v 1.2 2013/03/28 09:36:03 eric Exp $ 2# $OpenBSD: regress.subr,v 1.3 2017/03/10 17:23:48 eric Exp $
3
4TOTAL=0
5FAIL=0
6OK=0
7
8EXT0=.std
9EXT1=.asr
10EFLAG=-ee
11 3
12set -e 4set -e
13 5
@@ -19,70 +11,75 @@ fail()
19 11
20regress() 12regress()
21{ 13{
22 local out; 14 local cmd="$1"
23 local _cmd=$1; 15 local bin0="/bin/${cmd}${A}"
24 local _bin0=/bin/$_cmd$EXT0 16 local bin1="/bin/${cmd}${B}"
25 local _bin1=/bin/$_cmd$EXT1 17 local out="${OUTDIR}/test-${COUNT}.out"
26 shift; 18 local out0="${OUTDIR}/test-${COUNT}${A}.out"
27 19 local out1="${OUTDIR}/test-${COUNT}${B}.out"
28 TOTAL=$((TOTAL+1)) 20 local err0="${OUTDIR}/test-${COUNT}${A}.err"
29 21 local err1="${OUTDIR}/test-${COUNT}${B}.err"
30 # XXX with user "bin" 22 local outdiff="${OUTDIR}/test-${COUNT}${A}${B}.diff"
31 test -x $_RUNDIR$_bin0 || fail $_RUNDIR$_bin0 not executable 23 shift
32 test -x $_RUNDIR$_bin1 || fail $_RUNDIR$_bin1 not executable 24
33 25 test -x "${ROOTDIR}${bin0}" || fail "${ROOTDIR}${bin0}" not executable
34 out=/tmp/asr_regress 26 test -x "${ROOTDIR}${bin1}" || fail "${ROOTDIR}${bin1}" not executable
35 27
36 echo -n $_cmd $EFLAG $@ "." 28 echo -n "${cmd} $@ ."
37 29
38 set +e 30 set +e
39 chroot -u bin "$_RUNDIR" $_bin0 $EFLAG $@ > $out.0 31 chroot -u bin "${ROOTDIR}" ${bin0} $@ > ${out0}
40 echo -n . 32 echo -n .
41 chroot -u bin "$_RUNDIR" $_bin1 $EFLAG $@ > $out.1 33 chroot -u bin "${ROOTDIR}" ${bin1} $@ > ${out1}
42 echo -n ". " 34 echo -n "."
43 35
44 diff -u $out.0 $out.1 > $out.diff 36 diff -u ${out0} ${out1} > ${outdiff}
45 set -e 37 set -e
46 if test -s $out.diff; then 38 if test -s ${outdiff}; then
47 FAIL=$((FAIL+1)) 39 FAIL=$((FAIL+1))
48 echo fail 40 echo fail
49 echo "*** FAIL (env=$REGRESSENV)" $_cmd $EFLAG $@ >> $REG 41 echo "### FAIL [#${COUNT} env=${REGRESSENV}] ${cmd} $@" >> $ERR
50 tail -n +3 $out.diff >> $REG 42 cat ${outdiff} >> $ERR
51 echo >> $REG 43 echo >> $ERR
52 else 44 else
45 rm ${outdiff}
46 rm ${out1}
47 mv ${out0} ${out}
53 OK=$((OK+1)) 48 OK=$((OK+1))
54 echo ok 49 echo ok
55 echo "OK (env=$REGRESSENV)" $_cmd $EFLAG $@ >> $OUT 50 echo "### OK [#${COUNT} env=$REGRESSENV] ${cmd} $@" >> $OUT
56 cat $out.0 >> $OUT 51 cat ${out} >> $OUT
57 echo >> $OUT 52 echo >> $OUT
58 fi 53 fi
59 rm $out.diff $out.0 $out.1 54
55 COUNT=$((COUNT+1))
60} 56}
61 57
62regress_setenv() 58regress_setenv()
63{ 59{
64 local _name="$1" 60 local _name="$1"
65 61
66 echo "===> using env $_name" 62 echo "==> using env $_name"
67 63
68 cp /etc/hosts $_RUNDIR/etc/ 64 mkdir -p "${ROOTDIR}/etc/"
69 cp /etc/resolv.conf $_RUNDIR/etc/ 65 cp /etc/hosts "${ROOTDIR}/etc/"
70 cp /etc/protocols $_RUNDIR/etc/ 66 cp /etc/resolv.conf "${ROOTDIR}/etc/"
71 cp /etc/networks $_RUNDIR/etc/ 67 cp /etc/protocols "${ROOTDIR}/etc/"
68 cp /etc/networks "${ROOTDIR}/etc/"
72 69
73 case $_name in 70 case $_name in
74 empty) 71 empty)
75 rm -f $_RUNDIR/etc/* 72 rm -f "${ROOTDIR}/etc/*"
76 ;; 73 ;;
77 local) 74 local)
78 ;; 75 ;;
79 file) 76 file)
80 grep -v lookup /etc/resolv.conf > $_RUNDIR/etc/resolv.conf 77 grep -v lookup /etc/resolv.conf > "${ROOTDIR}/etc/resolv.conf"
81 echo "lookup file" >> $_RUNDIR/etc/resolv.conf 78 echo "lookup file" >> "${ROOTDIR}/etc/resolv.conf"
82 ;; 79 ;;
83 bind) 80 bind)
84 grep -v lookup /etc/resolv.conf > $_RUNDIR/etc/resolv.conf 81 grep -v lookup /etc/resolv.conf > "${ROOTDIR}/etc/resolv.conf"
85 echo "lookup bind" >> $_RUNDIR/etc/resolv.conf 82 echo "lookup bind" >> "${ROOTDIR}/etc/resolv.conf"
86 ;; 83 ;;
87 *) 84 *)
88 fail unknown env $_name 85 fail unknown env $_name
@@ -93,23 +90,32 @@ regress_setenv()
93 90
94regress_digest() 91regress_digest()
95{ 92{
96 echo 93 echo "===> done"
97 cat $REG 94 test -f $ERR && (echo; cat $ERR; echo "===> errfile=$ERR")
98 echo "===>" run=$TOTAL fail=$FAIL 95 echo "===> logfile=$OUT"
99} 96 echo "===> run=$COUNT ok=$OK fail=$FAIL error=$ERROR"
100 97
98}
101 99
102# needed for chroot 100# needed for chroot
103test "$(id -u)" -ne 0 && fail need root privileges to run this script 101test "$(id -u)" -ne 0 && fail need root privileges to run this script
104 102
105# we really really want to avoid erasing /etc later 103# we really really want to avoid erasing /etc later
106test "$RUNDIR" || fail RUNDIR is not set 104test "${RUNDIR}" || fail RUNDIR is not set
107_RUNDIR=$(readlink -fn ${RUNDIR}) 105
108test "$_RUNDIR" == / && fail RUNDIR is root dir: $RUNDIR 106ROOTDIR=$(readlink -fn ${RUNDIR})
107test "${ROOTDIR}" == "/" && fail RUNDIR is root dir: ${RUNDIR}
108
109COUNT=0
110OK=0
111FAIL=0
112ERROR=0
113A=${A:=.a}
114B=${B:=.b}
109 115
110OUT=$_RUNDIR/output.log 116OUTDIR=$(mktemp -d -p $ROOTDIR)
111REG=$_RUNDIR/regress.log 117chmod a+rx ${OUTDIR}
112ETC=$_RUNDIR/etc 118echo "===> ${OUTDIR}"
113 119
114echo -n > $REG 120OUT=$OUTDIR/regress.log
115echo -n > $OUT 121ERR=$OUTDIR/regress.err