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