On Wed, 11 Jun 2025 at 15:38, Thomas Weißschuh <thomas.weisssc...@linutronix.de> wrote: > > Extend the example to show how to run a userspace executable. > > Signed-off-by: Thomas Weißschuh <thomas.weisssc...@linutronix.de> > ---
Reviewed-by: David Gow <david...@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 <brendanhigg...@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.weisssc...@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 >
smime.p7s
Description: S/MIME Cryptographic Signature