Commit ee5f8cc2 authored by Michal Wajdeczko's avatar Michal Wajdeczko Committed by Shuah Khan

kunit: Reset test status on each param iteration

If we skip one parametrized test case then test status remains
SKIP for all subsequent test params leading to wrong reports:

$ ./tools/testing/kunit/kunit.py run \
	--kunitconfig ./lib/kunit/.kunitconfig *.example_params*
	--raw_output \

[ ] Starting KUnit Kernel (1/1)...
KTAP version 1
1..1
    # example: initializing suite
    KTAP version 1
    # Subtest: example
    # module: kunit_example_test
    1..1
        KTAP version 1
        # Subtest: example_params_test
    # example_params_test: initializing
    # example_params_test: cleaning up
        ok 1 example value 3 # SKIP unsupported param value 3
    # example_params_test: initializing
    # example_params_test: cleaning up
        ok 2 example value 2 # SKIP unsupported param value 3
    # example_params_test: initializing
    # example_params_test: cleaning up
        ok 3 example value 1 # SKIP unsupported param value 3
    # example_params_test: initializing
    # example_params_test: cleaning up
        ok 4 example value 0 # SKIP unsupported param value 0
    # example_params_test: pass:0 fail:0 skip:4 total:4
    ok 1 example_params_test # SKIP unsupported param value 0
    # example: exiting suite
ok 1 example # SKIP

Reset test status and status comment after each param iteration
to avoid using stale results.
Signed-off-by: default avatarMichal Wajdeczko <michal.wajdeczko@intel.com>
Cc: David Gow <davidgow@google.com>
Cc: Rae Moar <rmoar@google.com>
Reviewed-by: default avatarDavid Gow <davidgow@google.com>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
parent 53568b72
...@@ -190,6 +190,7 @@ static void example_static_stub_test(struct kunit *test) ...@@ -190,6 +190,7 @@ static void example_static_stub_test(struct kunit *test)
static const struct example_param { static const struct example_param {
int value; int value;
} example_params_array[] = { } example_params_array[] = {
{ .value = 3, },
{ .value = 2, }, { .value = 2, },
{ .value = 1, }, { .value = 1, },
{ .value = 0, }, { .value = 0, },
...@@ -213,8 +214,8 @@ static void example_params_test(struct kunit *test) ...@@ -213,8 +214,8 @@ static void example_params_test(struct kunit *test)
KUNIT_ASSERT_NOT_NULL(test, param); KUNIT_ASSERT_NOT_NULL(test, param);
/* Test can be skipped on unsupported param values */ /* Test can be skipped on unsupported param values */
if (!param->value) if (!is_power_of_2(param->value))
kunit_skip(test, "unsupported param value"); kunit_skip(test, "unsupported param value %d", param->value);
/* You can use param values for parameterized testing */ /* You can use param values for parameterized testing */
KUNIT_EXPECT_EQ(test, param->value % param->value, 0); KUNIT_EXPECT_EQ(test, param->value % param->value, 0);
......
...@@ -614,12 +614,14 @@ int kunit_run_tests(struct kunit_suite *suite) ...@@ -614,12 +614,14 @@ int kunit_run_tests(struct kunit_suite *suite)
param_desc, param_desc,
test.status_comment); test.status_comment);
kunit_update_stats(&param_stats, test.status);
/* Get next param. */ /* Get next param. */
param_desc[0] = '\0'; param_desc[0] = '\0';
test.param_value = test_case->generate_params(test.param_value, param_desc); test.param_value = test_case->generate_params(test.param_value, param_desc);
test.param_index++; test.param_index++;
test.status = KUNIT_SUCCESS;
kunit_update_stats(&param_stats, test.status); test.status_comment[0] = '\0';
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment