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