Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
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}