#!/usr/bin/env bash
#
# Copyright IBM Corp. 2020
#
# Usage: runtests <make> <tests>
#

MAKE="$1"
shift
TESTS=""
OPTS=''
MAKE_OPTS=''
while [ $# -gt 0 ] ; do

    OPT=$1
    shift
    case $OPT in

        --script-args )
            OPTS="$OPTS $1"
            MAKE_OPTS="$MAKE_OPTS TESTCASE_ARGS=$1"
            shift
            ;;

        --coverage )
            COVER_DB=$1
            shift

            OPTS="$OPTS $OPT $COVER_DB"
            MAKE_OPTS="$MAKE_OPTS COVER_DB=../$COVER_DB"
            ;;

        * )
            TESTS="$TESTS $OPT"
            ;;
    esac
done

if [[ "${V:-0}" -lt 1 ]] ; then
        MAKE_OPTS="$MAKE_OPTS -s"
fi

if [[ -z "${_TESTS_RUNNING}" ]] ; then
        # Do this only once at start of test run
        export _TESTS_RUNNING=1

        testsuite_init
        trap testsuite_exit exit
        # Suppress test results on keyboard interrupt
        trap "trap exit ; exit 1" SIGINT
fi

for TEST in ${TESTS} ; do
        if [[ -d "${TEST}" ]] ; then
                # Enter sub-directory
                ${MAKE} -C "${TEST}" $MAKE_OPTS check || exit 1
        else
                # Enter test
                ABS_TEST="$PWD/$TEST"
                REL_TEST="${ABS_TEST##$TOPDIR}"
                test_run "${REL_TEST}" "${ABS_TEST} $OPTS" </dev/null || exit 1
        fi
done

exit 0
