xref: /netbsd-src/external/bsd/flex/dist/tests/testwrapper.sh (revision 463ae347b383ca644b1399e7e5228310d0bdf969)
1*463ae347Schristos#!/bin/sh
2*463ae347Schristosset -vx
3*463ae347Schristosset -euvx
430da1778Schristos
530da1778Schristos# testwrapper.sh: run a flex test, typically called by a Makefile
630da1778Schristos
7*463ae347Schristos# Each test will exercise some feature or aspect of flex. Run the test with any
8*463ae347Schristos# input it may need.
930da1778Schristos
1030da1778SchristosINPUT_DIRECTORY=""
1130da1778SchristosINPUT_NAME=""
1230da1778SchristosINPUT_COUNT=0
1330da1778SchristosUSE_REDIRECT=0
1430da1778SchristosDO_COMPARISON=0
1530da1778Schristos
1630da1778Schristoswhile getopts :d:i:rt1 OPTION ; do
1730da1778Schristos    case $OPTION in
1830da1778Schristos        d) INPUT_DIRECTORY=$OPTARG ;;
1930da1778Schristos        i)
20*463ae347Schristos            if [ "$INPUT_NAME" = "" ] ; then
2130da1778Schristos                INPUT_NAME="$OPTARG"
2230da1778Schristos            else
2330da1778Schristos                INPUT_NAME="$INPUT_NAME $OPTARG"
2430da1778Schristos            fi
2530da1778Schristos            INPUT_COUNT=$(($INPUT_COUNT+1))
2630da1778Schristos            ;;
2730da1778Schristos        r) USE_REDIRECT=1 ;;
2830da1778Schristos        t) USE_TABLES=1 ;;
2930da1778Schristos        1) DO_COMPARISON=1 ;;
3030da1778Schristos    esac
3130da1778Schristosdone
3230da1778Schristos
33*463ae347Schristosshift $(($OPTIND-1))
34*463ae347SchristosTESTNAME=$1
3530da1778Schristos
36*463ae347SchristosINPUT_NAME=${INPUT_NAME:-$INPUT_DIRECTORY/`basename "${TESTNAME%.exe}"`.txt}
3730da1778Schristos
38*463ae347Schristosif [ $DO_COMPARISON = 1 ] ; then
39*463ae347Schristos    TEST_OUTPUT=`$TESTNAME < $INPUT_NAME`
40*463ae347Schristos    REF_OUTPUT=`$TESTNAME 1 < $INPUT_NAME`
41*463ae347Schristos    test "$TEST_OUTPUT" -eq "$REF_OUTPUT"
4230da1778Schristos    exit $?
4330da1778Schristosfi
4430da1778Schristos
4530da1778Schristosif [ $INPUT_COUNT -gt 1 ] ; then
4656bd8546Schristos    $TESTNAME ${USE_TABLES:+${INPUT_DIRECTORY}/${TESTNAME%.exe}.tables} ${INPUT_NAME}
4730da1778Schristos    exit $?
4830da1778Schristosfi
4930da1778Schristos
5056bd8546Schristosif [ -f ${INPUT_NAME} ] ; then
51*463ae347Schristos    if [ $USE_REDIRECT = 1 ] ; then
5256bd8546Schristos        $TESTNAME ${USE_TABLES:+${INPUT_DIRECTORY}/${TESTNAME%.exe}.tables} < $INPUT_NAME
5330da1778Schristos    else
5456bd8546Schristos        $TESTNAME ${USE_TABLES:+${INPUT_DIRECTORY}/${TESTNAME%.exe}.tables} $INPUT_NAME
5530da1778Schristos    fi
5630da1778Schristoselse
5730da1778Schristos    $TESTNAME
5830da1778Schristosfi
59