run-tests 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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 ! expr match "$(readlink -f /proc/$$/fd/1)" '/dev/pts/[0-9]\+' > /dev/null; then
  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. for testcase in $(run-parts --list $DIR | grep '/test-'); do
  36. if [ "$MSGLEVEL" -le 2 ]; then
  37. echo -n "${CTEST}Testcase ${CHIGH}$(basename ${testcase})${CRESET}: "
  38. else
  39. echo "${CTEST}Run Testcase ${CHIGH}$(basename ${testcase})${CRESET}"
  40. fi
  41. if ! ${testcase}; then
  42. FAIL=$((FAIL+1))
  43. FAILED_TESTS="$FAILED_TESTS $(basename $testcase)"
  44. echo >&2 "$(basename $testcase) ... FAIL"
  45. else
  46. PASS=$((PASS+1))
  47. fi
  48. ALL=$((ALL+1))
  49. if [ "$MSGLEVEL" -le 2 ]; then
  50. echo
  51. fi
  52. done
  53. echo >&2 "Statistics: $ALL tests were run: $PASS successfully and $FAIL failed"
  54. if [ -n "$FAILED_TESTS" ]; then
  55. echo >&2 "Failed tests: $FAILED_TESTS"
  56. else
  57. echo >&2 'All tests seem to have been run successfully. What could possibly go wrong?'
  58. fi
  59. # ensure we don't overflow
  60. exit $((FAIL <= 255 ? FAIL : 255))