85 lines
1.3 KiB
Bash
85 lines
1.3 KiB
Bash
|
#!/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 "$@"
|