kunit: tool: reconfigure when the used kunitconfig changes
authorDaniel Latypov <dlatypov@google.com>
Fri, 19 Nov 2021 23:23:16 +0000 (15:23 -0800)
committerShuah Khan <skhan@linuxfoundation.org>
Mon, 13 Dec 2021 20:59:03 +0000 (13:59 -0700)
commit4c2911f1e140b393d2c9920875911c992f8dda2c
tree778677a2f560d29ca7a1784d8fe48b77959133df
parentc44895b6cd8517c022dcc3d6fd4cd9bea1184a06
kunit: tool: reconfigure when the used kunitconfig changes

Problem: currently, if you remove something from your kunitconfig,
kunit.py will not regenerate the .config file.
The same thing happens if you did --kunitconfig_add=CONFIG_KASAN=y [1]
and then ran again without it. Your new run will still have KASAN.

The reason is that kunit.py won't regenerate the .config file if it's a
superset of the kunitconfig. This speeds it up a bit for iterating.

This patch adds an additional check that forces kunit.py to regenerate
the .config file if the current kunitconfig doesn't match the previous
one.

What this means:
* deleting entries from .kunitconfig works as one would expect
* dropping  a --kunitconfig_add also triggers a rebuild
* you can still edit .config directly to turn on new options

We implement this by creating a `last_used_kunitconfig` file in the
build directory (so .kunit, by default) after we generate the .config.
When comparing the kconfigs, we compare python sets, so duplicates and
permutations don't trip us up.

The majority of this patch is adding unit tests for the existing logic
and for the new case where `last_used_kunitconfig` differs.

[1] https://lore.kernel.org/linux-kselftest/20211106013058.2621799-2-dlatypov@google.com/

Signed-off-by: Daniel Latypov <dlatypov@google.com>
Reviewed-by: David Gow <davidgow@google.com>
Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
Documentation/dev-tools/kunit/start.rst
tools/testing/kunit/kunit_kernel.py
tools/testing/kunit/kunit_tool_test.py