File Index
Files and directories
Sign in
FILE

ktap_helpers.sh

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/kselftest/ktap_helpers.sh BASH
  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}
~/ Read-only file preview.