1f08c3bdfSopenharmony_ci#!/bin/sh
2f08c3bdfSopenharmony_ci# SPDX-License-Identifier: GPL-2.0-or-later
3f08c3bdfSopenharmony_ci# Copyright (c) 2021 Petr Vorel <pvorel@suse.cz>
4f08c3bdfSopenharmony_ci
5f08c3bdfSopenharmony_ciTST_TESTFUNC=test
6f08c3bdfSopenharmony_ciTST_SETUP=setup
7f08c3bdfSopenharmony_ciTST_CNT=4
8f08c3bdfSopenharmony_ciTST_NEEDS_CMDS="tst_check_drivers find grep head sed"
9f08c3bdfSopenharmony_ci
10f08c3bdfSopenharmony_ciMODULES_DIR="${MODULES_DIR:-/lib/modules/$(uname -r)}"
11f08c3bdfSopenharmony_ci
12f08c3bdfSopenharmony_cisetup()
13f08c3bdfSopenharmony_ci{
14f08c3bdfSopenharmony_ci	tst_res TINFO "using modules directory '$MODULES_DIR'"
15f08c3bdfSopenharmony_ci
16f08c3bdfSopenharmony_ci	[ -d "$MODULES_DIR" ] || \
17f08c3bdfSopenharmony_ci		tst_brk TCONF "modules directory '$MODULES_DIR' missing"
18f08c3bdfSopenharmony_ci}
19f08c3bdfSopenharmony_ci
20f08c3bdfSopenharmony_citest_drivers()
21f08c3bdfSopenharmony_ci{
22f08c3bdfSopenharmony_ci	local paths="$*"
23f08c3bdfSopenharmony_ci	local drv
24f08c3bdfSopenharmony_ci
25f08c3bdfSopenharmony_ci	if [ -z "$paths" ]; then
26f08c3bdfSopenharmony_ci		tst_res TCONF "no modules found"
27f08c3bdfSopenharmony_ci		return
28f08c3bdfSopenharmony_ci	fi
29f08c3bdfSopenharmony_ci
30f08c3bdfSopenharmony_ci	for drv in $paths; do
31f08c3bdfSopenharmony_ci		drv="$(echo $drv | sed 's/.*\/\([^/]\+\)\.ko.*/\1/')"
32f08c3bdfSopenharmony_ci		EXPECT_PASS tst_check_drivers $drv
33f08c3bdfSopenharmony_ci		drv="$(echo $drv | sed 's/_/-/g')"
34f08c3bdfSopenharmony_ci		EXPECT_PASS tst_check_drivers $drv
35f08c3bdfSopenharmony_ci	done
36f08c3bdfSopenharmony_ci}
37f08c3bdfSopenharmony_ci
38f08c3bdfSopenharmony_citest1()
39f08c3bdfSopenharmony_ci{
40f08c3bdfSopenharmony_ci	tst_res TINFO "check loadable module detection"
41f08c3bdfSopenharmony_ci	test_drivers $(find $MODULES_DIR | grep -E '_[^/]+\.ko' | head -3)
42f08c3bdfSopenharmony_ci}
43f08c3bdfSopenharmony_ci
44f08c3bdfSopenharmony_citest2()
45f08c3bdfSopenharmony_ci{
46f08c3bdfSopenharmony_ci	tst_res TINFO "check non-existing module detection"
47f08c3bdfSopenharmony_ci	EXPECT_FAIL tst_check_drivers not-existing-kernel-module
48f08c3bdfSopenharmony_ci}
49f08c3bdfSopenharmony_ci
50f08c3bdfSopenharmony_citest3()
51f08c3bdfSopenharmony_ci{
52f08c3bdfSopenharmony_ci	local f="$MODULES_DIR/modules.builtin"
53f08c3bdfSopenharmony_ci
54f08c3bdfSopenharmony_ci	tst_res TINFO "check built-in module detection"
55f08c3bdfSopenharmony_ci
56f08c3bdfSopenharmony_ci	[ -f "$f" ] || tst_brk TCONF "missing '$f'"
57f08c3bdfSopenharmony_ci
58f08c3bdfSopenharmony_ci	test_drivers $(grep -E '_[^/]+\.ko' $f | head -3)
59f08c3bdfSopenharmony_ci}
60f08c3bdfSopenharmony_ci
61f08c3bdfSopenharmony_citest4()
62f08c3bdfSopenharmony_ci{
63f08c3bdfSopenharmony_ci	local f="$MODULES_DIR/modules.builtin"
64f08c3bdfSopenharmony_ci
65f08c3bdfSopenharmony_ci	tst_res TINFO "check for x68_64 arch module detection"
66f08c3bdfSopenharmony_ci
67f08c3bdfSopenharmony_ci	[ -f "$f" ] || tst_brk TCONF "missing '$f'"
68f08c3bdfSopenharmony_ci	test_drivers $(grep -E '[^/]+[-_]x86[-_]64.*\.ko' $f | head -3)
69f08c3bdfSopenharmony_ci}
70f08c3bdfSopenharmony_ci
71f08c3bdfSopenharmony_ci. tst_test.sh
72f08c3bdfSopenharmony_citst_run
73