Albert S
5cd0a36ced
The changes in 01c5cbf701
did not take into account that "tee" would change the exit code.
Use a protable alternative to &>> now.
101 rader
1.9 KiB
Bash
Executable File
101 rader
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
COUNT_SUCCEEDED=0
|
|
COUNT_FAILED=0
|
|
COUNT_SKIPPED=0
|
|
|
|
print_fail()
|
|
{
|
|
printf "${RED}$@${NC}\n" 1>&2
|
|
}
|
|
|
|
print_success()
|
|
{
|
|
printf "${GREEN}$@${NC}\n"
|
|
}
|
|
|
|
print_skipped()
|
|
{
|
|
printf "${YELLOW}$@${NC}\n"
|
|
}
|
|
|
|
runtest_fail()
|
|
{
|
|
print_fail "failed"
|
|
COUNT_FAILED=$(($COUNT_FAILED+1))
|
|
}
|
|
|
|
runtest_success()
|
|
{
|
|
print_success "ok"
|
|
COUNT_SUCCEEDED=$((COUNT_SUCCEEDED+1))
|
|
}
|
|
|
|
runtest_skipped()
|
|
{
|
|
print_skipped "skipped"
|
|
COUNT_SKIPPED=$((COUNT_SKIPPED+1))
|
|
}
|
|
|
|
|
|
runtest()
|
|
{
|
|
testbin="$1"
|
|
testname="$2"
|
|
test_log_file="$3"
|
|
|
|
echo "Running: $testname. Date: $(date)" > "${test_log_file}"
|
|
|
|
echo -n "Running $testname... "
|
|
#exit $? to suppress shell message like "./test.sh: line 18: pid Bad system call"
|
|
(./$testbin "$testname" || exit $?) >> "${test_log_file}" 2>&1
|
|
|
|
ret=$?
|
|
SUCCESS="no"
|
|
if [ $ret -eq 0 ] ; then
|
|
runtest_success
|
|
SUCCESS="yes"
|
|
elif [ $ret -eq 2 ] ; then
|
|
runtest_skipped
|
|
SUCCESS="skipped"
|
|
else
|
|
runtest_fail
|
|
fi
|
|
|
|
echo "Finished: ${testname} (${testbin}). Date: $(date). Success: $SUCCESS" >> "${test_log_file}"
|
|
}
|
|
|
|
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}/exile_test_${GIT_ID}_${TIMESTAMP}"
|
|
[ -d "$LOG_OUTPUT_DIR_PATH" ] || mkdir -p "$LOG_OUTPUT_DIR_PATH"
|
|
|
|
for test in $( ./test --dumptests ) ; do
|
|
testname=$( echo $test )
|
|
runtest test "$testname" "${LOG_OUTPUT_DIR_PATH}/log.${testname}"
|
|
done
|
|
|
|
for test in $( ./testcpp --dumptests ) ; do
|
|
testname=$( echo $test )
|
|
runtest testcpp "$testname" "${LOG_OUTPUT_DIR_PATH}/log.${testname}"
|
|
done
|
|
echo
|
|
echo "Tests finished. Logs in $(realpath ${LOG_OUTPUT_DIR_PATH})"
|
|
echo "Succeeded: $COUNT_SUCCEEDED"
|
|
echo "Failed: $COUNT_FAILED"
|
|
echo "Skipped: $COUNT_SKIPPED"
|
|
|
|
if [ $COUNT_FAILED -gt 0 ] ; then
|
|
exit 1
|
|
fi
|
|
exit 0
|