TESTrun.sh 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #!/bin/sh
  2. mkdir -p NEW
  3. mkdir -p DIFF
  4. passed=0
  5. failed=0
  6. cat /dev/null > failure-outputs.txt
  7. runComplexTests()
  8. {
  9. for i in *.sh
  10. do
  11. case $i in TEST*.sh) continue;; esac
  12. sh ./$i
  13. done
  14. }
  15. runSimpleTests()
  16. {
  17. passed=`cat .passed`
  18. failed=`cat .failed`
  19. only=$1
  20. cat TESTLIST | while read name input output options
  21. do
  22. case $name in
  23. \#*) continue;;
  24. '') continue;;
  25. esac
  26. rm -f core
  27. [ "$only" != "" -a "$name" != "$only" ] && continue
  28. if ./TESTonce $name $input $output "$options"
  29. then
  30. passed=`expr $passed + 1`
  31. echo $passed >.passed
  32. else
  33. failed=`expr $failed + 1`
  34. echo $failed >.failed
  35. fi
  36. [ "$only" != "" -a "$name" = "$only" ] && break
  37. done
  38. # I hate shells with their stupid, useless subshells.
  39. passed=`cat .passed`
  40. failed=`cat .failed`
  41. }
  42. echo $passed >.passed
  43. echo $failed >.failed
  44. if [ $# -eq 0 ]
  45. then
  46. runComplexTests
  47. runSimpleTests
  48. elif [ $# -eq 1 ]
  49. then
  50. runSimpleTests $1
  51. else
  52. echo "Usage: $0 [test_name]"
  53. exit 30
  54. fi
  55. # exit with number of failing tests.
  56. echo '------------------------------------------------'
  57. printf "%4u tests failed\n" $failed
  58. printf "%4u tests passed\n" $passed
  59. echo
  60. echo
  61. cat failure-outputs.txt
  62. echo
  63. echo
  64. exit $failed