summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorUlf Magnusson <ulfalizer@gmail.com>2017-09-25 20:24:11 +0200
committerUlf Magnusson <ulfalizer@gmail.com>2017-09-25 20:42:44 +0200
commit5f3d307155f4db035b652738e9fc49ad8be0c792 (patch)
tree3c5d4d3322a7d8bf0e2c5a7f9f7f0243b8860cfb /tests
parent58e05c00ab0a762866e3719974d5b74096df233c (diff)
Fix 'default' on non-visible choice symbols
Previously, 'default CHOICE_SYM [if <cond>]' in a choice would skip any following 'default' properties if <cond> was non-'n'. However, those other defaults should still be considered if CHOICE_SYM has visibility 'n'. Previously, we'd immediately fall back to selecting the first visible symbol in the choice in that case. get_selection_from_defaults() now exactly mirrors sym_choice_default() from the C implementation, and got less convoluted too. Nothing in the kernel defconfigs triggered this. Add a new test case too.
Diffstat (limited to 'tests')
-rw-r--r--tests/Kchoice20
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/Kchoice b/tests/Kchoice
index 1e841ca..e80e222 100644
--- a/tests/Kchoice
+++ b/tests/Kchoice
@@ -75,6 +75,26 @@ config OPT_4
tristate "OPT_4"
endchoice
+choice DEFAULTS_NOT_VISIBLE
+ bool "defaults not visible"
+ # Skipped due to condition
+ default OPT_6 if n
+ # Skipped because OPT_7 is not visible
+ default OPT_7
+ # This one should apply
+ default OPT_8
+config OPT_5
+ tristate "OPT_5"
+config OPT_6
+ tristate "OPT_6"
+config OPT_7
+ tristate "OPT_7" if n
+config OPT_8
+ tristate "OPT_8"
+config OPT_9
+ tristate "OPT_9"
+endchoice
+
# Choices without an explicitly specified type should get the type of the first
# symbol with a type