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