On Fri, 15 Dec 2023 at 23:13, Michal Wajdeczko
<[email protected]> wrote:
>
> If we run parameterized test that uses test->priv to prepare some
> custom data, then value of test->priv will leak to the next param
> iteration and may be unexpected.  This could be easily seen if
> we promote example_priv_test to parameterized test as then only
> first test iteration will be successful:
>
> $ ./tools/testing/kunit/kunit.py run \
>         --kunitconfig ./lib/kunit/.kunitconfig *.example_priv*
>
> [ ] Starting KUnit Kernel (1/1)...
> [ ] ============================================================
> [ ] =================== example (1 subtest) ====================
> [ ] ==================== example_priv_test  ====================
> [ ] [PASSED] example value 3
> [ ] # example_priv_test: initializing
> [ ] # example_priv_test: ASSERTION FAILED at 
> lib/kunit/kunit-example-test.c:230
> [ ] Expected test->priv == ((void *)0), but
> [ ]     test->priv == 0000000060dfe290
> [ ]     ((void *)0) == 0000000000000000
> [ ] # example_priv_test: cleaning up
> [ ] [FAILED] example value 2
> [ ] # example_priv_test: initializing
> [ ] # example_priv_test: ASSERTION FAILED at 
> lib/kunit/kunit-example-test.c:230
> [ ] Expected test->priv == ((void *)0), but
> [ ]     test->priv == 0000000060dfe290
> [ ]     ((void *)0) == 0000000000000000
> [ ] # example_priv_test: cleaning up
> [ ] [FAILED] example value 1
> [ ] # example_priv_test: initializing
> [ ] # example_priv_test: ASSERTION FAILED at 
> lib/kunit/kunit-example-test.c:230
> [ ] Expected test->priv == ((void *)0), but
> [ ]     test->priv == 0000000060dfe290
> [ ]     ((void *)0) == 0000000000000000
> [ ] # example_priv_test: cleaning up
> [ ] [FAILED] example value 0
> [ ] # example_priv_test: initializing
> [ ] # example_priv_test: cleaning up
> [ ] # example_priv_test: pass:1 fail:3 skip:0 total:4
> [ ] ================ [FAILED] example_priv_test ================
> [ ]     # example: initializing suite
> [ ]     # module: kunit_example_test
> [ ]     # example: exiting suite
> [ ] # Totals: pass:1 fail:3 skip:0 total:4
> [ ] ===================== [FAILED] example =====================
>
> Fix that by resetting test->priv after each param iteration, in
> similar way what we did for the test->status.
>
> Signed-off-by: Michal Wajdeczko <[email protected]>
> Cc: David Gow <[email protected]>
> Cc: Rae Moar <[email protected]>
> ---

Looks good to me. I'd vaguely assumed we'd treat test.priv as having
an undefined value on test start, but thinking about it, I like making
it explicitly NULL better.

Reviewed-by: David Gow <[email protected]>

Cheers,
-- David

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

Reply via email to