-
lukas leufen authoredlukas leufen authored
run_pytest.sh 1.34 KiB
#!/bin/bash
# run pytest for all modules
python3 -m pytest test/ | tee test_results.out
IS_FAILED=$?
# exit 0 if no tests implemented
RUN_NO_TESTS="$(grep -c 'no tests ran' test_results.out)"
if [[ ${RUN_NO_TESTS} > 0 ]]; then
echo "no test available"
echo "incomplete" > status.txt
echo "no tests avail" > incomplete.txt
exit 0
fi
# extract if tests passed or not
TEST_FAILED="$(grep -oP '(\d+\s{1}failed)' test_results.out)"
TEST_FAILED="$(echo ${TEST_FAILED} | (grep -oP '\d*'))"
TEST_PASSED="$(grep -oP '\d+\s{1}passed' test_results.out)"
TEST_PASSED="$(echo ${TEST_PASSED} | (grep -oP '\d*'))"
if [[ -z "$TEST_FAILED" ]]; then
TEST_FAILED=0
fi
let "TEST_PASSED=${TEST_PASSED}-${TEST_FAILED}"
# calculate metrics
let "SUM=${TEST_FAILED}+${TEST_PASSED}"
let "TEST_PASSED_RATIO=${TEST_PASSED}*100/${SUM}"
# report
if [[ ${IS_FAILED} == 0 ]]; then
if [[ ${TEST_PASSED_RATIO} -lt 100 ]]; then
echo "only ${TEST_PASSED_RATIO}% passed"
echo "incomplete" > status.txt
echo "${TEST_PASSED_RATIO}%25 passed" > incomplete.txt
if [[ ${TEST_PASSED_RATIO} -lt ${FAILURE_THRESHOLD} ]]; then
echo -e "\033[1;31monly ${TEST_PASSED_RATIO}% passed!!\033[0m"
exit 1
fi
else
echo "passed"
echo "success" > status.txt
fi
exit 0
else
echo "not passed"
exit 1
fi