WIP FPC-III support
[linux/fpc-iii.git] / tools / testing / selftests / kselftest / module.sh
blobfb4733faff12818ea06f36fde72d635490e8071f
1 #!/bin/sh
2 # SPDX-License-Identifier: GPL-2.0+
5 # Runs an individual test module.
7 # kselftest expects a separate executable for each test, this can be
8 # created by adding a script like this:
10 # #!/bin/sh
11 # SPDX-License-Identifier: GPL-2.0+
12 # $(dirname $0)/../kselftest/module.sh "description" module_name
14 # Example: tools/testing/selftests/lib/printf.sh
16 desc="" # Output prefix.
17 module="" # Filename (without the .ko).
18 args="" # modprobe arguments.
20 modprobe="/sbin/modprobe"
22 main() {
23 parse_args "$@"
24 assert_root
25 assert_have_module
26 run_module
29 parse_args() {
30 script=${0##*/}
32 if [ $# -lt 2 ]; then
33 echo "Usage: $script <description> <module_name> [FAIL]"
34 exit 1
37 desc="$1"
38 shift || true
39 module="$1"
40 shift || true
41 args="$@"
44 assert_root() {
45 if [ ! -w /dev ]; then
46 skip "please run as root"
50 assert_have_module() {
51 if ! $modprobe -q -n $module; then
52 skip "module $module is not found"
56 run_module() {
57 if $modprobe -q $module $args; then
58 $modprobe -q -r $module
59 say "ok"
60 else
61 fail ""
65 say() {
66 echo "$desc: $1"
70 fail() {
71 say "$1 [FAIL]" >&2
72 exit 1
75 skip() {
76 say "$1 [SKIP]" >&2
77 # Kselftest framework requirement - SKIP code is 4.
78 exit 4
82 # Main script
84 main "$@"