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