Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/testing/selftests/kselftest/ktap_helpers.sh
26285 views
1
# SPDX-License-Identifier: GPL-2.0
2
#
3
# Copyright (c) 2023 Collabora Ltd
4
#
5
# Helpers for outputting in KTAP format
6
#
7
KTAP_TESTNO=1
8
KTAP_CNT_PASS=0
9
KTAP_CNT_FAIL=0
10
KTAP_CNT_XFAIL=0
11
KTAP_CNT_SKIP=0
12
13
KSFT_PASS=0
14
KSFT_FAIL=1
15
KSFT_XFAIL=2
16
KSFT_XPASS=3
17
KSFT_SKIP=4
18
19
KSFT_NUM_TESTS=0
20
21
ktap_print_header() {
22
echo "TAP version 13"
23
}
24
25
ktap_print_msg()
26
{
27
echo "#" $@
28
}
29
30
ktap_set_plan() {
31
KSFT_NUM_TESTS="$1"
32
33
echo "1..$KSFT_NUM_TESTS"
34
}
35
36
ktap_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
54
ktap_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
63
ktap_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
73
ktap_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
83
ktap_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
92
ktap_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
103
ktap_exit_fail_msg() {
104
echo "Bail out! " $@
105
ktap_print_totals
106
107
exit "$KSFT_FAIL"
108
}
109
110
ktap_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
120
ktap_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
}
127
128