On Wed, 11 Jun 2025 at 15:38, Thomas Weißschuh thomas.weissschuh@linutronix.de wrote:
Extend the example to show how to run a userspace executable.
Signed-off-by: Thomas Weißschuh thomas.weissschuh@linutronix.de
Reviewed-by: David Gow davidgow@google.com
Cheers, -- David
lib/kunit/Makefile | 9 ++++++++- lib/kunit/kunit-example-test.c | 15 +++++++++++++++ lib/kunit/kunit-example-uapi.c | 22 ++++++++++++++++++++++ 3 files changed, 45 insertions(+), 1 deletion(-)
diff --git a/lib/kunit/Makefile b/lib/kunit/Makefile index dafa09bd4241c24d31c4c19edecb67bf724127d7..e406a31df1df834a87961663de0b7921b59481c2 100644 --- a/lib/kunit/Makefile +++ b/lib/kunit/Makefile @@ -30,4 +30,11 @@ obj-$(CONFIG_KUNIT_TEST) += string-stream-test.o obj-$(CONFIG_KUNIT_TEST) += assert_test.o endif
-obj-$(CONFIG_KUNIT_EXAMPLE_TEST) += kunit-example-test.o +userprogs += kunit-example-uapi +kunit-example-uapi-userccflags := -static +kunit-example-uapi-nolibc := $(CONFIG_ARCH_HAS_NOLIBC) +blobs += kunit-example-uapi.blob.o
+obj-$(CONFIG_KUNIT_EXAMPLE_TEST) += kunit-example-mod.o +kunit-example-mod-y += kunit-example-test.o +kunit-example-mod-$(CONFIG_KUNIT_UAPI) += kunit-example-uapi.blob.o diff --git a/lib/kunit/kunit-example-test.c b/lib/kunit/kunit-example-test.c index 3056d6bc705d0a8f196f0f4412e679dbb0e03114..b2681a6e047dfd6fea4a7cca60e81651d09c2eae 100644 --- a/lib/kunit/kunit-example-test.c +++ b/lib/kunit/kunit-example-test.c @@ -6,8 +6,11 @@
- Author: Brendan Higgins brendanhiggins@google.com
*/
+#include <linux/blob.h>
#include <kunit/test.h> #include <kunit/static_stub.h> +#include <kunit/uapi.h>
/*
- This is the most fundamental element of KUnit, the test case. A test case
@@ -277,6 +280,17 @@ static void example_slow_test(struct kunit *test) KUNIT_EXPECT_EQ(test, 1 + 1, 2); }
+/*
- This test shows the usage of UAPI tests.
- */
+static void example_uapi_test(struct kunit *test) +{
if (IS_ENABLED(CONFIG_KUNIT_UAPI))
kunit_uapi_run_kselftest(test, BLOB(kunit_example_uapi));
else
kunit_skip(test, "CONFIG_KUNIT_UAPI is not enabled");
+}
/*
- Here we make a list of all the test cases we want to add to the test suite
- below.
@@ -297,6 +311,7 @@ static struct kunit_case example_test_cases[] = { KUNIT_CASE(example_priv_test), KUNIT_CASE_PARAM(example_params_test, example_gen_params), KUNIT_CASE_SLOW(example_slow_test),
KUNIT_CASE(example_uapi_test), {}
};
diff --git a/lib/kunit/kunit-example-uapi.c b/lib/kunit/kunit-example-uapi.c new file mode 100644 index 0000000000000000000000000000000000000000..4ce657050dd4a576632a41ca0309c4cb5134ce14 --- /dev/null +++ b/lib/kunit/kunit-example-uapi.c @@ -0,0 +1,22 @@ +// SPDX-License-Identifier: GPL-2.0 +/*
- KUnit Userspace example test.
- Copyright (C) 2025, Linutronix GmbH.
- Author: Thomas Weißschuh thomas.weissschuh@linutronix.de
- This is *userspace* code.
- */
+#include "../../tools/testing/selftests/kselftest.h"
+int main(void) +{
ksft_print_header();
ksft_set_plan(4);
ksft_test_result_pass("userspace test 1\n");
ksft_test_result_pass("userspace test 2\n");
ksft_test_result_skip("userspace test 3: some reason\n");
ksft_test_result_pass("userspace test 4\n");
ksft_finished();
+}
-- 2.49.0