check_checkmk 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. #!/usr/bin/env sh
  2. TESTS_RUN=0
  3. TESTS_PASSED=0
  4. TESTS_FAILED=0
  5. TEST_DIRS='empty_input pass_thru single_test_line basic_complete'
  6. TEST_DIRS="$TEST_DIRS multiple_everything between_the_lines"
  7. TEST_DIRS="$TEST_DIRS repeated_suites repeated_tcases repeated_tests"
  8. TEST_DIRS="$TEST_DIRS not_really_repeated tcase_implied_repeat"
  9. TEST_DIRS="$TEST_DIRS case_insensitive_pp trailing_ws non_word_chars"
  10. TEST_DIRS="$TEST_DIRS test_chars num_start_test_name"
  11. TEST_DIRS="$TEST_DIRS no_args clean_mode declarations test_after_main_pre"
  12. TEST_DIRS="$TEST_DIRS main_pre_multiple main_post main_pre_after_post"
  13. TEST_DIRS="$TEST_DIRS test_after_main_post main_post_multiple ucn"
  14. TEST_DIRS="$TEST_DIRS invalid_ucn argument_ws repeated_argument_tests"
  15. check_dir() {
  16. status=0
  17. checkmkdir=$PWD
  18. outdir="test.out/$1"
  19. testdir="$srcdir/test/$1"
  20. if ! mkdir -p "$outdir"
  21. then
  22. echo "Couldn't make path \"$outdir\"!"
  23. fi
  24. outdir=$(cd "$outdir" && pwd)
  25. if ! cd "$testdir"
  26. then
  27. echo "Couldn't chdir to \"$testdir\"!"
  28. fi
  29. # set up expected input/output file names
  30. infname=in
  31. outfname="$outdir/output"
  32. errfname="$outdir/err"
  33. diffname="$outdir/diff"
  34. errdiffname="$outdir/err-diff"
  35. CHECKMK="$checkmkdir/checkmk"
  36. checkmk_cmd='"$CHECKMK" "$infname" > "$outfname" 2>"$errfname"'
  37. rm -f "$outfname" "$errfname" "$diffname" "$errdiffname"
  38. # source local versions, if available.
  39. [ -r ./cmd ] && . ./cmd
  40. # Check output.
  41. eval "$checkmk_cmd"
  42. ckstat=$?
  43. if ! diff -c "x_output" "$outfname" > "$diffname"
  44. then
  45. echo "Unexpected output differences:"
  46. cat "$diffname"
  47. status=1
  48. fi
  49. # Check stderr.
  50. if [ -s x_err ]
  51. then
  52. if ! diff -c "x_err" "$errfname" > "$errdiffname"
  53. then
  54. echo "Unexpected error differences:"
  55. cat "$errdiffname"
  56. status=1
  57. fi
  58. elif [ -s err ]
  59. then
  60. echo "Unexpected text from standard error:"
  61. echo "------------------------------------"
  62. cat "$errfname"
  63. echo "------------------------------------"
  64. status=1
  65. fi
  66. # Check status.
  67. xstat=0
  68. if [ -e "x_exit" ]
  69. then
  70. xstat=`cat x_exit`
  71. elif [ -s "x_err" ]
  72. then
  73. xstat=1
  74. fi
  75. if [ $xstat != $ckstat ]
  76. then
  77. echo "Expected exit status of $xstat, but got $ckstat."
  78. status=1
  79. fi
  80. return $status
  81. }
  82. pass_dir() {
  83. echo "Test $1 passed."
  84. TESTS_PASSED=$(($TESTS_PASSED+1))
  85. }
  86. fail_dir() {
  87. echo "Test $1 FAILED."
  88. TESTS_FAILED=$(($TESTS_FAILED+1))
  89. }
  90. echo "These are the tests for the checkmk program."
  91. echo
  92. echo "===================="
  93. echo " Test Run Start"
  94. echo "===================="
  95. echo
  96. for dir in $TEST_DIRS
  97. do
  98. echo "Running test $dir..."
  99. if ( check_dir $dir )
  100. then
  101. pass_dir $dir
  102. else
  103. fail_dir $dir
  104. fi
  105. TESTS_RUN=$(($TESTS_RUN+1))
  106. echo
  107. done
  108. echo "===================="
  109. echo " Test Run Complete"
  110. echo "===================="
  111. echo "Total: $TESTS_RUN"
  112. echo "Passed: $TESTS_PASSED"
  113. echo "Failed: $TESTS_FAILED"
  114. if [ "$TESTS_FAILED" -gt 0 ]
  115. then
  116. echo
  117. echo "****************************************"
  118. echo " TEST RUN FAILED!!!!"
  119. echo "****************************************"
  120. exit 1;
  121. fi
  122. echo