ktap_helpers.sh 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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_XFAIL=0
  11. KTAP_CNT_SKIP=0
  12. KSFT_PASS=0
  13. KSFT_FAIL=1
  14. KSFT_XFAIL=2
  15. KSFT_XPASS=3
  16. KSFT_SKIP=4
  17. KSFT_NUM_TESTS=0
  18. ktap_print_header() {
  19. echo "TAP version 13"
  20. }
  21. ktap_print_msg()
  22. {
  23. echo "#" $@
  24. }
  25. ktap_set_plan() {
  26. KSFT_NUM_TESTS="$1"
  27. echo "1..$KSFT_NUM_TESTS"
  28. }
  29. ktap_skip_all() {
  30. echo -n "1..0 # SKIP "
  31. echo $@
  32. }
  33. __ktap_test() {
  34. result="$1"
  35. description="$2"
  36. directive="${3:-}" # optional
  37. local directive_str=
  38. [ ! -z "$directive" ] && directive_str="# $directive"
  39. echo $result $KTAP_TESTNO $description $directive_str
  40. KTAP_TESTNO=$((KTAP_TESTNO+1))
  41. }
  42. ktap_test_pass() {
  43. description="$1"
  44. result="ok"
  45. __ktap_test "$result" "$description"
  46. KTAP_CNT_PASS=$((KTAP_CNT_PASS+1))
  47. }
  48. ktap_test_skip() {
  49. description="$1"
  50. result="ok"
  51. directive="SKIP"
  52. __ktap_test "$result" "$description" "$directive"
  53. KTAP_CNT_SKIP=$((KTAP_CNT_SKIP+1))
  54. }
  55. ktap_test_xfail() {
  56. description="$1"
  57. result="ok"
  58. directive="XFAIL"
  59. __ktap_test "$result" "$description" "$directive"
  60. KTAP_CNT_XFAIL=$((KTAP_CNT_XFAIL+1))
  61. }
  62. ktap_test_fail() {
  63. description="$1"
  64. result="not ok"
  65. __ktap_test "$result" "$description"
  66. KTAP_CNT_FAIL=$((KTAP_CNT_FAIL+1))
  67. }
  68. ktap_test_result() {
  69. description="$1"
  70. shift
  71. if $@; then
  72. ktap_test_pass "$description"
  73. else
  74. ktap_test_fail "$description"
  75. fi
  76. }
  77. ktap_exit_fail_msg() {
  78. echo "Bail out! " $@
  79. ktap_print_totals
  80. exit "$KSFT_FAIL"
  81. }
  82. ktap_finished() {
  83. ktap_print_totals
  84. if [ $((KTAP_CNT_PASS + KTAP_CNT_SKIP + KTAP_CNT_XFAIL)) -eq "$KSFT_NUM_TESTS" ]; then
  85. exit "$KSFT_PASS"
  86. else
  87. exit "$KSFT_FAIL"
  88. fi
  89. }
  90. ktap_print_totals() {
  91. if [ "$KTAP_CNT_SKIP" -gt 0 ]; then
  92. echo "# $KTAP_CNT_SKIP skipped test(s) detected. " \
  93. "Consider enabling relevant config options to improve coverage."
  94. fi
  95. echo "# Totals: pass:$KTAP_CNT_PASS fail:$KTAP_CNT_FAIL xfail:$KTAP_CNT_XFAIL xpass:0 skip:$KTAP_CNT_SKIP error:0"
  96. }