linux/tools/testing/selftests/kselftest/module.sh
Kees Cook c78fd76f2b selftests: Move kselftest_module.sh into kselftest/
The kselftest_module.sh file was not being installed by the Makefile
"install" target, rendering the lib/*.sh tests nonfunction. This fixes
that and takes the opportunity to move it into the kselftest/ subdirectory
which is where the kselftest infrastructure bits are collecting.

Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Link: https://lore.kernel.org/lkml/CA+G9fYsfJpXQvOvHdjtg8z4a89dSStOQZOKa9zMjjQgWKng1aw@mail.gmail.com
Fixes: d346052770 ("kselftest: Add test runner creation script")
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
2019-11-07 14:46:08 -07:00

85 lines
1.3 KiB
Bash
Executable File

#!/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 "$@"