diff options
Diffstat (limited to 'src/regress/lib/libc/asr/regress.subr')
-rw-r--r-- | src/regress/lib/libc/asr/regress.subr | 120 |
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 | |||
4 | TOTAL=0 | ||
5 | FAIL=0 | ||
6 | OK=0 | ||
7 | |||
8 | EXT0=.std | ||
9 | EXT1=.asr | ||
10 | EFLAG=-ee | ||
11 | 3 | ||
12 | set -e | 4 | set -e |
13 | 5 | ||
@@ -19,70 +11,75 @@ fail() | |||
19 | 11 | ||
20 | regress() | 12 | regress() |
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 | ||
62 | regress_setenv() | 58 | regress_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 | ||
94 | regress_digest() | 91 | regress_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 |
103 | test "$(id -u)" -ne 0 && fail need root privileges to run this script | 101 | test "$(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 |
106 | test "$RUNDIR" || fail RUNDIR is not set | 104 | test "${RUNDIR}" || fail RUNDIR is not set |
107 | _RUNDIR=$(readlink -fn ${RUNDIR}) | 105 | |
108 | test "$_RUNDIR" == / && fail RUNDIR is root dir: $RUNDIR | 106 | ROOTDIR=$(readlink -fn ${RUNDIR}) |
107 | test "${ROOTDIR}" == "/" && fail RUNDIR is root dir: ${RUNDIR} | ||
108 | |||
109 | COUNT=0 | ||
110 | OK=0 | ||
111 | FAIL=0 | ||
112 | ERROR=0 | ||
113 | A=${A:=.a} | ||
114 | B=${B:=.b} | ||
109 | 115 | ||
110 | OUT=$_RUNDIR/output.log | 116 | OUTDIR=$(mktemp -d -p $ROOTDIR) |
111 | REG=$_RUNDIR/regress.log | 117 | chmod a+rx ${OUTDIR} |
112 | ETC=$_RUNDIR/etc | 118 | echo "===> ${OUTDIR}" |
113 | 119 | ||
114 | echo -n > $REG | 120 | OUT=$OUTDIR/regress.log |
115 | echo -n > $OUT | 121 | ERR=$OUTDIR/regress.err |