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.
0.57
Paolo Bonzini 4 years ago committed by Nirbheek Chauhan
parent 9d1dfd548f
commit 3cf4f657e2
  1. 7
      mesonbuild/interpreter.py
  2. 3
      run_unittests.py

@ -2478,7 +2478,12 @@ class Interpreter(InterpreterBase):
def get_non_matching_default_options(self) -> T.Iterator[T.Tuple[str, str, coredata.UserOption]]: 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(): for def_opt_name, def_opt_value in self.project_default_options.items():
cur_opt_value = self.coredata.options.get(def_opt_name) 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) yield (str(def_opt_name), def_opt_value, cur_opt_value)
def build_func_dict(self): def build_func_dict(self):

@ -4001,7 +4001,8 @@ class AllPlatformTests(BasePlatformTests):
# Verify default values when passing no args that affect the # Verify default values when passing no args that affect the
# configuration, and as a bonus, test that --profile-self works. # 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) obj = mesonbuild.coredata.load(self.builddir)
self.assertEqual(obj.options[OptionKey('default_library')].value, 'static') self.assertEqual(obj.options[OptionKey('default_library')].value, 'static')
self.assertEqual(obj.options[OptionKey('warning_level')].value, '1') self.assertEqual(obj.options[OptionKey('warning_level')].value, '1')

Loading…
Cancel
Save