54 lines
1.4 KiB
Bash
Executable File
54 lines
1.4 KiB
Bash
Executable File
#!/bin/bash -vx
|
|
set -euo pipefail
|
|
|
|
# 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
|
|
|
|
TESTNAME="${!OPTIND}"
|
|
|
|
INPUT_NAME=${INPUT_NAME:-`basename $TESTNAME`.txt}
|
|
|
|
if [ "$DO_COMPARISON" -eq "1" ] ; then
|
|
test `$TESTNAME 1 < $INPUT_DIRECTORY/$INPUT_NAME` -eq `$TESTNAME < $INPUT_DIRECTORY/$INPUT_NAME`
|
|
exit $?
|
|
fi
|
|
|
|
if [ $INPUT_COUNT -gt 1 ] ; then
|
|
$TESTNAME ${USE_TABLES:+${INPUT_DIRECTORY}/${TESTNAME}.tables} ${INPUT_NAME}
|
|
exit $?
|
|
fi
|
|
|
|
if [ -f ${INPUT_DIRECTORY}/${INPUT_NAME} ] ; then
|
|
if [ $USE_REDIRECT == 1 ] ; then
|
|
$TESTNAME ${USE_TABLES:+${INPUT_DIRECTORY}/${TESTNAME}.tables} < $INPUT_DIRECTORY/$INPUT_NAME
|
|
else
|
|
$TESTNAME ${USE_TABLES:+${INPUT_DIRECTORY}/${TESTNAME}.tables} $INPUT_DIRECTORY/$INPUT_NAME
|
|
fi
|
|
else
|
|
$TESTNAME
|
|
fi
|