Message ID | 20211214193010.138458-1-dlatypov@google.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 1ee2ba89bea86d6389509e426583b49ac19b86f2 |
Delegated to: | Brendan Higgins |
Headers | show |
Series | [v2] kunit: tool: make `build` subcommand also reconfigure if needed | expand |
On Tue, Dec 14, 2021 at 2:30 PM Daniel Latypov <dlatypov@google.com> wrote: > > If I created a kunitconfig file that was incomplete, then > $ ./tools/testing/kunit/kunit.py build --kunitconfig=my_kunitconfig > would silently drop all the options with unmet dependencies! > > This is because it doesn't do the config check that `kunit.py config` > does. > > So if I want to safely build a kernel for testing, I have to do > $ ./tools/testing/kunit/kunit.py config <flags> > $ ./tools/testing/kunit/kunit.py build <flags, again> > > It seems unlikely that any user of kunit.py would want the current > `build` semantics. > So make it effectively do `kunit.py config` + `kunit.py build`. > > Signed-off-by: Daniel Latypov <dlatypov@google.com> > Reviewed-by: Brendan Higgins <brendanhiggins@google.com> Looks good. Thanks for rebasing this!
diff --git a/tools/testing/kunit/kunit.py b/tools/testing/kunit/kunit.py index 417dc2d11f4f..f1be71811369 100755 --- a/tools/testing/kunit/kunit.py +++ b/tools/testing/kunit/kunit.py @@ -110,6 +110,14 @@ def build_tests(linux: kunit_kernel.LinuxSourceTree, 'built kernel successfully', build_end - build_start) +def config_and_build_tests(linux: kunit_kernel.LinuxSourceTree, + request: KunitBuildRequest) -> KunitResult: + config_result = config_tests(linux, request) + if config_result.status != KunitStatus.SUCCESS: + return config_result + + return build_tests(linux, request) + def _list_tests(linux: kunit_kernel.LinuxSourceTree, request: KunitExecRequest) -> List[str]: args = ['kunit.action=list'] if request.kernel_args: @@ -464,7 +472,7 @@ def main(argv, linux=None): make_options=cli_args.make_options, jobs=cli_args.jobs, alltests=cli_args.alltests) - result = build_tests(linux, request) + result = config_and_build_tests(linux, request) kunit_parser.print_with_timestamp(( 'Elapsed time: %.3fs\n') % ( result.elapsed_time)) diff --git a/tools/testing/kunit/kunit_tool_test.py b/tools/testing/kunit/kunit_tool_test.py index 1f6b177ca5c2..b80e333a20cb 100755 --- a/tools/testing/kunit/kunit_tool_test.py +++ b/tools/testing/kunit/kunit_tool_test.py @@ -526,7 +526,7 @@ class KUnitMainTest(unittest.TestCase): def test_build_passes_args_pass(self): kunit.main(['build'], self.linux_source_mock) - self.assertEqual(self.linux_source_mock.build_reconfig.call_count, 0) + self.assertEqual(self.linux_source_mock.build_reconfig.call_count, 1) self.linux_source_mock.build_kernel.assert_called_once_with(False, 8, '.kunit', None) self.assertEqual(self.linux_source_mock.run_kernel.call_count, 0)