summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRalf Habacker <ralf.habacker@freenet.de>2023-12-11 22:30:03 (GMT)
committerBrad King <brad.king@kitware.com>2023-12-13 15:20:41 (GMT)
commit478a5f4e044d253971e71a41ad6fc6b8aa4e1c07 (patch)
treea20da67142a7a14076f8aeed145c780963650450
parentb44e38a39736318aaf21a6865fdbee28a0e26700 (diff)
downloadCMake-478a5f4e044d253971e71a41ad6fc6b8aa4e1c07.zip
CMake-478a5f4e044d253971e71a41ad6fc6b8aa4e1c07.tar.gz
CMake-478a5f4e044d253971e71a41ad6fc6b8aa4e1c07.tar.bz2
fileapi: Make launcher attribute 'arguments' optional
This was missed in commit 80a64c9ce5 (fileapi: Add cross-compiling emulator to codemodel-v2, 2023-11-11).
-rw-r--r--Source/cmFileAPICodemodel.cxx4
-rw-r--r--Tests/RunCMake/FileAPI/codemodel-v2-check.py15
-rw-r--r--Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator.json1
3 files changed, 12 insertions, 8 deletions
diff --git a/Source/cmFileAPICodemodel.cxx b/Source/cmFileAPICodemodel.cxx
index c0c9b75..e67d91f 100644
--- a/Source/cmFileAPICodemodel.cxx
+++ b/Source/cmFileAPICodemodel.cxx
@@ -2102,7 +2102,9 @@ Json::Value Target::DumpLauncher(const char* name, const char* type)
for (std::string const& arg : cmMakeRange(commandWithArgs).advance(1)) {
args.append(arg);
}
- launcher["arguments"] = std::move(args);
+ if (!args.empty()) {
+ launcher["arguments"] = std::move(args);
+ }
}
return launcher;
}
diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-check.py b/Tests/RunCMake/FileAPI/codemodel-v2-check.py
index cb90eba..f46448b 100644
--- a/Tests/RunCMake/FileAPI/codemodel-v2-check.py
+++ b/Tests/RunCMake/FileAPI/codemodel-v2-check.py
@@ -410,15 +410,18 @@ def check_target(c):
expected_keys.append("launchers")
def check_launcher(actual, expected):
assert is_dict(actual)
- launcher_keys = ["arguments", "command", "type"]
+ launcher_keys = ["command", "type"]
+ if "arguments" in expected:
+ launcher_keys.append("arguments")
assert sorted(actual.keys()) == sorted(launcher_keys)
assert matches(actual["command"], expected["command"])
assert matches(actual["type"], expected["type"])
- if expected["arguments"] is not None:
- check_list_match(lambda a, e: matches(a, e),
- actual["arguments"], expected["arguments"],
- missing_exception=lambda e: "argument: %s" % e,
- extra_exception=lambda a: "argument: %s" % actual["arguments"])
+ if "arguments" in expected:
+ if expected["arguments"] is not None:
+ check_list_match(lambda a, e: matches(a, e),
+ actual["arguments"], expected["arguments"],
+ missing_exception=lambda e: "argument: %s" % e,
+ extra_exception=lambda a: "argument: %s" % actual["arguments"])
check_list_match(lambda a, e: matches(a["type"], e["type"]),
obj["launchers"], expected["launchers"],
check=check_launcher,
diff --git a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator.json b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator.json
index 9bd2d5d..bbd973b 100644
--- a/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator.json
+++ b/Tests/RunCMake/FileAPI/codemodel-v2-data/targets/cxx_exe_cross_emulator.json
@@ -80,7 +80,6 @@
"install": null,
"launchers" : [
{
- "arguments" : null,
"command": "^no-such-emulator(\\.exe)?$",
"type" : "emulator"
}