diff --git a/lib/unit-test-driver.sh.in b/lib/unit-test-driver.sh.in index 4fbd84b361..c66649c0d1 100644 --- a/lib/unit-test-driver.sh.in +++ b/lib/unit-test-driver.sh.in @@ -9,9 +9,24 @@ if [ -z "${1}" ]; then fi TEST_PROGRAM="${1}" +TIMEOUT=300 -"${TEST_PROGRAM}" -STATUS=${?} +"${TEST_PROGRAM}" & +TEST_PROGRAM_PID=${!} +STATUS=124 +while [ ${TIMEOUT} -gt 0 ]; do + if ! kill -0 "${TEST_PROGRAM_PID}" 2>/dev/null; then + wait "${TEST_PROGRAM_PID}" + STATUS=${?} + break + fi + sleep 1 + TIMEOUT=$((TIMEOUT - 1)) +done +if [ ${TIMEOUT} -eq 0 ]; then + echo "PID ${TEST_PROGRAM_PID} exceeded run time limit, sending SIGKILL" >&2 + kill -KILL "${TEST_PROGRAM_PID}" 2>/dev/null +fi TEST_PROGRAM_NAME=$(basename "${TEST_PROGRAM}") TEST_PROGRAM_WORK_DIR=$(dirname "${TEST_PROGRAM}")