On Tue, Aug 31, 2021 at 10:19 AM Daniel Latypov <dlatypov@xxxxxxxxxx> wrote: > > This test assumes that the declared kunit_suite object is the exact one > which is being executed, which KUnit will not guarantee [1]. > > Specifically, `suite->log` is not initialized until a suite object is > executed. So if KUnit makes a copy of the suite and runs that instead, > this test dereferences an invalid pointer and (hopefully) segfaults. > > N.B. since we no longer assume this, we can no longer verify that > `suite->log` is *not* allocated during normal execution. > > An alternative to this patch that would allow us to test that would > require exposing an API for the current test to get its current suite. > Exposing that for one internal kunit test seems like overkill, and > grants users more footguns (e.g. reusing a test case in multiple suites > and changing behavior based on the suite name, dynamically modifying the > setup/cleanup funcs, storing/reading stuff out of the suite->log, etc.). > > [1] In a subsequent patch, KUnit will allow running subsets of test > cases within a suite by making a copy of the suite w/ the filtered test > list. But there are other reasons KUnit might execute a copy, e.g. if it > ever wants to support parallel execution of different suites, recovering > from errors and restarting suites > > Signed-off-by: Daniel Latypov <dlatypov@xxxxxxxxxx> Reviewed-by: Brendan Higgins <brendanhiggins@xxxxxxxxxx>