Edit

kc3-lang/kc3/test/http_test

Branch :

  • test/http_test
  • #!/bin/sh
    cd "$(dirname $0)/http" || exit
    
    TEST_COLOR_KO=""
    TEST_COLOR_OK=""
    TEST_COLOR_RESET=""
    TEST_COUNT=0
    TEST_KO=0
    TEST_OK=0
    
    if [ "x$KC3S" = "x" ]; then
        if [ -f ../../kc3s/kc3s ]; then
    	KC3S=../../kc3s/kc3s
        elif [ -f ../../kc3s ]; then
    	KC3S=../../kc3s
        fi
    fi
    
    test_ko() {
        printf "%s" "${TEST_COLOR_KO}F${TEST_COLOR_RESET}"
        TEST_KO=$(($TEST_KO + 1))
        TEST_COUNT=$(($TEST_COUNT + 1))
    }
    
    test_ok() {
        printf "%s" "${TEST_COLOR_OK}.${TEST_COLOR_RESET}"
        TEST_OK=$(($TEST_OK + 1))
        TEST_COUNT=$(($TEST_COUNT + 1))
    }
    
    if [ $# = 0 ]; then
        if [ "x${HTTP_TEST}" = "x" ]; then
            TARGETS="$(ls -1 *.kc3 | sed -e 's/[.]kc3$//')"
        else
            TARGETS="${HTTP_TEST}"
        fi
    else
        TARGETS="$@"
    fi
    
    rm -f *.diff *.out *.ret
    for TARGET in $TARGETS; do
        RESULT=test_ok
        $KC3S --load ${TARGET}.kc3 --quit > ${TARGET}.out 2>&1
        echo $? > ${TARGET}.ret
        if ! diff -abu ${TARGET}.out.expected ${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$RESULT" = "xtest_ok" ]; then
            rm ${TARGET}.diff
            test_ok
        else
            test_ko
        fi
    done
    echo
    DIFFS="$(for TARGET in $TARGETS; do
        if [ -f "${TARGET}.diff" ]; then
            printf "%s " "${TARGET}.diff"
        fi
    done)"
    if [ "x$DIFFS" != "x" ]; then
        ls $DIFFS
        less $DIFFS || cat $DIFFS
    fi
    echo
    printf "%s" "Total $TEST_COUNT tests. "
    printf "%s" "${TEST_COLOR_OK}OK $TEST_OK ($(($TEST_OK * 100 / $TEST_COUNT))%)${TEST_COLOR_RESET}. "
    echo "${TEST_COLOR_KO}KO $TEST_KO ($(($TEST_KO * 100 / $TEST_COUNT))%)${TEST_COLOR_RESET}."
    
    if [ "x$TEST_KO" = "x0" ]; then
        exit 0
    fi
    
    exit 1