Re: [PATCH] tools/testing/kunit/kunit.py: remove redundant double check

From: Daniel Latypov
Date: Tue Jan 17 2023 - 17:11:54 EST


On Sun, Jan 15, 2023 at 1:05 PM Alexander Pantyukhin
<apantykhin@xxxxxxxxx> wrote:
>
> The build_tests function contained the doulbe checking for not success

very nit: if we're fixing the "doulbe" typo, can we also do
"the doulbe" => "double" (drop the "the")

> result. It is fixed in the current patch. Additional small
> simplifications of code like useing ternary if were applied (avoid use
> the same operation by calculation times differ in two places).
>
> Signed-off-by: Alexander Pantyukhin <apantykhin@xxxxxxxxx>

Reviewed-by: Daniel Latypov <dlatypov@xxxxxxxxxx>

Thanks!
I can't believe we never noticed the duplicate `if not success` blocks
before now.

Some minor suggestions below if we're already going to send a v2 out for typos.

> ---
> tools/testing/kunit/kunit.py | 17 +++++------------
> 1 file changed, 5 insertions(+), 12 deletions(-)
>
> diff --git a/tools/testing/kunit/kunit.py b/tools/testing/kunit/kunit.py
> index 43fbe96318fe..481c213818bd 100755
> --- a/tools/testing/kunit/kunit.py
> +++ b/tools/testing/kunit/kunit.py
> @@ -77,10 +77,8 @@ def config_tests(linux: kunit_kernel.LinuxSourceTree,
> config_start = time.time()
> success = linux.build_reconfig(request.build_dir, request.make_options)
> config_end = time.time()
> - if not success:
> - return KunitResult(KunitStatus.CONFIG_FAILURE,
> - config_end - config_start)
> - return KunitResult(KunitStatus.SUCCESS,
> + status = KunitStatus.SUCCESS if success else KunitStatus.CONFIG_FAILURE
> + return KunitResult(status,
> config_end - config_start)

nit: perhaps we can shorten this to one line, i.e.
return KunitResult(status, config_end - config_start)

>
> def build_tests(linux: kunit_kernel.LinuxSourceTree,
> @@ -92,13 +90,8 @@ def build_tests(linux: kunit_kernel.LinuxSourceTree,
> request.build_dir,
> request.make_options)
> build_end = time.time()
> - if not success:
> - return KunitResult(KunitStatus.BUILD_FAILURE,
> - build_end - build_start)
> - if not success:
> - return KunitResult(KunitStatus.BUILD_FAILURE,
> - build_end - build_start)

Oh huh, I guess this duplication comes from commit 45ba7a893ad8
("kunit: kunit_tool: Separate out config/build/exec/parse")

@@ -64,78 +84,167 @@ def run_tests(linux: kunit_kernel.LinuxSourceTree,
build_end = time.time()
if not success:
return KunitResult(KunitStatus.BUILD_FAILURE, 'could
not build kernel')
+ if not success:
+ return KunitResult(KunitStatus.BUILD_FAILURE,
+ 'could not build kernel',

> - return KunitResult(KunitStatus.SUCCESS,
> + status = KunitStatus.SUCCESS if success else KunitStatus.BUILD_FAILURE
> + return KunitResult(status,
> build_end - build_start)

ditto here,
return KunitResult(status, build_end - build_start)

>
> def config_and_build_tests(linux: kunit_kernel.LinuxSourceTree,
> @@ -145,7 +138,7 @@ def exec_tests(linux: kunit_kernel.LinuxSourceTree, request: KunitExecRequest) -
> tests = _list_tests(linux, request)
> if request.run_isolated == 'test':
> filter_globs = tests
> - if request.run_isolated == 'suite':
> + elif request.run_isolated == 'suite':

This is better, thanks.

Daniel