Hi, On Wed, 2023-09-06 at 14:45 +0800, David Gow wrote: > On Mon, 4 Sept 2023 at 21:22, <benjamin@xxxxxxxxxxxxxxxx> wrote: > > > > From: Benjamin Berg <benjamin.berg@xxxxxxxxx> > > > > The existing KUNIT_ARRAY_PARAM macro requires a separate function > > to > > get the description. However, in a lot of cases the description can > > just be copied directly from the array. Add a second macro that > > avoids having to write a static function just for a single strscpy. > > > > Signed-off-by: Benjamin Berg <benjamin.berg@xxxxxxxxx> > > --- > > Looks good to me: this will be much more convenient. The actual > implementation looks spot on, just a small comment about the > documentation change. > > It may make sense to write some tests and/or some follow-up patches to > existing tests to use this macro, too. I'm just a little wary of > introducing something totally unused. (I'm happy to do these myself if > you don't have time, though.) I agree. I am happy to submit one or more patches to change the existing users. The question would be how we pull such a change in. Should it be submitted separately for each subtree or can we pull them all in at the same time here? Benjamin > > Regardless, with the documentation fix, this is: > Reviewed-by: David Gow <davidgow@xxxxxxxxxx> > > Cheers, > -- David > > > Documentation/dev-tools/kunit/usage.rst | 7 ++++--- > > include/kunit/test.h | 19 +++++++++++++++++++ > > 2 files changed, 23 insertions(+), 3 deletions(-) > > > > diff --git a/Documentation/dev-tools/kunit/usage.rst > > b/Documentation/dev-tools/kunit/usage.rst > > index c27e1646ecd9..fe8c28d66dfe 100644 > > --- a/Documentation/dev-tools/kunit/usage.rst > > +++ b/Documentation/dev-tools/kunit/usage.rst > > @@ -571,8 +571,9 @@ By reusing the same ``cases`` array from above, > > we can write the test as a > > { > > strcpy(desc, t->str); > > } > > - // Creates `sha1_gen_params()` to iterate over `cases`. > > - KUNIT_ARRAY_PARAM(sha1, cases, case_to_desc); > > + // Creates `sha1_gen_params()` to iterate over `cases` > > while using > > + // the struct member `str` for the case description. > > + KUNIT_ARRAY_PARAM_DESC(sha1, cases, str); > > I'd suggest either getting rid of the case_to_desc function totally > here, or show both the manual KUNIT_ARRAY_PARAM() example, and then > point out explicitly that KUNIT_ARRAY_PARAM_DESC() can replace it. > > Otherwise we end up with a vestigial function which doesn't do > anything and is confusing. > > > > > > // Looks no different from a normal test. > > static void sha1_test(struct kunit *test) > > @@ -588,7 +589,7 @@ By reusing the same ``cases`` array from above, > > we can write the test as a > > } > > > > // Instead of KUNIT_CASE, we use KUNIT_CASE_PARAM and pass > > in the > > - // function declared by KUNIT_ARRAY_PARAM. > > + // function declared by KUNIT_ARRAY_PARAM or > > KUNIT_ARRAY_PARAM_DESC. > > static struct kunit_case sha1_test_cases[] = { > > KUNIT_CASE_PARAM(sha1_test, sha1_gen_params), > > {} > > diff --git a/include/kunit/test.h b/include/kunit/test.h > > index 68ff01aee244..f60d11e41855 100644 > > --- a/include/kunit/test.h > > +++ b/include/kunit/test.h > > @@ -1516,6 +1516,25 @@ do > > { > > \ > > return > > NULL; > > \ > > } > > > > +/** > > + * KUNIT_ARRAY_PARAM_DESC() - Define test parameter generator from > > an array. > > + * @name: prefix for the test parameter generator function. > > + * @array: array of test parameters. > > + * @desc_member: structure member from array element to use as > > description > > + * > > + * Define function @name_gen_params which uses @array to generate > > parameters. > > + */ > > +#define KUNIT_ARRAY_PARAM_DESC(name, array, > > desc_member) \ > > + static const void *name##_gen_params(const void *prev, char > > *desc) \ > > + > > { > > \ > > + typeof((array)[0]) *__next = prev ? > > ((typeof(__next)) prev) + 1 : (array); \ > > + if (__next - (array) < ARRAY_SIZE((array))) > > { \ > > + strscpy(desc, __next->desc_member, > > KUNIT_PARAM_DESC_SIZE); \ > > + return > > __next; \ > > + > > } > > \ > > + return > > NULL; > > \ > > + } > > + > > // TODO(dlatypov@xxxxxxxxxx): consider eventually migrating users > > to explicitly > > // include resource.h themselves if they need it. > > #include <kunit/resource.h> > > -- > > 2.41.0 > > > > -- > > You received this message because you are subscribed to the Google > > Groups "KUnit Development" group. > > To unsubscribe from this group and stop receiving emails from it, > > send an email to kunit-dev+unsubscribe@xxxxxxxxxxxxxxxx. > > To view this discussion on the web visit > > https://groups.google.com/d/msgid/kunit-dev/20230904132139.103140-1-benjamin%40sipsolutions.net > > . Intel Deutschland GmbH Registered Address: Am Campeon 10, 85579 Neubiberg, Germany Tel: +49 89 99 8853-0, www.intel.de <http://www.intel.de> Managing Directors: Christin Eisenschmid, Sharon Heck, Tiffany Doon Silva Chairperson of the Supervisory Board: Nicole Lau Registered Office: Munich Commercial Register: Amtsgericht Muenchen HRB 186928