1234949Sbapt#!/bin/sh
2234949Sbapt# $Id: run_test.sh,v 1.8 2012/01/15 11:50:35 tom Exp $
3234949Sbapt# vi:ts=4 sw=4:
4234949Sbapt
5234949Sbaptif test $# = 1
6234949Sbaptthen
7234949Sbapt	PROG_DIR=`pwd`
8234949Sbapt	TEST_DIR=$1
9234949Sbaptelse
10234949Sbapt	PROG_DIR=..
11234949Sbapt	TEST_DIR=.
12234949Sbaptfi
13234949Sbapt
14234949SbaptYACC=$PROG_DIR/yacc
15234949Sbapt
16234949Sbapttmpfile=temp$$
17234949Sbaptrm -f test-*
18234949Sbapt
19234949Sbaptecho '** '`date`
20234949Sbaptfor input in ${TEST_DIR}/*.y
21234949Sbaptdo
22234949Sbapt	case $input in
23234949Sbapt	test*)
24234949Sbapt		echo "?? ignored $input"
25234949Sbapt		;;
26234949Sbapt	*)
27234949Sbapt		root=`basename $input .y`
28234949Sbapt		ROOT="test-$root"
29234949Sbapt		prefix=${root}_
30234949Sbapt
31234949Sbapt		OPTS=
32234949Sbapt		OPT2=
33234949Sbapt		TYPE=".output .tab.c .tab.h"
34234949Sbapt		case $input in
35234949Sbapt		${TEST_DIR}/code_*)
36234949Sbapt			OPTS="$OPTS -r"
37234949Sbapt			TYPE="$TYPE .code.c"
38234949Sbapt			prefix=`echo "$prefix" | sed -e 's/^code_//'`
39234949Sbapt			;;
40234949Sbapt		${TEST_DIR}/pure_*)
41234949Sbapt			OPTS="$OPTS -P"
42234949Sbapt			prefix=`echo "$prefix" | sed -e 's/^pure_//'`
43234949Sbapt			;;
44234949Sbapt		${TEST_DIR}/quote_*)
45234949Sbapt			OPT2="-s"
46234949Sbapt			;;
47234949Sbapt		esac
48234949Sbapt
49234949Sbapt		for opt2 in "" $OPT2
50234949Sbapt		do
51234949Sbapt			$YACC $OPTS $opt2 -v -d -p $prefix -b $ROOT${opt2} $input
52234949Sbapt			for type in $TYPE
53234949Sbapt			do
54234949Sbapt				REF=${TEST_DIR}/${root}${opt2}${type}
55234949Sbapt				CMP=${ROOT}${opt2}${type}
56234949Sbapt				if test ! -f $CMP
57234949Sbapt				then
58234949Sbapt					echo "...not found $CMP"
59234949Sbapt				else
60234949Sbapt					sed	-e s,$CMP,$REF, \
61234949Sbapt						-e /YYPATCH/d \
62234949Sbapt						-e 's,#line \([1-9][0-9]*\) "'$TEST_DIR'/,#line \1 ",' \
63234949Sbapt						< $CMP >$tmpfile \
64234949Sbapt						&& mv $tmpfile $CMP
65234949Sbapt					if test ! -f $REF
66234949Sbapt					then
67234949Sbapt						mv $CMP $REF
68234949Sbapt						echo "...saved $REF"
69234949Sbapt					elif ( cmp -s $REF $CMP )
70234949Sbapt					then
71234949Sbapt						echo "...ok $REF"
72234949Sbapt						rm -f $CMP
73234949Sbapt					else
74234949Sbapt						echo "...diff $REF"
75234949Sbapt						diff -u $REF $CMP
76234949Sbapt					fi
77234949Sbapt				fi
78234949Sbapt			done
79234949Sbapt		done
80234949Sbapt		;;
81234949Sbapt	esac
82234949Sbaptdone
83