59 lines
1.4 KiB
Bash
Executable File
59 lines
1.4 KiB
Bash
Executable File
#!/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
|