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>
This commit is contained in:
84
tools/testing/selftests/kselftest/module.sh
Executable file
84
tools/testing/selftests/kselftest/module.sh
Executable file
@@ -0,0 +1,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 "$@"
|
Reference in New Issue
Block a user