1 # SPDX-License-Identifier: GPL-2.0 1 # SPDX-License-Identifier: GPL-2.0 2 # 2 # 3 # Copyright (c) 2023 Collabora Ltd 3 # Copyright (c) 2023 Collabora Ltd 4 # 4 # 5 # Helpers for outputting in KTAP format 5 # Helpers for outputting in KTAP format 6 # 6 # 7 KTAP_TESTNO=1 7 KTAP_TESTNO=1 8 KTAP_CNT_PASS=0 8 KTAP_CNT_PASS=0 9 KTAP_CNT_FAIL=0 9 KTAP_CNT_FAIL=0 10 KTAP_CNT_SKIP=0 10 KTAP_CNT_SKIP=0 11 11 12 KSFT_PASS=0 12 KSFT_PASS=0 13 KSFT_FAIL=1 13 KSFT_FAIL=1 14 KSFT_XFAIL=2 14 KSFT_XFAIL=2 15 KSFT_XPASS=3 15 KSFT_XPASS=3 16 KSFT_SKIP=4 16 KSFT_SKIP=4 17 17 18 KSFT_NUM_TESTS=0 18 KSFT_NUM_TESTS=0 19 19 20 ktap_print_header() { 20 ktap_print_header() { 21 echo "TAP version 13" 21 echo "TAP version 13" 22 } 22 } 23 23 24 ktap_print_msg() 24 ktap_print_msg() 25 { 25 { 26 echo "#" $@ 26 echo "#" $@ 27 } 27 } 28 28 29 ktap_set_plan() { 29 ktap_set_plan() { 30 KSFT_NUM_TESTS="$1" 30 KSFT_NUM_TESTS="$1" 31 31 32 echo "1..$KSFT_NUM_TESTS" 32 echo "1..$KSFT_NUM_TESTS" 33 } 33 } 34 34 35 ktap_skip_all() { 35 ktap_skip_all() { 36 echo -n "1..0 # SKIP " 36 echo -n "1..0 # SKIP " 37 echo $@ 37 echo $@ 38 } 38 } 39 39 40 __ktap_test() { 40 __ktap_test() { 41 result="$1" 41 result="$1" 42 description="$2" 42 description="$2" 43 directive="$3" # optional 43 directive="$3" # optional 44 44 45 local directive_str= 45 local directive_str= 46 [ ! -z "$directive" ] && directive_str 46 [ ! -z "$directive" ] && directive_str="# $directive" 47 47 48 echo $result $KTAP_TESTNO $description 48 echo $result $KTAP_TESTNO $description $directive_str 49 49 50 KTAP_TESTNO=$((KTAP_TESTNO+1)) 50 KTAP_TESTNO=$((KTAP_TESTNO+1)) 51 } 51 } 52 52 53 ktap_test_pass() { 53 ktap_test_pass() { 54 description="$1" 54 description="$1" 55 55 56 result="ok" 56 result="ok" 57 __ktap_test "$result" "$description" 57 __ktap_test "$result" "$description" 58 58 59 KTAP_CNT_PASS=$((KTAP_CNT_PASS+1)) 59 KTAP_CNT_PASS=$((KTAP_CNT_PASS+1)) 60 } 60 } 61 61 62 ktap_test_skip() { 62 ktap_test_skip() { 63 description="$1" 63 description="$1" 64 64 65 result="ok" 65 result="ok" 66 directive="SKIP" 66 directive="SKIP" 67 __ktap_test "$result" "$description" " 67 __ktap_test "$result" "$description" "$directive" 68 68 69 KTAP_CNT_SKIP=$((KTAP_CNT_SKIP+1)) 69 KTAP_CNT_SKIP=$((KTAP_CNT_SKIP+1)) 70 } 70 } 71 71 72 ktap_test_fail() { 72 ktap_test_fail() { 73 description="$1" 73 description="$1" 74 74 75 result="not ok" 75 result="not ok" 76 __ktap_test "$result" "$description" 76 __ktap_test "$result" "$description" 77 77 78 KTAP_CNT_FAIL=$((KTAP_CNT_FAIL+1)) 78 KTAP_CNT_FAIL=$((KTAP_CNT_FAIL+1)) 79 } 79 } 80 80 81 ktap_test_result() { 81 ktap_test_result() { 82 description="$1" 82 description="$1" 83 shift 83 shift 84 84 85 if $@; then 85 if $@; then 86 ktap_test_pass "$description" 86 ktap_test_pass "$description" 87 else 87 else 88 ktap_test_fail "$description" 88 ktap_test_fail "$description" 89 fi 89 fi 90 } 90 } 91 91 92 ktap_exit_fail_msg() { 92 ktap_exit_fail_msg() { 93 echo "Bail out! " $@ 93 echo "Bail out! " $@ 94 ktap_print_totals 94 ktap_print_totals 95 95 96 exit "$KSFT_FAIL" 96 exit "$KSFT_FAIL" 97 } 97 } 98 98 99 ktap_finished() { 99 ktap_finished() { 100 ktap_print_totals 100 ktap_print_totals 101 101 102 if [ $((KTAP_CNT_PASS + KTAP_CNT_SKIP) 102 if [ $((KTAP_CNT_PASS + KTAP_CNT_SKIP)) -eq "$KSFT_NUM_TESTS" ]; then 103 exit "$KSFT_PASS" 103 exit "$KSFT_PASS" 104 else 104 else 105 exit "$KSFT_FAIL" 105 exit "$KSFT_FAIL" 106 fi 106 fi 107 } 107 } 108 108 109 ktap_print_totals() { 109 ktap_print_totals() { 110 echo "# Totals: pass:$KTAP_CNT_PASS fa 110 echo "# Totals: pass:$KTAP_CNT_PASS fail:$KTAP_CNT_FAIL xfail:0 xpass:0 skip:$KTAP_CNT_SKIP error:0" 111 } 111 }
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.