exile.h/test.sh

90 baris
1.7 KiB
Bash
Mentah Pandangan Normal Riwayat

2021-06-05 14:07:11 +02:00
#!/bin/sh
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m'
2021-06-06 09:02:30 +02:00
COUNT_SUCCEEDED=0
COUNT_FAILED=0
2021-06-06 08:57:24 +02:00
function print_fail()
2021-06-05 14:07:11 +02:00
{
echo -e "${RED}$@${NC}" 1>&2
}
2021-06-06 08:57:24 +02:00
function print_success()
2021-06-05 14:07:11 +02:00
{
echo -e "${GREEN}$@${NC}"
}
2021-06-06 09:02:30 +02:00
function runtest_fail()
{
print_fail "failed"
COUNT_FAILED=$(($COUNT_FAILED+1))
}
function runtest_success()
{
print_success "ok"
COUNT_SUCCEEDED=$((COUNT_SUCCEEDED+1))
}
2021-06-05 14:07:11 +02:00
function runtest()
{
2021-06-06 09:27:45 +02:00
testname="$1"
must_exit_zero="$2"
test_log_file="$3"
echo "Running: $testname. Date: $(date)" > "${test_log_file}"
2021-06-05 14:07:11 +02:00
echo -n "Running $1... "
#exit 1 to suppress shell message like "./test.sh: line 18: pid Bad system call"
2021-06-06 09:27:45 +02:00
(./test $1 || exit 1) &>> "${test_log_file}"
2021-06-05 14:07:11 +02:00
ret=$?
2021-06-06 09:27:45 +02:00
SUCCESS=0
2021-06-05 14:07:11 +02:00
if [ $must_exit_zero -eq 1 ] ; then
if [ $ret -eq 0 ] ; then
2021-06-06 09:02:30 +02:00
runtest_success
2021-06-06 09:27:45 +02:00
SUCCESS=1
2021-06-05 14:07:11 +02:00
else
2021-06-06 09:02:30 +02:00
runtest_fail
2021-06-05 14:07:11 +02:00
fi
else
if [ $ret -eq 0 ] ; then
2021-06-06 09:02:30 +02:00
runtest_fail
2021-06-05 14:07:11 +02:00
else
2021-06-06 09:02:30 +02:00
runtest_success
2021-06-06 09:27:45 +02:00
SUCCESS=1
2021-06-05 14:07:11 +02:00
fi
fi
2021-06-06 09:27:45 +02:00
echo "Finished: ${testname}. Date: $(date). Success: $SUCCESS" >> "${test_log_file}"
2021-06-05 14:07:11 +02:00
}
2021-06-06 09:27:45 +02:00
GIT_ID=$( git log --pretty="format:%h" -n1 )
TIMESTAMP=$(date +%s)
LOG_OUTPUT_DIR=$1
if [ -z "$LOG_OUTPUT_DIR" ] ; then
LOG_OUTPUT_DIR="./logs/"
fi
LOG_OUTPUT_DIR_PATH="${LOG_OUTPUT_DIR}/qssb_test_${GIT_ID}_${TIMESTAMP}"
[ -d "$LOG_OUTPUT_DIR_PATH" ] || mkdir -p "$LOG_OUTPUT_DIR_PATH"
2021-06-05 14:07:11 +02:00
for test in $( ./test --dumptests ) ; do
testname=$( echo $test | cut -d":" -f1 )
must_exit_zero=$( echo "$test" | cut -d":" -f2 )
2021-06-06 09:27:45 +02:00
runtest "$testname" $must_exit_zero "${LOG_OUTPUT_DIR_PATH}/log.${testname}"
2021-06-05 14:07:11 +02:00
done
2021-06-06 09:02:30 +02:00
echo
2021-06-06 09:27:45 +02:00
echo "Tests finished. Logs in $(realpath ${LOG_OUTPUT_DIR_PATH})"
2021-06-06 09:02:30 +02:00
echo "Succeeded: $COUNT_SUCCEEDED"
echo "Failed: $COUNT_FAILED"
2021-06-06 09:27:45 +02:00
2021-06-06 09:02:30 +02:00
if [ $COUNT_FAILED -gt 0 ] ; then
exit 1
fi
exit 0