lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0646/1039] kunit: Dont crash if no parameters are generated
    Date
    From: David Gow <davidgow@google.com>

    [ Upstream commit 37dbb4c7c7442dbfc9b651e4ddd4afe30b26afc9 ]

    It's possible that a parameterised test could end up with zero
    parameters. At the moment, the test function will nevertheless be called
    with NULL as the parameter. Instead, don't try to run the test code, and
    just mark the test as SKIPped.

    Reported-by: Daniel Latypov <dlatypov@google.com>
    Signed-off-by: David Gow <davidgow@google.com>
    Reviewed-by: Daniel Latypov <dlatypov@google.com>
    Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
    Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    lib/kunit/test.c | 18 ++++++++++--------
    1 file changed, 10 insertions(+), 8 deletions(-)

    diff --git a/lib/kunit/test.c b/lib/kunit/test.c
    index 3bd741e50a2d3..f96498ede2cc5 100644
    --- a/lib/kunit/test.c
    +++ b/lib/kunit/test.c
    @@ -504,16 +504,18 @@ int kunit_run_tests(struct kunit_suite *suite)
    struct kunit_result_stats param_stats = { 0 };
    test_case->status = KUNIT_SKIPPED;

    - if (test_case->generate_params) {
    + if (!test_case->generate_params) {
    + /* Non-parameterised test. */
    + kunit_run_case_catch_errors(suite, test_case, &test);
    + kunit_update_stats(&param_stats, test.status);
    + } else {
    /* Get initial param. */
    param_desc[0] = '\0';
    test.param_value = test_case->generate_params(NULL, param_desc);
    - }

    - do {
    - kunit_run_case_catch_errors(suite, test_case, &test);
    + while (test.param_value) {
    + kunit_run_case_catch_errors(suite, test_case, &test);

    - if (test_case->generate_params) {
    if (param_desc[0] == '\0') {
    snprintf(param_desc, sizeof(param_desc),
    "param-%d", test.param_index);
    @@ -530,11 +532,11 @@ int kunit_run_tests(struct kunit_suite *suite)
    param_desc[0] = '\0';
    test.param_value = test_case->generate_params(test.param_value, param_desc);
    test.param_index++;
    - }

    - kunit_update_stats(&param_stats, test.status);
    + kunit_update_stats(&param_stats, test.status);
    + }
    + }

    - } while (test.param_value);

    kunit_print_test_stats(&test, param_stats);

    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-25 01:11    [W:2.566 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site