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