#!/bin/bash

if [ -z "${CRASH_WORKER_SYSTEM_TESTS}" ]; then
    CRASH_WORKER_SYSTEM_TESTS="/usr/libexec/crash-worker/system-tests"
fi

. ${CRASH_WORKER_SYSTEM_TESTS}/utils/minicore-utils.sh

LOG_FILE=/tmp/crash-worker_system-tests.log

function run_test {
    RED="\033[0;31m"
    GREEN="\033[0;32m"
    YELLOW="\033[1;33m"
    NORMAL="\033[0m"
    TEST=${1}
    test_result=0
    echo -ne "${TEST}:\t"
    echo "===================================" >> ${LOG_FILE}
    echo "Test ${TEST}:" >> ${LOG_FILE}
    echo "===================================" >> ${LOG_FILE}
    ${CRASH_WORKER_SYSTEM_TESTS}/${TEST}/${TEST}.sh 1>> ${LOG_FILE} 2>&1
    case $? in
        ${SUCCESS_CODE})
        echo -e "${GREEN}SUCCESS${NORMAL}"
        echo "SUCCESS" >> ${LOG_FILE}
        ;;
        ${FAIL_CODE})
        echo -e "${RED}FAIL${NORMAL}"
        echo "FAIL" >> ${LOG_FILE}
        test_result=1
        ;;
        ${SKIP_CODE})
        echo -e "${YELLOW}SKIP${NORMAL}"
        echo "SKIP" >> ${LOG_FILE}
        ;;
    esac
    return ${test_result}
}

if [ -f ${LOG_FILE} ]; then
    rm ${LOG_FILE}
fi

tests_result=0
for DIR in ${CRASH_WORKER_SYSTEM_TESTS}/*/; do
    test_name=`basename ${DIR}`

    if [ -x ${CRASH_WORKER_SYSTEM_TESTS}/${test_name}/${test_name}.sh ]; then
        if ! run_test ${test_name}; then
            tests_result=1
        fi
    fi
done
exit ${tests_result}
