On Wed, 13 Dec 2023 at 09:02, Rae Moar rmoar@google.com wrote:
Add example_init_test_suite to allow for testing the feature of running test suites marked as init to indicate they use init data and/or functions.
This suite should always pass and uses a simple init function.
This suite can also be used to test the is_init attribute introduced in the next patch.
Signed-off-by: Rae Moar rmoar@google.com
Changes since v3:
- I ended up not changing anything as adding __init to the test gave a build warning. It did still work so I could add it back if wanted.
I had another look at this, and I think the most correct solution here is to make the test __init, and the array of tests __refdata.
(Ideally this would be something we could wrap in a macro, but I think it's fine to just have it written here for now, so it's explicit in the example._
How does that sound?
-- David
lib/kunit/kunit-example-test.c | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+)
diff --git a/lib/kunit/kunit-example-test.c b/lib/kunit/kunit-example-test.c index 6bb5c2ef6696..18495778de7c 100644 --- a/lib/kunit/kunit-example-test.c +++ b/lib/kunit/kunit-example-test.c @@ -287,4 +287,41 @@ static struct kunit_suite example_test_suite = { */ kunit_test_suites(&example_test_suite);
+static int __init init_add(int x, int y) +{
return (x + y);
+}
+/*
- This test should always pass. Can be used to test init suites.
- */
+static void example_init_test(struct kunit *test)
Add __init here.
+{
KUNIT_EXPECT_EQ(test, init_add(1, 1), 2);
+}
+/*
- The kunit_case struct cannot be marked as __initdata as this will be
- used in debugfs to retrieve results after test has run
- */
+static struct kunit_case example_init_test_cases[] = {
Make this 'static struct kunit_case __refdata example_init_test_cases[] = {'...
KUNIT_CASE(example_init_test),
{}
+};
+/*
- The kunit_suite struct cannot be marked as __initdata as this will be
- used in debugfs to retrieve results after test has run
- */
+static struct kunit_suite example_init_test_suite = {
.name = "example_init",
.test_cases = example_init_test_cases,
+};
+/*
- This registers the test suite and marks the suite as using init data
- and/or functions.
- */
+kunit_test_init_section_suites(&example_init_test_suite);
MODULE_LICENSE("GPL v2");
2.43.0.472.g3155946c3a-goog