run-tests 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  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. if [ "$1" = "-q" ]; then
  9. export MSGLEVEL=2
  10. elif [ "$1" = "-v" ]; then
  11. export MSGLEVEL=4
  12. fi
  13. if expr match "$(readlink -f /proc/$$/fd/1)" '/dev/pts/[0-9]\+' > /dev/null; then
  14. CTEST='\033[1;32m'
  15. CHIGH='\033[1;35m'
  16. CRESET='\033[0m'
  17. elif [ -z "${MSGLEVEL}" ]; then
  18. export MSGLEVEL=2
  19. fi
  20. if [ -z "$MSGLEVEL" ]; then
  21. MSGLEVEL=5
  22. fi
  23. for testcase in $(run-parts --list $DIR | grep '/test-'); do
  24. if [ "$MSGLEVEL" -le 2 ]; then
  25. echo -n "${CTEST}Testcase ${CHIGH}$(basename ${testcase})${CRESET}: "
  26. else
  27. echo "${CTEST}Run Testcase ${CHIGH}$(basename ${testcase})${CRESET}"
  28. fi
  29. if ! ${testcase}; then
  30. FAIL=$((FAIL+1))
  31. FAILED_TESTS="$FAILED_TESTS $(basename $testcase)"
  32. echo >&2 "$(basename $testcase) ... FAIL"
  33. else
  34. PASS=$((PASS+1))
  35. fi
  36. ALL=$((ALL+1))
  37. if [ "$MSGLEVEL" -le 2 ]; then
  38. echo
  39. fi
  40. done
  41. echo >&2 "Statistics: $ALL tests were run: $PASS successfully and $FAIL failed"
  42. if [ -n "$FAILED_TESTS" ]; then
  43. echo >&2 "Failed tests: $FAILED_TESTS"
  44. else
  45. echo >&2 'All tests seem to have been run successfully. What could possibly go wrong?'
  46. fi
  47. # ensure we don't overflow
  48. exit $((FAIL <= 255 ? FAIL : 255))