tests.sh 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/bin/sh
  2. TESTS_DIR="./tests"
  3. CONFIG_DIR=${TESTS_DIR}"/config"
  4. CHANGES_DIR="/tmp/.uci"
  5. TMP_DIR=${TESTS_DIR}"/tmp"
  6. FULL_SUITE=${TESTS_DIR}"/full_suite.sh"
  7. UCI_STATIC="../uci-static"
  8. [ -x $UCI_STATIC ] || {
  9. echo "uci-static is not present."
  10. return 1
  11. }
  12. UCI="${UCI_STATIC} -c ${CONFIG_DIR} -p ${CHANGES_DIR}"
  13. UCI_Q="${UCI_STATIC} -c ${CONFIG_DIR} -p ${CHANGES_DIR} -q"
  14. REF_DIR="./references"
  15. SCRIPTS_DIR="./tests.d"
  16. DO_TEST="./shunit2/shunit2"
  17. rm -rf ${TESTS_DIR}
  18. mkdir -p ${TESTS_DIR}
  19. cat << 'EOF' > ${FULL_SUITE}
  20. setUp() {
  21. mkdir -p ${CONFIG_DIR} ${CHANGES_DIR} ${TMP_DIR}
  22. }
  23. tearDown() {
  24. rm -rf ${CONFIG_DIR} ${CHANGES_DIR} ${TMP_DIR}
  25. }
  26. assertSameFile() {
  27. local ref=$1
  28. local test=$2
  29. diff -qr $ref $test
  30. assertTrue $? || {
  31. echo "REF:"
  32. cat $ref
  33. echo "----"
  34. echo "TEST:"
  35. cat $test
  36. echo "----"
  37. }
  38. }
  39. assertNotSegFault()
  40. {
  41. [ $1 -eq 139 ] && fail "Returned with 139: segmentation fault (SIGSEGV)!!!"
  42. }
  43. assertNotIllegal()
  44. {
  45. [ $1 -eq 132 ] && fail "Returned with 132: Illegal instruction (SIGILL)!!!"
  46. }
  47. assertFailWithNoReturn() {
  48. local test="$1"
  49. value=$( $test )
  50. rv=$?
  51. assertFalse "'$test' does not fail" $rv
  52. assertNotSegFault $rv
  53. assertNotIllegal $rv
  54. assertNull "'$test' returns '$value'" "$value"
  55. }
  56. EOF
  57. for suite in $(ls ${SCRIPTS_DIR}/*)
  58. do
  59. cat ${suite} >> ${FULL_SUITE}
  60. done
  61. echo ". ${DO_TEST}" >> ${FULL_SUITE}
  62. REF_DIR="${REF_DIR}" \
  63. CONFIG_DIR="${CONFIG_DIR}" \
  64. CHANGES_DIR="${CHANGES_DIR}" \
  65. TMP_DIR="${TMP_DIR}" \
  66. UCI="${UCI}" \
  67. UCI_Q="${UCI_Q}" \
  68. /bin/sh ${FULL_SUITE}
  69. rm -rf ${TESTS_DIR}