| # SPDX-License-Identifier: GPL-2.0 |
| # |
| # Copyright (c) 2023 Collabora Ltd |
| # |
| # Helpers for outputting in KTAP format |
| # |
| KTAP_TESTNO=1 |
| KTAP_CNT_PASS=0 |
| KTAP_CNT_FAIL=0 |
| KTAP_CNT_SKIP=0 |
| |
| KSFT_PASS=0 |
| KSFT_FAIL=1 |
| KSFT_XFAIL=2 |
| KSFT_XPASS=3 |
| KSFT_SKIP=4 |
| |
| KSFT_NUM_TESTS=0 |
| |
| ktap_print_header() { |
| echo "TAP version 13" |
| } |
| |
| ktap_print_msg() |
| { |
| echo "#" $@ |
| } |
| |
| ktap_set_plan() { |
| KSFT_NUM_TESTS="$1" |
| |
| echo "1..$KSFT_NUM_TESTS" |
| } |
| |
| ktap_skip_all() { |
| echo -n "1..0 # SKIP " |
| echo $@ |
| } |
| |
| __ktap_test() { |
| result="$1" |
| description="$2" |
| directive="$3" # optional |
| |
| local directive_str= |
| [[ ! -z "$directive" ]] && directive_str="# $directive" |
| |
| echo $result $KTAP_TESTNO $description $directive_str |
| |
| KTAP_TESTNO=$((KTAP_TESTNO+1)) |
| } |
| |
| ktap_test_pass() { |
| description="$1" |
| |
| result="ok" |
| __ktap_test "$result" "$description" |
| |
| KTAP_CNT_PASS=$((KTAP_CNT_PASS+1)) |
| } |
| |
| ktap_test_skip() { |
| description="$1" |
| |
| result="ok" |
| directive="SKIP" |
| __ktap_test "$result" "$description" "$directive" |
| |
| KTAP_CNT_SKIP=$((KTAP_CNT_SKIP+1)) |
| } |
| |
| ktap_test_fail() { |
| description="$1" |
| |
| result="not ok" |
| __ktap_test "$result" "$description" |
| |
| KTAP_CNT_FAIL=$((KTAP_CNT_FAIL+1)) |
| } |
| |
| ktap_test_result() { |
| description="$1" |
| shift |
| |
| if $@; then |
| ktap_test_pass "$description" |
| else |
| ktap_test_fail "$description" |
| fi |
| } |
| |
| ktap_exit_fail_msg() { |
| echo "Bail out! " $@ |
| ktap_print_totals |
| |
| exit "$KSFT_FAIL" |
| } |
| |
| ktap_finished() { |
| ktap_print_totals |
| |
| if [ $(("$KTAP_CNT_PASS" + "$KTAP_CNT_SKIP")) -eq "$KSFT_NUM_TESTS" ]; then |
| exit "$KSFT_PASS" |
| else |
| exit "$KSFT_FAIL" |
| fi |
| } |
| |
| ktap_print_totals() { |
| echo "# Totals: pass:$KTAP_CNT_PASS fail:$KTAP_CNT_FAIL xfail:0 xpass:0 skip:$KTAP_CNT_SKIP error:0" |
| } |