瀏覽代碼

fileapi: Make launcher attribute 'arguments' optional

This was missed in commit 80a64c9ce5 (fileapi: Add cross-compiling
emulator to codemodel-v2, 2023-11-11).
Ralf Habacker 1 年之前
父節點
當前提交
478a5f4e04

+ 3 - 1
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;
 }

+ 9 - 6
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,

+ 0 - 1
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"
         }