1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
#!/bin/sh
# SPDX-License-Identifier: GPL-2.0+
#
# Runs an individual test module.
#
# kselftest expects a separate executable for each test, this can be
# created by adding a script like this:
#
# #!/bin/sh
# SPDX-License-Identifier: GPL-2.0+
# $(dirname $0)/../kselftest/module.sh "description" module_name
#
# Example: tools/testing/selftests/lib/printf.sh
desc="" # Output prefix.
module="" # Filename (without the .ko).
args="" # modprobe arguments.
modprobe="/sbin/modprobe"
main() {
parse_args "$@"
assert_root
assert_have_module
run_module
}
parse_args() {
script=${0##*/}
if [ $# -lt 2 ]; then
echo "Usage: $script <description> <module_name> [FAIL]"
exit 1
fi
desc="$1"
shift || true
module="$1"
shift || true
args="$@"
}
assert_root() {
if [ ! -w /dev ]; then
skip "please run as root"
fi
}
assert_have_module() {
if ! $modprobe -q -n $module; then
skip "module $module is not found"
fi
}
run_module() {
if $modprobe -q $module $args; then
$modprobe -q -r $module
say "ok"
else
fail ""
fi
}
say() {
echo "$desc: $1"
}
fail() {
say "$1 [FAIL]" >&2
exit 1
}
skip() {
say "$1 [SKIP]" >&2
# Kselftest framework requirement - SKIP code is 4.
exit 4
}
#
# Main script
#
main "$@"
|