| #!/bin/sh |
| set -vx |
| set -euvx |
| |
| # testwrapper.sh: run a flex test, typically called by a Makefile |
| |
| # Each test will exercise some feature or aspect of flex. Run the test with any |
| # input it may need. |
| |
| INPUT_DIRECTORY="" |
| INPUT_NAME="" |
| INPUT_COUNT=0 |
| USE_REDIRECT=0 |
| DO_COMPARISON=0 |
| |
| while getopts :d:i:rt1 OPTION ; do |
| case $OPTION in |
| d) INPUT_DIRECTORY=$OPTARG ;; |
| i) |
| if [ "$INPUT_NAME" = "" ] ; then |
| INPUT_NAME="$OPTARG" |
| else |
| INPUT_NAME="$INPUT_NAME $OPTARG" |
| fi |
| INPUT_COUNT=$(($INPUT_COUNT+1)) |
| ;; |
| r) USE_REDIRECT=1 ;; |
| t) USE_TABLES=1 ;; |
| 1) DO_COMPARISON=1 ;; |
| esac |
| done |
| |
| shift $(($OPTIND-1)) |
| TESTNAME=$1 |
| |
| INPUT_NAME=${INPUT_NAME:-$INPUT_DIRECTORY/`basename "${TESTNAME%.exe}"`.txt} |
| |
| if [ $DO_COMPARISON = 1 ] ; then |
| TEST_OUTPUT=`$TESTNAME < $INPUT_NAME` |
| REF_OUTPUT=`$TESTNAME 1 < $INPUT_NAME` |
| test "$TEST_OUTPUT" -eq "$REF_OUTPUT" |
| exit $? |
| fi |
| |
| if [ $INPUT_COUNT -gt 1 ] ; then |
| $TESTNAME ${USE_TABLES:+${INPUT_DIRECTORY}/${TESTNAME%.exe}.tables} ${INPUT_NAME} |
| exit $? |
| fi |
| |
| if [ -f ${INPUT_NAME} ] ; then |
| if [ $USE_REDIRECT = 1 ] ; then |
| $TESTNAME ${USE_TABLES:+${INPUT_DIRECTORY}/${TESTNAME%.exe}.tables} < $INPUT_NAME |
| else |
| $TESTNAME ${USE_TABLES:+${INPUT_DIRECTORY}/${TESTNAME%.exe}.tables} $INPUT_NAME |
| fi |
| else |
| $TESTNAME |
| fi |