mirror of
https://git.savannah.gnu.org/git/bison.git
synced 2026-03-09 12:23:04 +00:00
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:
@@ -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'
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
Reference in New Issue
Block a user