run-tests 1.6 KB

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