xref: /netbsd-src/external/bsd/flex/dist/tests/testwrapper.sh (revision 463ae347b383ca644b1399e7e5228310d0bdf969)
1#!/bin/sh
2set -vx
3set -euvx
4
5# testwrapper.sh: run a flex test, typically called by a Makefile
6
7# Each test will exercise some feature or aspect of flex. Run the test with any
8# input it may need.
9
10INPUT_DIRECTORY=""
11INPUT_NAME=""
12INPUT_COUNT=0
13USE_REDIRECT=0
14DO_COMPARISON=0
15
16while getopts :d:i:rt1 OPTION ; do
17    case $OPTION in
18        d) INPUT_DIRECTORY=$OPTARG ;;
19        i)
20            if [ "$INPUT_NAME" = "" ] ; then
21                INPUT_NAME="$OPTARG"
22            else
23                INPUT_NAME="$INPUT_NAME $OPTARG"
24            fi
25            INPUT_COUNT=$(($INPUT_COUNT+1))
26            ;;
27        r) USE_REDIRECT=1 ;;
28        t) USE_TABLES=1 ;;
29        1) DO_COMPARISON=1 ;;
30    esac
31done
32
33shift $(($OPTIND-1))
34TESTNAME=$1
35
36INPUT_NAME=${INPUT_NAME:-$INPUT_DIRECTORY/`basename "${TESTNAME%.exe}"`.txt}
37
38if [ $DO_COMPARISON = 1 ] ; then
39    TEST_OUTPUT=`$TESTNAME < $INPUT_NAME`
40    REF_OUTPUT=`$TESTNAME 1 < $INPUT_NAME`
41    test "$TEST_OUTPUT" -eq "$REF_OUTPUT"
42    exit $?
43fi
44
45if [ $INPUT_COUNT -gt 1 ] ; then
46    $TESTNAME ${USE_TABLES:+${INPUT_DIRECTORY}/${TESTNAME%.exe}.tables} ${INPUT_NAME}
47    exit $?
48fi
49
50if [ -f ${INPUT_NAME} ] ; then
51    if [ $USE_REDIRECT = 1 ] ; then
52        $TESTNAME ${USE_TABLES:+${INPUT_DIRECTORY}/${TESTNAME%.exe}.tables} < $INPUT_NAME
53    else
54        $TESTNAME ${USE_TABLES:+${INPUT_DIRECTORY}/${TESTNAME%.exe}.tables} $INPUT_NAME
55    fi
56else
57    $TESTNAME
58fi
59