xref: /netbsd/external/bsd/byacc/dist/test/run_test.sh (revision 7953eebe)
1f7a86c12Schristos#!/bin/sh
2*7953eebeSchristos# Id: run_test.sh,v 1.6 2010/06/08 08:53:38 tom Exp
3*7953eebeSchristos# vi:ts=4 sw=4:
4*7953eebeSchristos
5*7953eebeSchristosif test $# = 1
6*7953eebeSchristosthen
7*7953eebeSchristos	PROG_DIR=`pwd`
8*7953eebeSchristos	TEST_DIR=$1
9*7953eebeSchristoselse
10*7953eebeSchristos	PROG_DIR=..
11*7953eebeSchristos	TEST_DIR=.
12*7953eebeSchristosfi
13*7953eebeSchristos
14*7953eebeSchristosYACC=$PROG_DIR/yacc
15*7953eebeSchristos
16*7953eebeSchristostmpfile=temp$$
17*7953eebeSchristos
18f7a86c12Schristosecho '** '`date`
19*7953eebeSchristosfor i in ${TEST_DIR}/*.y
20f7a86c12Schristosdo
21f7a86c12Schristos	case $i in
22f7a86c12Schristos	test*)
23f7a86c12Schristos		echo "?? ignored $i"
24f7a86c12Schristos		;;
25f7a86c12Schristos	*)
26f7a86c12Schristos		root=`basename $i .y`
27f7a86c12Schristos		ROOT="test-$root"
28*7953eebeSchristos		prefix=${root}_
29*7953eebeSchristos
30*7953eebeSchristos		OPTS=
31*7953eebeSchristos		TYPE=".output .tab.c .tab.h"
32*7953eebeSchristos		case $i in
33*7953eebeSchristos		${TEST_DIR}/code_*)
34*7953eebeSchristos			OPTS="$OPTS -r"
35*7953eebeSchristos			TYPE="$TYPE .code.c"
36*7953eebeSchristos			prefix=`echo "$prefix" | sed -e 's/^code_//'`
37*7953eebeSchristos			;;
38*7953eebeSchristos		${TEST_DIR}/pure_*)
39*7953eebeSchristos			OPTS="$OPTS -P"
40*7953eebeSchristos			prefix=`echo "$prefix" | sed -e 's/^pure_//'`
41*7953eebeSchristos			;;
42*7953eebeSchristos		esac
43*7953eebeSchristos
44*7953eebeSchristos		$YACC $OPTS -v -d -p $prefix -b $ROOT $i
45*7953eebeSchristos		for type in $TYPE
46f7a86c12Schristos		do
47*7953eebeSchristos			REF=${TEST_DIR}/${root}${type}
48f7a86c12Schristos			CMP=${ROOT}${type}
49f7a86c12Schristos			if test ! -f $CMP ; then
50f7a86c12Schristos				echo "...not found $CMP"
51f7a86c12Schristos				continue
52f7a86c12Schristos			fi
53*7953eebeSchristos			sed	-e s,$CMP,$REF, \
54f7a86c12Schristos				-e /YYPATCH/d \
55*7953eebeSchristos				-e 's,#line \([1-9][0-9]*\) "'$TEST_DIR'/,#line \1 ",' \
56*7953eebeSchristos				< $CMP >$tmpfile \
57*7953eebeSchristos				&& mv $tmpfile $CMP
58*7953eebeSchristos			if test ! -f $REF
59*7953eebeSchristos			then
60*7953eebeSchristos				mv $CMP $REF
61*7953eebeSchristos				echo "...saved $REF"
62*7953eebeSchristos			elif ( cmp -s $REF $CMP )
63f7a86c12Schristos			then
64f7a86c12Schristos				echo "...ok $REF"
65f7a86c12Schristos				rm -f $CMP
66f7a86c12Schristos			else
67f7a86c12Schristos				echo "...diff $REF"
68*7953eebeSchristos				diff -u $REF $CMP
69f7a86c12Schristos			fi
70f7a86c12Schristos		done
71f7a86c12Schristos		;;
72f7a86c12Schristos	esac
73f7a86c12Schristosdone
74