summaryrefslogtreecommitdiff
path: root/testsuite.py
diff options
context:
space:
mode:
authorUlf Magnusson <ulfalizer@gmail.com>2018-01-05 20:37:00 +0100
committerUlf Magnusson <ulfalizer@gmail.com>2018-01-05 21:38:57 +0100
commit5d693b2e66451aedfd694ffde4dba7d4b74afa46 (patch)
treec35c01fe21902cf6c7814707ef9f200c5f0c5818 /testsuite.py
parent5e2103cf37181067cbdff1a16647edddf60441f0 (diff)
Don't write out 'option env' symbols to C header
Oversight. SYMBOL_AUTO (env_var) being set indirectly clears SYMBOL_WRITE (_write_to_conf) in sym_calc_value(). The .config case was already fine due to an explicit env_var check. Even non-visible env. symbols ended up in the header, due to 'option env' internally adding a default. Disallow user values altogether on 'option env' symbols, even if specified manually. This matches the C implementation. Add a warning too.
Diffstat (limited to 'testsuite.py')
-rw-r--r--testsuite.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/testsuite.py b/testsuite.py
index e7168a6..932ee6a 100644
--- a/testsuite.py
+++ b/testsuite.py
@@ -1233,6 +1233,24 @@ g
format(s.name))
+ print("Testing 'option env' semantics")
+
+ os.environ["ENV_VAR"] = "ENV_VAR value"
+
+ # References undefined env. var. and tries to assign 'option env' variable,
+ # so disable warnings
+ c = Kconfig("Kconfiglib/tests/Kmisc", warn=False)
+
+ # Verify that 'option env' symbols can't be assigned user values, and that
+ # 'option env' is treated like a default
+ assign_and_verify_user_value("FROM_ENV", "foo", None, False)
+ assign_and_verify_user_value("FROM_ENV_MISSING", "foo", None, False)
+ verify_value("FROM_ENV", "ENV_VAR value")
+ verify_value("FROM_ENV_MISSING", "missing")
+
+ verify_value("FROM_ENV_WEIRD", "weird")
+
+
print("Testing defined vs undefined symbols")
for name in "A", "B", "C", "D", "BOOL", "TRISTATE", "STRING", "INT", "HEX":