Commit 3b9a19e08960 ("kconfig: loop as long as we changed some symbols in randconfig") fixed randconfig where a choice contains a sub-choice. Prior to that commit, the sub-choice values were not set. I am not sure whether this is an intended feature or just something people discovered works, but it is used in the real world; drivers/usb/gadget/legacy/Kconfig is source'd in a choice context, then creates a sub-choice in it. For the test case in this commit, there are 3 possible results. Case 1: CONFIG_A=y # CONFIG_B is not set Case 2: # CONFIG_A is not set CONFIG_B=y CONFIG_C=y # CONFIG_D is not set Case 3: # CONFIG_A is not set CONFIG_B=y # CONFIG_C is not set CONFIG_D=y CONFIG_E=y So, this test iterates several times, and checks if the result is either of the three. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Reviewed-by: Ulf Magnusson <ulfalizer@gmail.com>
17 lines
507 B
Python
17 lines
507 B
Python
"""
|
|
Set random values recursively in nested choices.
|
|
|
|
Kconfig can create a choice-in-choice structure by using 'if' statement.
|
|
randconfig should correctly set random choice values.
|
|
|
|
Related Linux commit: 3b9a19e08960e5cdad5253998637653e592a3c29
|
|
"""
|
|
|
|
|
|
def test(conf):
|
|
for i in range(20):
|
|
assert conf.randconfig() == 0
|
|
assert (conf.config_contains('expected_stdout0') or
|
|
conf.config_contains('expected_stdout1') or
|
|
conf.config_contains('expected_stdout2'))
|