Albert S
1b4c5477a5
qssb.h was a preliminary name and can't be pronounced smoothly. exile.h is more fitting and it's also short. Something exiled is essentially something isolated, which is pretty much what this library does (isolation from resources such as file system, network and others accessible by system calls).
94 lines
1.7 KiB
Bash
Executable File
94 lines
1.7 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
|
|
|
|
function print_fail()
|
|
{
|
|
echo -e "${RED}$@${NC}" 1>&2
|
|
}
|
|
|
|
function print_success()
|
|
{
|
|
echo -e "${GREEN}$@${NC}"
|
|
}
|
|
|
|
function print_skipped()
|
|
{
|
|
echo -e "${YELLOW}$@${NC}"
|
|
}
|
|
|
|
function runtest_fail()
|
|
{
|
|
print_fail "failed"
|
|
COUNT_FAILED=$(($COUNT_FAILED+1))
|
|
}
|
|
|
|
function runtest_success()
|
|
{
|
|
print_success "ok"
|
|
COUNT_SUCCEEDED=$((COUNT_SUCCEEDED+1))
|
|
}
|
|
|
|
function runtest_skipped()
|
|
{
|
|
print_skipped "skipped"
|
|
COUNT_SKIPPED=$((COUNT_SKIPPED+1))
|
|
}
|
|
|
|
|
|
function runtest()
|
|
{
|
|
testname="$1"
|
|
test_log_file="$2"
|
|
|
|
echo "Running: $testname. Date: $(date)" > "${test_log_file}"
|
|
|
|
echo -n "Running $1... "
|
|
#exit $? to suppress shell message like "./test.sh: line 18: pid Bad system call"
|
|
(./test $1 || exit $?) &>> "${test_log_file}"
|
|
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}. 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 "$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
|