kconfig: tests: test if new symbols in choice are asked
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Tue, 13 Mar 2018 09:12:06 +0000 (18:12 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Sun, 25 Mar 2018 17:04:03 +0000 (02:04 +0900)
If new choice values are added with new dependency, and they become
visible during user configuration, oldconfig should recognize them
as (NEW), and ask the user for choice.

This issue was fixed by commit 5d09598d488f ("kconfig: fix new choices
being skipped upon config update").

This is a subtle corner case.  Add a test case to avoid breakage.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
Reviewed-by: Ulf Magnusson <ulfalizer@gmail.com>
scripts/kconfig/tests/new_choice_with_dep/Kconfig [new file with mode: 0644]
scripts/kconfig/tests/new_choice_with_dep/__init__.py [new file with mode: 0644]
scripts/kconfig/tests/new_choice_with_dep/config [new file with mode: 0644]
scripts/kconfig/tests/new_choice_with_dep/expected_stdout [new file with mode: 0644]

diff --git a/scripts/kconfig/tests/new_choice_with_dep/Kconfig b/scripts/kconfig/tests/new_choice_with_dep/Kconfig
new file mode 100644 (file)
index 0000000..53ef1b8
--- /dev/null
@@ -0,0 +1,37 @@
+config A
+       bool "A"
+       help
+         This is a new symbol.
+
+choice
+       prompt "Choice ?"
+       depends on A
+       help
+         "depends on A" has been newly added.
+
+config CHOICE_B
+       bool "Choice B"
+
+config CHOICE_C
+       bool "Choice C"
+       help
+         This is a new symbol, so should be asked.
+
+endchoice
+
+choice
+       prompt "Choice2 ?"
+
+config CHOICE_D
+       bool "Choice D"
+
+config CHOICE_E
+       bool "Choice E"
+
+config CHOICE_F
+       bool "Choice F"
+       depends on A
+       help
+         This is a new symbol, so should be asked.
+
+endchoice
diff --git a/scripts/kconfig/tests/new_choice_with_dep/__init__.py b/scripts/kconfig/tests/new_choice_with_dep/__init__.py
new file mode 100644 (file)
index 0000000..f0e0ead
--- /dev/null
@@ -0,0 +1,14 @@
+"""
+Ask new choice values when they become visible.
+
+If new choice values are added with new dependency, and they become
+visible during user configuration, oldconfig should recognize them
+as (NEW), and ask the user for choice.
+
+Related Linux commit: 5d09598d488f081e3be23f885ed65cbbe2d073b5
+"""
+
+
+def test(conf):
+    assert conf.oldconfig('config', 'y') == 0
+    assert conf.stdout_contains('expected_stdout')
diff --git a/scripts/kconfig/tests/new_choice_with_dep/config b/scripts/kconfig/tests/new_choice_with_dep/config
new file mode 100644 (file)
index 0000000..47ef95d
--- /dev/null
@@ -0,0 +1,3 @@
+CONFIG_CHOICE_B=y
+# CONFIG_CHOICE_D is not set
+CONFIG_CHOICE_E=y
diff --git a/scripts/kconfig/tests/new_choice_with_dep/expected_stdout b/scripts/kconfig/tests/new_choice_with_dep/expected_stdout
new file mode 100644 (file)
index 0000000..74dc0bc
--- /dev/null
@@ -0,0 +1,10 @@
+A (A) [N/y/?] (NEW) y
+  Choice ?
+  > 1. Choice B (CHOICE_B)
+    2. Choice C (CHOICE_C) (NEW)
+  choice[1-2?]: 
+Choice2 ?
+  1. Choice D (CHOICE_D)
+> 2. Choice E (CHOICE_E)
+  3. Choice F (CHOICE_F) (NEW)
+choice[1-3?]: