summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlf Magnusson <ulfalizer@gmail.com>2012-12-15 14:43:41 +0100
committerUlf Magnusson <ulfalizer@gmail.com>2012-12-15 14:43:41 +0100
commitd5e9ebb3d06c3e3083fdc35e459a6a6226c237e1 (patch)
tree85f3d7413d250bbeb3cc0498a58da4119440c0ba
parentc341c149abae9b6c240185143655d0feda5f5ede (diff)
Add a long dependency chain selftest.
-rw-r--r--tests/Kchain114
-rw-r--r--testsuite.py9
2 files changed, 123 insertions, 0 deletions
diff --git a/tests/Kchain b/tests/Kchain
new file mode 100644
index 0000000..316bb04
--- /dev/null
+++ b/tests/Kchain
@@ -0,0 +1,114 @@
+#
+# Dependency chain.
+#
+# In the following, CHAIN_n depends on CHAIN_n-1 in different ways for n > 1.
+# We verify that the last element depends on CHAIN_1.
+#
+
+config CHAIN_1
+ bool
+
+config CHAIN_2
+ bool "chain 2"
+ depends on CHAIN_1
+
+config CHAIN_3
+ bool "chain 3" if CHAIN_2
+
+config CHAIN_4
+ def_bool CHAIN_3
+
+config CHAIN_5
+ def_bool y if CHAIN_4
+
+config CHAIN_6
+ def_tristate CHAIN_5
+
+config CHAIN_7
+ def_tristate y if CHAIN_6
+
+config CHAIN_8
+ bool
+ default CHAIN_7
+
+config CHAIN_9
+ bool
+ default y if CHAIN_8
+
+config CHAIN_10
+ bool
+ prompt "chain 10" if CHAIN_9
+
+config CHAIN_11
+ int
+ range 0 1 if CHAIN_10
+
+config CHAIN_12
+ int
+ range CHAIN_11 10
+
+config CHAIN_13
+ hex
+ range 0 CHAIN_12
+
+config CHAIN_14
+ bool "chain 14" if "0x2" = CHAIN_13
+ select CHAIN_15
+
+config CHAIN_15
+ bool "chain 15"
+
+config CHAIN_SELECT_RELAY
+ bool "chain select relay"
+ default y
+ select CHAIN_16 if CHAIN_15
+
+config CHAIN_16
+ bool "chain 16"
+
+if CHAIN_16 = 0
+config CHAIN_17
+ tristate "chain 17"
+endif
+
+menu "chain menu"
+ depends on CHAIN_17
+config CHAIN_18
+ bool "chain 18"
+endmenu
+
+menu "chain menu visible if"
+ visible if CHAIN_18
+config CHAIN_19
+ bool "chain 19"
+endmenu
+
+choice CHAIN_CHOICE_1
+ tristate "chain choice 1" if CHAIN_19
+config CHAIN_20
+ tristate "chain 20"
+config DUMMY_1
+ tristate "dummy 1"
+endchoice
+
+choice CHAIN_CHOICE_2
+ tristate "chain choice 2"
+ depends on CHAIN_20
+config DUMMY_2
+ tristate "dummy 2"
+config CHAIN_21
+ tristate "chain 18"
+endchoice
+
+choice CHAIN_CHOICE_3
+ tristate "chain choice 3"
+ default DUMMY_3 if CHAIN_21
+config CHAIN_22
+ tristate "chain 22"
+config DUMMY_3
+ tristate "dummy 3"
+endchoice
+
+config CHAIN_23
+ string "chain 19"
+ depends on CHAIN_22
diff --git a/testsuite.py b/testsuite.py
index 6ffdbd1..a8c0e0d 100644
--- a/testsuite.py
+++ b/testsuite.py
@@ -1339,6 +1339,15 @@ def run_selftests():
verify_dependent("C", ["A", "B"])
verify_dependent("S", ["A", "B", "C"])
+ # Verify that the last symbol depends on the first in a long chain of
+ # dependencies. Test twice to cover dependency caching.
+
+ c = kconfiglib.Config("Kconfiglib/tests/Kchain")
+
+ for i in range(0, 2):
+ verify(c["CHAIN_23"] in c["CHAIN_1"]._get_dependent(),
+ "Dependency chain broken")
+
print
if _all_ok:
print "All selftests passed"