diff options
Diffstat (limited to 'tests/testwrapper.sh')
-rwxr-xr-x | tests/testwrapper.sh | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tests/testwrapper.sh b/tests/testwrapper.sh new file mode 100755 index 0000000..6a7e666 --- /dev/null +++ b/tests/testwrapper.sh @@ -0,0 +1,58 @@ +#!/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 |