Home | History | Annotate | Line # | Download | only in test
run_test.sh revision 1.1.1.4
      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