blob: 610d0f6fd914c89a9d256eb1628cd60ac8ab0700 [file] [log] [blame] [edit]
From 0c730ea49928beabf00183f74a83532a829aea5d Mon Sep 17 00:00:00 2001
From: Developer <developer@example.com>
Date: Fri, 27 Sep 2024 21:09:07 +0000
Subject: [PATCH 1/2] Create an example KUnit test
Following the "Writing Your First Test" guide from the KUnit
documentation, adds an example driver and KUnit test to drivers/misc.
Link: https://docs.kernel.org/dev-tools/kunit/start.html#writing-your-first-test
Test: tools/testing/kunit/kunit.py run --kunitconfig drivers/misc
Change-Id: I2f9570b7815bb600e83b1871852454c29ac42e0a
Signed-off-by: Developer <developer@example.com>
---
drivers/misc/.kunitconfig | 4 +++
drivers/misc/Kconfig | 8 +++++
drivers/misc/Makefile | 2 ++
drivers/misc/example.c | 13 +++++++
drivers/misc/example.h | 5 +++
drivers/misc/example_test.c | 37 ++++++++++++++++++++
tools/testing/kunit/configs/all_tests.config | 2 ++
7 files changed, 71 insertions(+)
create mode 100644 drivers/misc/.kunitconfig
create mode 100644 drivers/misc/example.c
create mode 100644 drivers/misc/example.h
create mode 100644 drivers/misc/example_test.c
diff --git a/drivers/misc/.kunitconfig b/drivers/misc/.kunitconfig
new file mode 100644
index 000000000000..beaba9037670
--- /dev/null
+++ b/drivers/misc/.kunitconfig
@@ -0,0 +1,4 @@
+CONFIG_KUNIT=y
+CONFIG_MISC_EXAMPLE=y
+CONFIG_MISC_EXAMPLE_TEST=y
+
diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig
index d118aeeb1049..4af45d56cb04 100644
--- a/drivers/misc/Kconfig
+++ b/drivers/misc/Kconfig
@@ -5,6 +5,14 @@
menu "Misc devices"
+config MISC_EXAMPLE
+ bool "My example"
+
+config MISC_EXAMPLE_TEST
+ tristate "Test for my example" if !KUNIT_ALL_TESTS
+ depends on MISC_EXAMPLE && KUNIT
+ default KUNIT_ALL_TESTS
+
config SENSORS_LIS3LV02D
tristate
depends on INPUT
diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile
index 35c790e23072..c0bdb54f3af8 100644
--- a/drivers/misc/Makefile
+++ b/drivers/misc/Makefile
@@ -3,6 +3,8 @@
# Makefile for misc devices that really don't fit anywhere else.
#
+obj-$(CONFIG_MISC_EXAMPLE) += example.o
+obj-$(CONFIG_MISC_EXAMPLE_TEST) += example_test.o
obj-$(CONFIG_IBM_ASM) += ibmasm/
obj-$(CONFIG_IBMVMC) += ibmvmc.o
obj-$(CONFIG_AD525X_DPOT) += ad525x_dpot.o
diff --git a/drivers/misc/example.c b/drivers/misc/example.c
new file mode 100644
index 000000000000..75a1d8984f7c
--- /dev/null
+++ b/drivers/misc/example.c
@@ -0,0 +1,13 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2025 Google LLC.
+ */
+#include <linux/module.h>
+
+#include "example.h"
+
+int misc_example_add(int left, int right)
+{
+ return left + right;
+}
+EXPORT_SYMBOL_GPL(misc_example_add);
diff --git a/drivers/misc/example.h b/drivers/misc/example.h
new file mode 100644
index 000000000000..698a31ac54cd
--- /dev/null
+++ b/drivers/misc/example.h
@@ -0,0 +1,5 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2025 Google LLC.
+ */
+int misc_example_add(int left, int right);
diff --git a/drivers/misc/example_test.c b/drivers/misc/example_test.c
new file mode 100644
index 000000000000..77ffcb863ccc
--- /dev/null
+++ b/drivers/misc/example_test.c
@@ -0,0 +1,37 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright 2025 Google LLC.
+ */
+#include <kunit/test.h>
+#include "example.h"
+
+/* Define the test cases. */
+
+static void misc_example_add_test_basic(struct kunit *test)
+{
+ KUNIT_EXPECT_EQ(test, 1, misc_example_add(1, 0));
+ KUNIT_EXPECT_EQ(test, 2, misc_example_add(1, 1));
+ KUNIT_EXPECT_EQ(test, 0, misc_example_add(-1, 1));
+ KUNIT_EXPECT_EQ(test, INT_MAX, misc_example_add(0, INT_MAX));
+ KUNIT_EXPECT_EQ(test, -1, misc_example_add(INT_MAX, INT_MIN));
+}
+
+static void misc_example_test_failure(struct kunit *test)
+{
+ KUNIT_FAIL(test, "This test never passes.");
+}
+
+static struct kunit_case misc_example_test_cases[] = {
+ KUNIT_CASE(misc_example_add_test_basic),
+ KUNIT_CASE(misc_example_test_failure),
+ {}
+};
+
+static struct kunit_suite misc_example_test_suite = {
+ .name = "misc-example",
+ .test_cases = misc_example_test_cases,
+};
+kunit_test_suite(misc_example_test_suite);
+
+MODULE_DESCRIPTION("KUnit test for misc_example_add");
+MODULE_LICENSE("GPL");
diff --git a/tools/testing/kunit/configs/all_tests.config b/tools/testing/kunit/configs/all_tests.config
index 422e186cf3cf..08b31354ce97 100644
--- a/tools/testing/kunit/configs/all_tests.config
+++ b/tools/testing/kunit/configs/all_tests.config
@@ -29,6 +29,8 @@ CONFIG_MCTP_FLOWS=y
CONFIG_INET=y
CONFIG_MPTCP=y
+CONFIG_MISC_EXAMPLE=y
+
CONFIG_NETDEVICES=y
CONFIG_WLAN=y
CONFIG_CFG80211=y