freebsd-skq/contrib/byacc/test/run_test.sh
bapt 913116490c Import byacc from invisible island, it brings us lots of compatibilities with
bison, keeping full compatibility with our previous yacc implementation.

Also bring the ability to create reentrant parser

This fix bin/140309 [1]

PR:		bin/140309 [1]
Submitted by:	Philippe Pepiot <ksh@philpep.org> [1]
Approved by:	des (mentor)
MFC after:	1 month
2012-05-21 13:31:26 +00:00

83 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
# $Id: run_test.sh,v 1.8 2012/01/15 11:50:35 tom Exp $
# vi:ts=4 sw=4:
if test $# = 1
then
PROG_DIR=`pwd`
TEST_DIR=$1
else
PROG_DIR=..
TEST_DIR=.
fi
YACC=$PROG_DIR/yacc
tmpfile=temp$$
rm -f test-*
echo '** '`date`
for input in ${TEST_DIR}/*.y
do
case $input in
test*)
echo "?? ignored $input"
;;
*)
root=`basename $input .y`
ROOT="test-$root"
prefix=${root}_
OPTS=
OPT2=
TYPE=".output .tab.c .tab.h"
case $input in
${TEST_DIR}/code_*)
OPTS="$OPTS -r"
TYPE="$TYPE .code.c"
prefix=`echo "$prefix" | sed -e 's/^code_//'`
;;
${TEST_DIR}/pure_*)
OPTS="$OPTS -P"
prefix=`echo "$prefix" | sed -e 's/^pure_//'`
;;
${TEST_DIR}/quote_*)
OPT2="-s"
;;
esac
for opt2 in "" $OPT2
do
$YACC $OPTS $opt2 -v -d -p $prefix -b $ROOT${opt2} $input
for type in $TYPE
do
REF=${TEST_DIR}/${root}${opt2}${type}
CMP=${ROOT}${opt2}${type}
if test ! -f $CMP
then
echo "...not found $CMP"
else
sed -e s,$CMP,$REF, \
-e /YYPATCH/d \
-e 's,#line \([1-9][0-9]*\) "'$TEST_DIR'/,#line \1 ",' \
< $CMP >$tmpfile \
&& mv $tmpfile $CMP
if test ! -f $REF
then
mv $CMP $REF
echo "...saved $REF"
elif ( cmp -s $REF $CMP )
then
echo "...ok $REF"
rm -f $CMP
else
echo "...diff $REF"
diff -u $REF $CMP
fi
fi
done
done
;;
esac
done