blob: bd8ca143fbab9f8cccaafffbb1d47d34c52a8357 [file] [log] [blame]
#!/bin/sh
#
# A simple wrapper for pre- and post-execution activities for any given
# openposix test.
#
# run_test contains logic moved out of Makefile.
#
# Garrett Cooper, June 2010
#
LOGFILE=${LOGFILE:=logfile}
NUM_FAIL=0
NUM_PASS=0
NUM_TESTS=0
run_test_loop() {
for t in $*; do
if run_test "$t"; then
NUM_PASS=$(expr $NUM_PASS + 1)
else
NUM_FAIL=$(expr $NUM_FAIL + 1)
fi
NUM_TESTS=$(expr $NUM_TESTS + 1)
done
cat <<EOF
*******************
SUMMARY
*******************
$(printf "PASS\t\t%3d" $NUM_PASS)
$(printf "FAIL\t\t%3d" $NUM_FAIL)
*******************
$(printf "TOTAL\t\t%3d" $NUM_TESTS)
*******************
EOF
}
run_test() {
testname="$TEST_PATH/${1%.*}"
complog=$(basename $testname).log.$$
sh -c "$SCRIPT_DIR/t0 $TIMEOUT_VAL ./$1 $(cat ./$(echo "$1" | sed 's,\.[^\.]*,,').args 2>/dev/null)" > $complog 2>&1
ret_code=$?
if [ "$ret_code" = "0" ]; then
echo "$testname: execution: PASS" >> "${LOGFILE}"
elif [ -f "$1" ]; then
case "$ret_code" in
1)
msg="FAILED"
;;
2)
msg="UNRESOLVED"
;;
4)
msg="UNSUPPORTED"
;;
5)
msg="UNTESTED"
;;
$TIMEOUT_RET)
msg="HUNG"
;;
*)
if [ $ret_code -gt 128 ]; then
msg="SIGNALED"
else
msg="EXITED ABNORMALLY"
fi
esac
echo "$testname: execution: $msg: Output: " >> "${LOGFILE}"
cat $complog >> "${LOGFILE}"
echo "$testname: execution: $msg "
else
echo "$testname: execution: SKIPPED (test not present)"
fi
rm -f $complog
return $ret_code
}
# SETUP
if [ -w "$LOGFILE" ] || echo "" > "$LOGFILE"; then
:
else
echo >&2 "ERROR: $LOGFILE not writable"
exit 1
fi
SCRIPT_DIR=$(dirname "$0")
TEST_PATH=$1; shift
T0=$SCRIPT_DIR/t0
T0_VAL=$SCRIPT_DIR/t0.val
if [ ! -x $T0 ]; then
echo >&2 "ERROR: $T0 doesn't exist / isn't executable"
exit 1
fi
if [ ! -f "$T0_VAL" ]; then
$SCRIPT_DIR/t0 0 >/dev/null 2>&1
echo $? > "$T0_VAL"
fi
if TIMEOUT_RET=$(cat "$T0_VAL"); then
TIMEOUT_VAL=${TIMEOUT_VAL:=240}
if [ -f test_defs ] ; then
. ./test_defs || exit $?
fi
trap '' INT
# RUN
run_test_loop $*
exit $NUM_FAIL
else
exit $?
fi