xref: /freebsd/contrib/byacc/test/run_test.sh (revision 98e903e7a0e26ebb7bec65bfe7f9a6b0d19dd966)
1*98e903e7SBaptiste Daroussin#!/bin/sh
2*98e903e7SBaptiste Daroussin# $Id: run_test.sh,v 1.8 2012/01/15 11:50:35 tom Exp $
3*98e903e7SBaptiste Daroussin# vi:ts=4 sw=4:
4*98e903e7SBaptiste Daroussin
5*98e903e7SBaptiste Daroussinif test $# = 1
6*98e903e7SBaptiste Daroussinthen
7*98e903e7SBaptiste Daroussin	PROG_DIR=`pwd`
8*98e903e7SBaptiste Daroussin	TEST_DIR=$1
9*98e903e7SBaptiste Daroussinelse
10*98e903e7SBaptiste Daroussin	PROG_DIR=..
11*98e903e7SBaptiste Daroussin	TEST_DIR=.
12*98e903e7SBaptiste Daroussinfi
13*98e903e7SBaptiste Daroussin
14*98e903e7SBaptiste DaroussinYACC=$PROG_DIR/yacc
15*98e903e7SBaptiste Daroussin
16*98e903e7SBaptiste Daroussintmpfile=temp$$
17*98e903e7SBaptiste Daroussinrm -f test-*
18*98e903e7SBaptiste Daroussin
19*98e903e7SBaptiste Daroussinecho '** '`date`
20*98e903e7SBaptiste Daroussinfor input in ${TEST_DIR}/*.y
21*98e903e7SBaptiste Daroussindo
22*98e903e7SBaptiste Daroussin	case $input in
23*98e903e7SBaptiste Daroussin	test*)
24*98e903e7SBaptiste Daroussin		echo "?? ignored $input"
25*98e903e7SBaptiste Daroussin		;;
26*98e903e7SBaptiste Daroussin	*)
27*98e903e7SBaptiste Daroussin		root=`basename $input .y`
28*98e903e7SBaptiste Daroussin		ROOT="test-$root"
29*98e903e7SBaptiste Daroussin		prefix=${root}_
30*98e903e7SBaptiste Daroussin
31*98e903e7SBaptiste Daroussin		OPTS=
32*98e903e7SBaptiste Daroussin		OPT2=
33*98e903e7SBaptiste Daroussin		TYPE=".output .tab.c .tab.h"
34*98e903e7SBaptiste Daroussin		case $input in
35*98e903e7SBaptiste Daroussin		${TEST_DIR}/code_*)
36*98e903e7SBaptiste Daroussin			OPTS="$OPTS -r"
37*98e903e7SBaptiste Daroussin			TYPE="$TYPE .code.c"
38*98e903e7SBaptiste Daroussin			prefix=`echo "$prefix" | sed -e 's/^code_//'`
39*98e903e7SBaptiste Daroussin			;;
40*98e903e7SBaptiste Daroussin		${TEST_DIR}/pure_*)
41*98e903e7SBaptiste Daroussin			OPTS="$OPTS -P"
42*98e903e7SBaptiste Daroussin			prefix=`echo "$prefix" | sed -e 's/^pure_//'`
43*98e903e7SBaptiste Daroussin			;;
44*98e903e7SBaptiste Daroussin		${TEST_DIR}/quote_*)
45*98e903e7SBaptiste Daroussin			OPT2="-s"
46*98e903e7SBaptiste Daroussin			;;
47*98e903e7SBaptiste Daroussin		esac
48*98e903e7SBaptiste Daroussin
49*98e903e7SBaptiste Daroussin		for opt2 in "" $OPT2
50*98e903e7SBaptiste Daroussin		do
51*98e903e7SBaptiste Daroussin			$YACC $OPTS $opt2 -v -d -p $prefix -b $ROOT${opt2} $input
52*98e903e7SBaptiste Daroussin			for type in $TYPE
53*98e903e7SBaptiste Daroussin			do
54*98e903e7SBaptiste Daroussin				REF=${TEST_DIR}/${root}${opt2}${type}
55*98e903e7SBaptiste Daroussin				CMP=${ROOT}${opt2}${type}
56*98e903e7SBaptiste Daroussin				if test ! -f $CMP
57*98e903e7SBaptiste Daroussin				then
58*98e903e7SBaptiste Daroussin					echo "...not found $CMP"
59*98e903e7SBaptiste Daroussin				else
60*98e903e7SBaptiste Daroussin					sed	-e s,$CMP,$REF, \
61*98e903e7SBaptiste Daroussin						-e /YYPATCH/d \
62*98e903e7SBaptiste Daroussin						-e 's,#line \([1-9][0-9]*\) "'$TEST_DIR'/,#line \1 ",' \
63*98e903e7SBaptiste Daroussin						< $CMP >$tmpfile \
64*98e903e7SBaptiste Daroussin						&& mv $tmpfile $CMP
65*98e903e7SBaptiste Daroussin					if test ! -f $REF
66*98e903e7SBaptiste Daroussin					then
67*98e903e7SBaptiste Daroussin						mv $CMP $REF
68*98e903e7SBaptiste Daroussin						echo "...saved $REF"
69*98e903e7SBaptiste Daroussin					elif ( cmp -s $REF $CMP )
70*98e903e7SBaptiste Daroussin					then
71*98e903e7SBaptiste Daroussin						echo "...ok $REF"
72*98e903e7SBaptiste Daroussin						rm -f $CMP
73*98e903e7SBaptiste Daroussin					else
74*98e903e7SBaptiste Daroussin						echo "...diff $REF"
75*98e903e7SBaptiste Daroussin						diff -u $REF $CMP
76*98e903e7SBaptiste Daroussin					fi
77*98e903e7SBaptiste Daroussin				fi
78*98e903e7SBaptiste Daroussin			done
79*98e903e7SBaptiste Daroussin		done
80*98e903e7SBaptiste Daroussin		;;
81*98e903e7SBaptiste Daroussin	esac
82*98e903e7SBaptiste Daroussindone
83