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