| # 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_XFAIL=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_xfail() { | |
| description="$1" | |
| result="ok" | |
| directive="XFAIL" | |
| __ktap_test "$result" "$description" "$directive" | |
| KTAP_CNT_XFAIL=$((KTAP_CNT_XFAIL+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 + KTAP_CNT_XFAIL)) -eq "$KSFT_NUM_TESTS" ]; then | |
| exit "$KSFT_PASS" | |
| else | |
| exit "$KSFT_FAIL" | |
| fi | |
| } | |
| ktap_print_totals() { | |
| if [ "$KTAP_CNT_SKIP" -gt 0 ]; then | |
| echo "# $KTAP_CNT_SKIP skipped test(s) detected. " \ | |
| "Consider enabling relevant config options to improve coverage." | |
| fi | |
| echo "# Totals: pass:$KTAP_CNT_PASS fail:$KTAP_CNT_FAIL xfail:$KTAP_CNT_XFAIL xpass:0 skip:$KTAP_CNT_SKIP error:0" | |
| } |