ktap_helpers.sh 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. # SPDX-License-Identifier: GPL-2.0
  2. #
  3. # Copyright (c) 2023 Collabora Ltd
  4. #
  5. # Helpers for outputting in KTAP format
  6. #
  7. KTAP_TESTNO=1
  8. KTAP_CNT_PASS=0
  9. KTAP_CNT_FAIL=0
  10. KTAP_CNT_SKIP=0
  11. KSFT_PASS=0
  12. KSFT_FAIL=1
  13. KSFT_XFAIL=2
  14. KSFT_XPASS=3
  15. KSFT_SKIP=4
  16. KSFT_NUM_TESTS=0
  17. ktap_print_header() {
  18. echo "TAP version 13"
  19. }
  20. ktap_print_msg()
  21. {
  22. echo "#" $@
  23. }
  24. ktap_set_plan() {
  25. KSFT_NUM_TESTS="$1"
  26. echo "1..$KSFT_NUM_TESTS"
  27. }
  28. ktap_skip_all() {
  29. echo -n "1..0 # SKIP "
  30. echo $@
  31. }
  32. __ktap_test() {
  33. result="$1"
  34. description="$2"
  35. directive="${3:-}" # optional
  36. local directive_str=
  37. [ ! -z "$directive" ] && directive_str="# $directive"
  38. echo $result $KTAP_TESTNO $description $directive_str
  39. KTAP_TESTNO=$((KTAP_TESTNO+1))
  40. }
  41. ktap_test_pass() {
  42. description="$1"
  43. result="ok"
  44. __ktap_test "$result" "$description"
  45. KTAP_CNT_PASS=$((KTAP_CNT_PASS+1))
  46. }
  47. ktap_test_skip() {
  48. description="$1"
  49. result="ok"
  50. directive="SKIP"
  51. __ktap_test "$result" "$description" "$directive"
  52. KTAP_CNT_SKIP=$((KTAP_CNT_SKIP+1))
  53. }
  54. ktap_test_fail() {
  55. description="$1"
  56. result="not ok"
  57. __ktap_test "$result" "$description"
  58. KTAP_CNT_FAIL=$((KTAP_CNT_FAIL+1))
  59. }
  60. ktap_test_result() {
  61. description="$1"
  62. shift
  63. if $@; then
  64. ktap_test_pass "$description"
  65. else
  66. ktap_test_fail "$description"
  67. fi
  68. }
  69. ktap_exit_fail_msg() {
  70. echo "Bail out! " $@
  71. ktap_print_totals
  72. exit "$KSFT_FAIL"
  73. }
  74. ktap_finished() {
  75. ktap_print_totals
  76. if [ $((KTAP_CNT_PASS + KTAP_CNT_SKIP)) -eq "$KSFT_NUM_TESTS" ]; then
  77. exit "$KSFT_PASS"
  78. else
  79. exit "$KSFT_FAIL"
  80. fi
  81. }
  82. ktap_print_totals() {
  83. echo "# Totals: pass:$KTAP_CNT_PASS fail:$KTAP_CNT_FAIL xfail:0 xpass:0 skip:$KTAP_CNT_SKIP error:0"
  84. }