#!/bin/sh # SPDX-License-Identifier: GPL-2.0-or-later # Copyright (c) 2021 Petr Vorel TST_TESTFUNC=test TST_SETUP=setup TST_CNT=3 TST_NEEDS_CMDS="tst_check_drivers find grep head sed" . tst_test.sh MODULES_DIR="${MODULES_DIR:-/lib/modules/$(uname -r)}" setup() { tst_res TINFO "using modules directory '$MODULES_DIR'" [ -d "$MODULES_DIR" ] || \ tst_brk TCONF "modules directory '$MODULES_DIR' missing" } test_drivers() { local paths="$*" local drv if [ -z "$paths" ]; then tst_res TCONF "no modules found" return fi for drv in $paths; do drv="$(echo $drv | sed 's/.*\/\([^/]\+\)\.ko.*/\1/')" EXPECT_PASS tst_check_drivers $drv drv="$(echo $drv | sed 's/_/-/g')" EXPECT_PASS tst_check_drivers $drv done } test1() { tst_res TINFO "check loadable module detection" test_drivers $(find $MODULES_DIR | grep -E '_[^/]+\.ko' | head -3) } test2() { tst_res TINFO "check non-existing module detection" EXPECT_FAIL tst_check_drivers not-existing-kernel-module } test3() { local f="$MODULES_DIR/modules.builtin" tst_res TINFO "check built-in module detection" [ -f "$f" ] || \ tst_brk TCONF "missing '$f'" test_drivers $(grep -E '_[^/]+\.ko' $f | head -3) } tst_run