1#!/bin/sh 2set -vx 3set -euvx 4 5# testwrapper.sh: run a flex test, typically called by a Makefile 6 7# Each test will exercise some feature or aspect of flex. Run the test with any 8# input it may need. 9 10INPUT_DIRECTORY="" 11INPUT_NAME="" 12INPUT_COUNT=0 13USE_REDIRECT=0 14DO_COMPARISON=0 15 16while getopts :d:i:rt1 OPTION ; do 17 case $OPTION in 18 d) INPUT_DIRECTORY=$OPTARG ;; 19 i) 20 if [ "$INPUT_NAME" = "" ] ; then 21 INPUT_NAME="$OPTARG" 22 else 23 INPUT_NAME="$INPUT_NAME $OPTARG" 24 fi 25 INPUT_COUNT=$(($INPUT_COUNT+1)) 26 ;; 27 r) USE_REDIRECT=1 ;; 28 t) USE_TABLES=1 ;; 29 1) DO_COMPARISON=1 ;; 30 esac 31done 32 33shift $(($OPTIND-1)) 34TESTNAME=$1 35 36INPUT_NAME=${INPUT_NAME:-$INPUT_DIRECTORY/`basename "${TESTNAME%.exe}"`.txt} 37 38if [ $DO_COMPARISON = 1 ] ; then 39 TEST_OUTPUT=`$TESTNAME < $INPUT_NAME` 40 REF_OUTPUT=`$TESTNAME 1 < $INPUT_NAME` 41 test "$TEST_OUTPUT" -eq "$REF_OUTPUT" 42 exit $? 43fi 44 45if [ $INPUT_COUNT -gt 1 ] ; then 46 $TESTNAME ${USE_TABLES:+${INPUT_DIRECTORY}/${TESTNAME%.exe}.tables} ${INPUT_NAME} 47 exit $? 48fi 49 50if [ -f ${INPUT_NAME} ] ; then 51 if [ $USE_REDIRECT = 1 ] ; then 52 $TESTNAME ${USE_TABLES:+${INPUT_DIRECTORY}/${TESTNAME%.exe}.tables} < $INPUT_NAME 53 else 54 $TESTNAME ${USE_TABLES:+${INPUT_DIRECTORY}/${TESTNAME%.exe}.tables} $INPUT_NAME 55 fi 56else 57 $TESTNAME 58fi 59