1# SPDX-License-Identifier: GPL-2.0 2# 3# Copyright (c) 2023 Collabora Ltd 4# 5# Helpers for outputting in KTAP format 6# 7KTAP_TESTNO=1 8KTAP_CNT_PASS=0 9KTAP_CNT_FAIL=0 10KTAP_CNT_XFAIL=0 11KTAP_CNT_SKIP=0 12 13KSFT_PASS=0 14KSFT_FAIL=1 15KSFT_XFAIL=2 16KSFT_XPASS=3 17KSFT_SKIP=4 18 19KSFT_NUM_TESTS=0 20 21ktap_print_header() { 22 echo "TAP version 13" 23} 24 25ktap_print_msg() 26{ 27 echo "#" $@ 28} 29 30ktap_set_plan() { 31 KSFT_NUM_TESTS="$1" 32 33 echo "1..$KSFT_NUM_TESTS" 34} 35 36ktap_skip_all() { 37 echo -n "1..0 # SKIP " 38 echo $@ 39} 40 41__ktap_test() { 42 result="$1" 43 description="$2" 44 directive="${3:-}" # optional 45 46 local directive_str= 47 [ ! -z "$directive" ] && directive_str="# $directive" 48 49 echo $result $KTAP_TESTNO $description $directive_str 50 51 KTAP_TESTNO=$((KTAP_TESTNO+1)) 52} 53 54ktap_test_pass() { 55 description="$1" 56 57 result="ok" 58 __ktap_test "$result" "$description" 59 60 KTAP_CNT_PASS=$((KTAP_CNT_PASS+1)) 61} 62 63ktap_test_skip() { 64 description="$1" 65 66 result="ok" 67 directive="SKIP" 68 __ktap_test "$result" "$description" "$directive" 69 70 KTAP_CNT_SKIP=$((KTAP_CNT_SKIP+1)) 71} 72 73ktap_test_xfail() { 74 description="$1" 75 76 result="ok" 77 directive="XFAIL" 78 __ktap_test "$result" "$description" "$directive" 79 80 KTAP_CNT_XFAIL=$((KTAP_CNT_XFAIL+1)) 81} 82 83ktap_test_fail() { 84 description="$1" 85 86 result="not ok" 87 __ktap_test "$result" "$description" 88 89 KTAP_CNT_FAIL=$((KTAP_CNT_FAIL+1)) 90} 91 92ktap_test_result() { 93 description="$1" 94 shift 95 96 if $@; then 97 ktap_test_pass "$description" 98 else 99 ktap_test_fail "$description" 100 fi 101} 102 103ktap_exit_fail_msg() { 104 echo "Bail out! " $@ 105 ktap_print_totals 106 107 exit "$KSFT_FAIL" 108} 109 110ktap_finished() { 111 ktap_print_totals 112 113 if [ $((KTAP_CNT_PASS + KTAP_CNT_SKIP + KTAP_CNT_XFAIL)) -eq "$KSFT_NUM_TESTS" ]; then 114 exit "$KSFT_PASS" 115 else 116 exit "$KSFT_FAIL" 117 fi 118} 119 120ktap_print_totals() { 121 if [ "$KTAP_CNT_SKIP" -gt 0 ]; then 122 echo "# $KTAP_CNT_SKIP skipped test(s) detected. " \ 123 "Consider enabling relevant config options to improve coverage." 124 fi 125 echo "# Totals: pass:$KTAP_CNT_PASS fail:$KTAP_CNT_FAIL xfail:$KTAP_CNT_XFAIL xpass:0 skip:$KTAP_CNT_SKIP error:0" 126} 127