Edit

kc3-lang/kc3/test/test_runner

Branch :

  • test/test_runner
  • #!/bin/sh
    ## kc3
    ## Copyright from 2022 to 2026 kmx.io <contact@kmx.io>
    ##
    ## Permission is hereby granted to use this software granted the above
    ## copyright notice and this permission paragraph are included in all
    ## copies and substantial portions of this software.
    ##
    ## THIS SOFTWARE IS PROVIDED "AS-IS" WITHOUT ANY GUARANTEE OF
    ## PURPOSE AND PERFORMANCE. IN NO EVENT WHATSOEVER SHALL THE
    ## AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
    ## THIS SOFTWARE.
    
    . "$(dirname "$0")/test.subr"
    
    TEST_RUNNER="$1"
    TARGET="$2"
    TEST_RUNNER_NAME="${TEST_RUNNER##*/}"
    TEST_PROG="$TEST_RUNNER_NAME"
    case "$TEST_PROG" in
        *_asan)  TEST_PROG="${TEST_PROG%_asan}" ;;
        *_cov)   TEST_PROG="${TEST_PROG%_cov}" ;;
        *_debug) TEST_PROG="${TEST_PROG%_debug}" ;;
    esac
    
    RESULT=test_ok
    timeout 30 ${TEST_RUNNER} --bool-ptr --load ${TARGET}.kc3 --quit > ${TARGET}.out 2>&1
    echo $? > ${TARGET}.ret
    EXPECTED_OUT=${TARGET}.out.expected
    if [ "x$TEST_PROG" != "x$TEST_RUNNER_NAME" ]; then
        EXPECTED_OUT=${TARGET}.out.variant.expected
        sed -e "s/^${TEST_PROG}:/${TEST_RUNNER_NAME}:/" \
            ${TARGET}.out.expected > ${EXPECTED_OUT}
    fi
    if ! diff -abu ${EXPECTED_OUT} ${TARGET}.out \
         > ${TARGET}.diff
    then
        RESULT=test_ko
    fi
    if ! diff -abu ${TARGET}.ret.expected ${TARGET}.ret \
         >> ${TARGET}.diff
    then
        RESULT=test_ko
    fi
    if [ "x$EXPECTED_OUT" != "x${TARGET}.out.expected" ]; then
        rm ${EXPECTED_OUT}
    fi
    if [ "x$RESULT" = "xtest_ok" ]; then
        rm ${TARGET}.diff
        test_ok ${TARGET}
    else
        test_ko ${TARGET}
    fi