Extend the example to show how to run a userspace executable. Signed-off-by: Thomas Weißschuh <thomas.weissschuh@xxxxxxxxxxxxx> --- lib/kunit/Makefile | 8 +++++++- lib/kunit/kunit-example-test.c | 17 +++++++++++++++++ lib/kunit/kunit-uapi-example.c | 20 ++++++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/lib/kunit/Makefile b/lib/kunit/Makefile index 2b68f9bd20137edb705dcd8cb2dc145f9684cf73..0d89b666fcad12a542d3e2ffacedd26b122c5449 100644 --- a/lib/kunit/Makefile +++ b/lib/kunit/Makefile @@ -30,4 +30,10 @@ 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-uapi-example +kunit-uapi-example-userccflags := -static +kunit-uapi-example-nolibc := $(CONFIG_ARCH_HAS_NOLIBC) +blobs += kunit-uapi-example.blob.o +obj-$(CONFIG_KUNIT_EXAMPLE_TEST) += kunit-example-test-mod.o +kunit-example-test-mod-y += kunit-example-test.o +kunit-example-test-mod-$(CONFIG_KUNIT_UAPI) += kunit-uapi-example.blob.o diff --git a/lib/kunit/kunit-example-test.c b/lib/kunit/kunit-example-test.c index 3056d6bc705d0a8f196f0f4412e679dbb0e03114..c5b8b308ed7b10c6ec4f475965205f2ccc4b4ec5 100644 --- a/lib/kunit/kunit-example-test.c +++ b/lib/kunit/kunit-example-test.c @@ -6,8 +6,11 @@ * Author: Brendan Higgins <brendanhiggins@xxxxxxxxxx> */ +#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,19 @@ 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) +{ + DECLARE_BLOB(kunit_uapi_example); + + if (IS_ENABLED(CONFIG_KUNIT_UAPI)) + kunit_uapi_run_executable(test, &kunit_uapi_example); + else + kunit_skip(test, "CONFIG_KUNIT_UAPI not enabled"); +} + /* * Here we make a list of all the test cases we want to add to the test suite * below. @@ -297,6 +313,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-uapi-example.c b/lib/kunit/kunit-uapi-example.c new file mode 100644 index 0000000000000000000000000000000000000000..4ec4b924f29b089cce9ca5b2b08a6ee0117b8ae9 --- /dev/null +++ b/lib/kunit/kunit-uapi-example.c @@ -0,0 +1,20 @@ +// SPDX-License-Identifier: GPL-2.0 +/* + * KUnit Userspace example test. + * + * Copyright (C) 2025, Linuxtronix GmbH. + * Author: Thomas Weißschuh <thomas.weissschuh@xxxxxxxxxxxxx> + */ + +#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.48.1