diff options
-rw-r--r-- | mesonbuild/coredata.py | 7 | ||||
-rwxr-xr-x | run_unittests.py | 8 |
2 files changed, 12 insertions, 3 deletions
diff --git a/mesonbuild/coredata.py b/mesonbuild/coredata.py index a0df24d..344da4c 100644 --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -1001,9 +1001,10 @@ class BuiltinOption(T.Generic[_T, _U]): return self.opt_type(self.description, **keywords) def _argparse_action(self) -> T.Optional[str]: - if self.default is True: - return 'store_false' - elif self.default is False: + # If the type is a boolean, the presence of the argument in --foo form + # is to enable it. Disabling happens by using -Dfoo=false, which is + # parsed under `args.projectoptions` and does not hit this codepath. + if isinstance(self.default, bool): return 'store_true' return None diff --git a/run_unittests.py b/run_unittests.py index 5b25b6c..41e8ad4 100755 --- a/run_unittests.py +++ b/run_unittests.py @@ -3842,6 +3842,14 @@ recommended as it is not supported on some platforms''') self.assertEqual(opts['debug'], True) self.assertEqual(opts['optimization'], '2') self.assertEqual(opts['buildtype'], 'debugoptimized') + # Setting both buildtype and debug on the command-line should work + # Also test that --debug is parsed as -Ddebug=true + self.new_builddir() + self.init(testdir, extra_args=['-Dbuildtype=debugoptimized', '--debug']) + opts = self.get_opts_as_dict() + self.assertEqual(opts['debug'], True) + self.assertEqual(opts['optimization'], '2') + self.assertEqual(opts['buildtype'], 'debugoptimized') @skipIfNoPkgconfig @unittest.skipIf(is_windows(), 'Help needed with fixing this test on windows') |