On Fri, May 20, 2022 at 3:13 PM Daniel Latypov dlatypov@google.com wrote:
Talking offline with David, we've come up with a small example.
If we add this kconfig somewhere +config X
bool "X"
default y
+config Y
bool "Y"
default y
depends on X
Then running this will fail $ ./tools/testing/kunit/kunit.py config --kunitconfig xy_kunitconfig --kconfig_add=CONFIG_X=n --kconfig_add=CONFIG_Y=n
It will fail with this This is probably due to unsatisfied dependencies. Missing: # CONFIG_Y is not set
The problem is that kunit.py is looking for an explicit line saying CONFIG_Y is not set. But CONFIG_Y's dependencies are not met, so Kconfig doesn't write it out.
I assume we can treat the absence of it in the file as proof that it's not set. I.e. the bug lies in the is_subset() logic we have in kunit.py?
Ah no, this is just me trying to be clever and avoid a call to this logic. I tried to use set_diff() and check if that's empty as an alternative. But the set_diff() logic is not aware of how to treat the absence of options properly.
I'll send a v2 w/ a fix.