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