diff --git a/mesonbuild/mesonmain.py b/mesonbuild/mesonmain.py index dd265c41b74c..ca7a18414ebc 100644 --- a/mesonbuild/mesonmain.py +++ b/mesonbuild/mesonmain.py @@ -240,14 +240,14 @@ def validate_original_args(args): def has_startswith(coll, target): for entry in coll: - if entry.startswith(target): + if entry.startswith(target + '=') or entry == target: return True return False #ds = [x for x in args if x.startswith('-D')] #longs = [x for x in args if x.startswith('--')] for optionkey in itertools.chain(mesonbuild.options.BUILTIN_DIR_OPTIONS, mesonbuild.options.BUILTIN_CORE_OPTIONS): longarg = mesonbuild.options.argparse_name_to_arg(optionkey.name) - shortarg = f'-D{optionkey.name}=' + shortarg = f'-D{optionkey.name}' if has_startswith(args, longarg) and has_startswith(args, shortarg): sys.exit( f'Got argument {optionkey.name} as both {shortarg} and {longarg}. Pick one.') diff --git a/unittests/platformagnostictests.py b/unittests/platformagnostictests.py index ebd5317a464c..ff2171de6a6b 100644 --- a/unittests/platformagnostictests.py +++ b/unittests/platformagnostictests.py @@ -560,3 +560,8 @@ def test_mtest_rebuild_deps(self): self.clean() self._run(self.mtest_command + ['runner-with-exedep']) + + def test_setup_mixed_long_short_options(self) -> None: + """Mixing unity and unity_size as long and short options should work.""" + testdir = self.copy_srcdir(os.path.join(self.common_test_dir, '1 trivial')) + self.init(testdir, extra_args=['-Dunity=on', '--unity-size=123'])