| 1 | #!/bin/sh |
| 2 | set -e |
| 3 | |
| 4 | FAIL=0 |
| 5 | PASS=0 |
| 6 | ALL=0 |
| 7 | |
| 8 | FAILED_TESTS="" |
| 9 | DIR=$(readlink -f $(dirname $0)) |
| 10 | while [ -n "$1" ]; do |
| 11 | if [ "$1" = "-q" ]; then |
| 12 | export MSGLEVEL=2 |
| 13 | elif [ "$1" = "-v" ]; then |
| 14 | export MSGLEVEL=4 |
| 15 | elif [ "$1" = '--color=no' ]; then |
| 16 | export MSGCOLOR='NO' |
| 17 | else |
| 18 | echo >&2 "WARNING: Unknown parameter »$1« will be ignored" |
| 19 | fi |
| 20 | shift |
| 21 | done |
| 22 | export MSGLEVEL="${MSGLEVEL:-3}" |
| 23 | |
| 24 | if [ "$MSGCOLOR" != 'NO' ]; then |
| 25 | if [ ! -t 1 ]; then # but check that we output to a terminal |
| 26 | export MSGCOLOR='NO' |
| 27 | fi |
| 28 | fi |
| 29 | if [ "$MSGCOLOR" != 'NO' ]; then |
| 30 | CTEST='\033[1;32m' |
| 31 | CHIGH='\033[1;35m' |
| 32 | CRESET='\033[0m' |
| 33 | else |
| 34 | CTEST='' |
| 35 | CHIGH='' |
| 36 | CRESET='' |
| 37 | fi |
| 38 | |
| 39 | TOTAL="$(run-parts --list $DIR | grep '/test-' | wc -l)" |
| 40 | for testcase in $(run-parts --list $DIR | grep '/test-'); do |
| 41 | if [ "$MSGLEVEL" -le 2 ]; then |
| 42 | printf "($(($ALL+1))/${TOTAL}) ${CTEST}Testcase ${CHIGH}$(basename ${testcase})${CRESET}: " |
| 43 | else |
| 44 | printf "${CTEST}Run Testcase ($(($ALL+1))/${TOTAL}) ${CHIGH}$(basename ${testcase})${CRESET}\n" |
| 45 | fi |
| 46 | if ! ${testcase}; then |
| 47 | FAIL=$((FAIL+1)) |
| 48 | FAILED_TESTS="$FAILED_TESTS $(basename $testcase)" |
| 49 | if [ "$MSGLEVEL" -le 2 ]; then |
| 50 | printf >&2 "\n${CHIGH}Running $(basename $testcase) -> FAILED${CRESET}" |
| 51 | else |
| 52 | echo >&2 "${CHIGH}Running $(basename $testcase) -> FAILED${CRESET}" |
| 53 | fi |
| 54 | else |
| 55 | PASS=$((PASS+1)) |
| 56 | fi |
| 57 | ALL=$((ALL+1)) |
| 58 | if [ "$MSGLEVEL" -le 2 ]; then |
| 59 | echo |
| 60 | fi |
| 61 | done |
| 62 | |
| 63 | echo >&2 "Statistics: $ALL tests were run: $PASS successfully and $FAIL failed" |
| 64 | if [ -n "$FAILED_TESTS" ]; then |
| 65 | echo >&2 "Failed tests: $FAILED_TESTS" |
| 66 | else |
| 67 | echo >&2 'All tests seem to have been run successfully. What could possibly go wrong?' |
| 68 | fi |
| 69 | # ensure we don't overflow |
| 70 | exit $((FAIL <= 255 ? FAIL : 255)) |