summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2021-03-16 08:58:04 +0100
committerXavier Claessens <xclaesse@gmail.com>2021-03-16 09:35:48 -0400
commit5cd7f5f8c5e374348e55b791caf01604c238f3e5 (patch)
treef2bbfd87618da572271ab2bf782665e2b86bb639
parent32e49b5ff20bf2868330aa6985a65b3e9323ebd5 (diff)
downloadmeson-5cd7f5f8c5e374348e55b791caf01604c238f3e5.tar.gz
msetup: do not print bogus "Option ... is:" messages
get_non_matching_default_options is checking a string from project_default_options against a validated value from coredata.options. Passing the string to validate_value ensures that the comparison is sound; otherwise, "false" might be compared against False and a bogus difference is printed.
-rw-r--r--mesonbuild/interpreter.py7
-rwxr-xr-xrun_unittests.py3
2 files changed, 8 insertions, 2 deletions
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 3e39720ef..d554cce4d 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -2447,7 +2447,12 @@ class Interpreter(InterpreterBase):
def get_non_matching_default_options(self) -> T.Iterator[T.Tuple[str, str, coredata.UserOption]]:
for def_opt_name, def_opt_value in self.project_default_options.items():
cur_opt_value = self.coredata.options.get(def_opt_name)
- if cur_opt_value is not None and def_opt_value != cur_opt_value.value:
+ try:
+ if cur_opt_value is not None and cur_opt_value.validate_value(def_opt_value) != cur_opt_value.value:
+ yield (str(def_opt_name), def_opt_value, cur_opt_value)
+ except mesonlib.MesonException:
+ # Since the default value does not validate, it cannot be in use
+ # Report the user-specified value as non-matching
yield (str(def_opt_name), def_opt_value, cur_opt_value)
def build_func_dict(self):
diff --git a/run_unittests.py b/run_unittests.py
index dd59ceb00..72b497a66 100755
--- a/run_unittests.py
+++ b/run_unittests.py
@@ -4002,7 +4002,8 @@ class AllPlatformTests(BasePlatformTests):
# Verify default values when passing no args that affect the
# configuration, and as a bonus, test that --profile-self works.
- self.init(testdir, extra_args=['--profile-self', '--fatal-meson-warnings'])
+ out = self.init(testdir, extra_args=['--profile-self', '--fatal-meson-warnings'])
+ self.assertNotIn('[default: true]', out)
obj = mesonbuild.coredata.load(self.builddir)
self.assertEqual(obj.options[OptionKey('default_library')].value, 'static')
self.assertEqual(obj.options[OptionKey('warning_level')].value, '1')