85 lines · bash
1#!/bin/sh2# SPDX-License-Identifier: GPL-2.0+3 4#5# Runs an individual test module.6#7# kselftest expects a separate executable for each test, this can be8# created by adding a script like this:9#10# #!/bin/sh11# SPDX-License-Identifier: GPL-2.0+12# $(dirname $0)/../kselftest/module.sh "description" module_name13#14# Example: tools/testing/selftests/lib/printf.sh15 16desc="" # Output prefix.17module="" # Filename (without the .ko).18args="" # modprobe arguments.19 20modprobe="/sbin/modprobe"21 22main() {23 parse_args "$@"24 assert_root25 assert_have_module26 run_module27}28 29parse_args() {30 script=${0##*/}31 32 if [ $# -lt 2 ]; then33 echo "Usage: $script <description> <module_name> [FAIL]"34 exit 135 fi36 37 desc="$1"38 shift || true39 module="$1"40 shift || true41 args="$@"42}43 44assert_root() {45 if [ ! -w /dev ]; then46 skip "please run as root"47 fi48}49 50assert_have_module() {51 if ! $modprobe -q -n $module; then52 skip "module $module is not found"53 fi54}55 56run_module() {57 if $modprobe -q $module $args; then58 $modprobe -q -r $module59 say "ok"60 else61 fail ""62 fi63}64 65say() {66 echo "$desc: $1"67}68 69 70fail() {71 say "$1 [FAIL]" >&272 exit 173}74 75skip() {76 say "$1 [SKIP]" >&277 # Kselftest framework requirement - SKIP code is 4.78 exit 479}80 81#82# Main script83#84main "$@"85