examples: check the errors

* examples/test (run): Check stderr, unless -noerr is passed.
* examples/calc++/calc++.test, examples/mfcalc/mfcalc.test: Check
errors.
This commit is contained in:
Akim Demaille
2018-10-26 07:36:51 +02:00
parent 18743948b5
commit f3110c9b9a
3 changed files with 25 additions and 11 deletions

View File

@@ -19,7 +19,8 @@ cat >input <<EOF
toto := 1 toto := 1
toto toto
EOF EOF
run 0 1 -s run 0 1
run -noerr 0 1 -s
cat >input <<EOF cat >input <<EOF
@@ -30,7 +31,7 @@ d := a + b * c
d d
EOF EOF
run 0 7 run 0 7
run 0 7 -p run -noerr 0 7 -p
cat >input <<EOF cat >input <<EOF
@@ -47,4 +48,11 @@ cat >input <<EOF
a := 1 a := 1
d := a + b * c d := a + b * c
EOF EOF
run 1 '' run 1 'err: -:3.1: syntax error, unexpected end of file, expecting ( or identifier or number'
cat >input <<EOF
a := 072101108108111044032119111114108100033
a
EOF
run 1 'err: -:1.6-44: integer is out of range: 072101108108111044032119111114108100033'

View File

@@ -24,4 +24,4 @@ cat >input <<EOF
(1+2) * 3 (1+2) * 3
EOF EOF
run 0 9 run 0 9
run 0 9 -p run -noerr 0 9 -p

View File

@@ -25,7 +25,7 @@ number=1
exit=true exit=true
# top_builddir. # top_builddir.
cwd=`pwd` cwd=$(pwd)
# The exercised program. # The exercised program.
for p in "$cwd/examples/$medir/$me" "$cwd/examples/$me" for p in "$cwd/examples/$medir/$me" "$cwd/examples/$me"
@@ -56,10 +56,16 @@ trap cleanup 0 1 2 13 15
mkdir $$.dir mkdir $$.dir
cd $$.dir cd $$.dir
# run EXPECTED-EXIT-STATUS EXPECTED-OUTPUT [PARSER-OPTIONS] # run [-noerr] EXPECTED-EXIT-STATUS EXPECTED-OUTPUT [PARSER-OPTIONS]
# --------------------------------------------------------- # ------------------------------------------------------------------
# -noerr: ignore stderr, otherwise merge it into effective output.
run () run ()
{ {
local noerr=false
case $1 in
(-noerr) noerr=true; shift;;
esac
# Expected exit status. # Expected exit status.
local sta_exp="$1" local sta_exp="$1"
shift shift
@@ -68,9 +74,9 @@ run ()
shift shift
# Effective exit status. # Effective exit status.
local sta_eff=0 local sta_eff=0
$prog "$@" - <input >out_eff || sta_eff=$? $prog "$@" - <input >out_eff 2>err_eff || sta_eff=$?
# Effective output. # Combine effective output and error streams.
local out_eff="`cat out_eff`" local out_eff="$(cat out_eff && $noerr || sed -e 's/^/err: /g' err_eff)"
if test $sta_eff -eq $sta_exp; then if test $sta_eff -eq $sta_exp; then
if test "$out_eff" = "$out_exp"; then if test "$out_eff" = "$out_exp"; then
echo "$me: PASS: $number" echo "$me: PASS: $number"
@@ -82,7 +88,7 @@ run ()
echo "$me: FAIL: $number (expected status: $sta_exp, effective: $sta_eff)" echo "$me: FAIL: $number (expected status: $sta_exp, effective: $sta_eff)"
exit=false exit=false
fi fi
number=`expr $number + 1` number=$(expr $number + 1)
} }
# We have cd'd one level deeper. # We have cd'd one level deeper.