aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesonbuild/coredata.py7
-rwxr-xr-xrun_unittests.py8
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')