Re: [PATCH v3 3/3] kunit: Update kunit_print_ok_not_ok function

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 17 May 2023 at 19:20, Michal Wajdeczko
<michal.wajdeczko@xxxxxxxxx> wrote:
>
> There is no need use opaque test_or_suite pointer and is_test flag
> as we don't use anything from the suite struct. Always expect test
> pointer and use NULL as indication that provided results are from
> the suite so we can treat them differently.
>
> Since results could be from nested tests, like parameterized tests,
> add explicit level parameter to properly indent output messages and
> thus allow to reuse this function from other places.
>
> While around, remove small code duplication near skip directive.
>
> Signed-off-by: Michal Wajdeczko <michal.wajdeczko@xxxxxxxxx>
> Cc: David Gow <davidgow@xxxxxxxxxx>
> Cc: Rae Moar <rmoar@xxxxxxxxxx>
> ---

This looks good to me, thanks.

As a note, this seems to trigger a bug in checkpatch.pl:
substr outside of string at ./scripts/checkpatch.pl line 1664.
Use of uninitialized value $fmt in substitution (s///) at
./scripts/checkpatch.pl line 6899.
Use of uninitialized value $fmt in pattern match (m//) at
./scripts/checkpatch.pl line 6901.

I haven't dug into that myself, yet (it's something to do with format
strings), but I don't think we need to change this patch to work
around it.

Reviewed-by: David Gow <davidgow@xxxxxxxxxx>

Cheers,
-- David

>  include/kunit/test.h |  1 +
>  lib/kunit/test.c     | 45 +++++++++++++++++++++++++++-----------------
>  2 files changed, 29 insertions(+), 17 deletions(-)
>
> diff --git a/include/kunit/test.h b/include/kunit/test.h
> index 3028a1a3fcad..d717fc055e06 100644
> --- a/include/kunit/test.h
> +++ b/include/kunit/test.h
> @@ -47,6 +47,7 @@ struct kunit;
>   * sub-subtest.  See the "Subtests" section in
>   * https://node-tap.org/tap-protocol/
>   */
> +#define KUNIT_INDENT_LEN               4
>  #define KUNIT_SUBTEST_INDENT           "    "
>  #define KUNIT_SUBSUBTEST_INDENT                "        "
>
> diff --git a/lib/kunit/test.c b/lib/kunit/test.c
> index af48d0761d26..6bc92ced82ee 100644
> --- a/lib/kunit/test.c
> +++ b/lib/kunit/test.c
> @@ -185,16 +185,28 @@ static void kunit_print_suite_start(struct kunit_suite *suite)
>                   kunit_suite_num_test_cases(suite));
>  }
>
> -static void kunit_print_ok_not_ok(void *test_or_suite,
> -                                 bool is_test,
> +/* Currently supported test levels */
> +enum {
> +       KUNIT_LEVEL_SUITE = 0,
> +       KUNIT_LEVEL_CASE,
> +       KUNIT_LEVEL_CASE_PARAM,
> +};
> +
> +static void kunit_print_ok_not_ok(struct kunit *test,
> +                                 unsigned int test_level,
>                                   enum kunit_status status,
>                                   size_t test_number,
>                                   const char *description,
>                                   const char *directive)
>  {
> -       struct kunit_suite *suite = is_test ? NULL : test_or_suite;
> -       struct kunit *test = is_test ? test_or_suite : NULL;
>         const char *directive_header = (status == KUNIT_SKIPPED) ? " # SKIP " : "";
> +       const char *directive_body = (status == KUNIT_SKIPPED) ? directive : "";
> +
> +       /*
> +        * When test is NULL assume that results are from the suite
> +        * and today suite results are expected at level 0 only.
> +        */
> +       WARN(!test && test_level, "suite test level can't be %u!\n", test_level);
>
>         /*
>          * We do not log the test suite results as doing so would
> @@ -203,17 +215,18 @@ static void kunit_print_ok_not_ok(void *test_or_suite,
>          * separately seq_printf() the suite results for the debugfs
>          * representation.
>          */
> -       if (suite)
> +       if (!test)
>                 pr_info("%s %zd %s%s%s\n",
>                         kunit_status_to_ok_not_ok(status),
>                         test_number, description, directive_header,
> -                       (status == KUNIT_SKIPPED) ? directive : "");
> +                       directive_body);
>         else
>                 kunit_log(KERN_INFO, test,
> -                         KUNIT_SUBTEST_INDENT "%s %zd %s%s%s",
> +                         "%*s%s %zd %s%s%s",
> +                         KUNIT_INDENT_LEN * test_level, "",
>                           kunit_status_to_ok_not_ok(status),
>                           test_number, description, directive_header,
> -                         (status == KUNIT_SKIPPED) ? directive : "");
> +                         directive_body);
>  }
>
>  enum kunit_status kunit_suite_has_succeeded(struct kunit_suite *suite)
> @@ -239,7 +252,7 @@ static size_t kunit_suite_counter = 1;
>
>  static void kunit_print_suite_end(struct kunit_suite *suite)
>  {
> -       kunit_print_ok_not_ok((void *)suite, false,
> +       kunit_print_ok_not_ok(NULL, KUNIT_LEVEL_SUITE,
>                               kunit_suite_has_succeeded(suite),
>                               kunit_suite_counter++,
>                               suite->name,
> @@ -625,13 +638,11 @@ int kunit_run_tests(struct kunit_suite *suite)
>                                                  "param-%d", test.param_index);
>                                 }
>
> -                               kunit_log(KERN_INFO, &test,
> -                                         KUNIT_SUBTEST_INDENT KUNIT_SUBTEST_INDENT
> -                                         "%s %d %s%s%s",
> -                                         kunit_status_to_ok_not_ok(test.status),
> -                                         test.param_index + 1, param_desc,
> -                                         test.status == KUNIT_SKIPPED ? " # SKIP " : "",
> -                                         test.status == KUNIT_SKIPPED ? test.status_comment : "");
> +                               kunit_print_ok_not_ok(&test, KUNIT_LEVEL_CASE_PARAM,
> +                                                     test.status,
> +                                                     test.param_index + 1,
> +                                                     param_desc,
> +                                                     test.status_comment);
>
>                                 /* Get next param. */
>                                 param_desc[0] = '\0';
> @@ -645,7 +656,7 @@ int kunit_run_tests(struct kunit_suite *suite)
>
>                 kunit_print_test_stats(&test, param_stats);
>
> -               kunit_print_ok_not_ok(&test, true, test_case->status,
> +               kunit_print_ok_not_ok(&test, KUNIT_LEVEL_CASE, test_case->status,
>                                       kunit_test_case_num(suite, test_case),
>                                       test_case->name,
>                                       test.status_comment);
> --
> 2.25.1
>
> --
> 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/20230517111816.984-4-michal.wajdeczko%40intel.com.

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature


[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux