This revision was automatically updated to reflect the committed changes.
Closed by commit rGcc0fc3585405: [LLDB] Fix the use of "platform process 
launch" with no extra arguments (authored by DavidSpickett).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D153636/new/

https://reviews.llvm.org/D153636

Files:
  lldb/source/Commands/CommandObjectPlatform.cpp
  lldb/test/API/commands/platform/process/launch/Makefile
  lldb/test/API/commands/platform/process/launch/TestPlatformProcessLaunch.py
  lldb/test/API/commands/platform/process/launch/main.c

Index: lldb/test/API/commands/platform/process/launch/main.c
===================================================================
--- /dev/null
+++ lldb/test/API/commands/platform/process/launch/main.c
@@ -0,0 +1,8 @@
+#include <stdio.h>
+
+int main(int argc, char const *argv[]) {
+  printf("Got %d argument(s).\n", argc);
+  for (int i = 0; i < argc; ++i)
+    printf("[%d]: %s\n", i, argv[i]);
+  return 0;
+}
Index: lldb/test/API/commands/platform/process/launch/TestPlatformProcessLaunch.py
===================================================================
--- /dev/null
+++ lldb/test/API/commands/platform/process/launch/TestPlatformProcessLaunch.py
@@ -0,0 +1,59 @@
+"""
+Test platform process launch.
+"""
+
+from textwrap import dedent
+from lldbsuite.test.lldbtest import TestBase
+
+
+class ProcessLaunchTestCase(TestBase):
+    NO_DEBUG_INFO_TESTCASE = True
+
+    def setup(self):
+        self.build()
+        exe = self.getBuildArtifact("a.out")
+        self.runCmd("file " + exe)
+        return (exe, self.getBuildArtifact("stdio.log"))
+
+    def test_process_launch_no_args(self):
+        # When there are no extra arguments we just have 0, the program name.
+        exe, outfile = self.setup()
+        self.runCmd("platform process launch --stdout {} -s".format(outfile))
+        self.runCmd("continue")
+
+        with open(outfile) as f:
+           self.assertEqual(dedent("""\
+                Got 1 argument(s).
+                [0]: {}
+                """.format(exe)), f.read())
+
+    def test_process_launch_command_args(self):
+        exe, outfile = self.setup()
+        # Arguments given via the command override those in the settings.
+        self.runCmd("settings set target.run-args D E")
+        self.runCmd("platform process launch --stdout {} -s -- A B C".format(outfile))
+        self.runCmd("continue")
+
+        with open(outfile) as f:
+           self.assertEqual(dedent("""\
+                Got 4 argument(s).
+                [0]: {}
+                [1]: A
+                [2]: B
+                [3]: C
+                """.format(exe)), f.read())
+
+    def test_process_launch_target_args(self):
+        exe, outfile = self.setup()
+        # When no arguments are passed via the command, use the setting.
+        self.runCmd("settings set target.run-args D E")
+        self.runCmd("platform process launch --stdout {}".format(outfile))
+        self.runCmd("continue")
+
+        with open(outfile) as f:
+           self.assertEqual(dedent("""\
+                Got 3 argument(s).
+                [0]: {}
+                [1]: D
+                [2]: E
+                """.format(exe)), f.read())
\ No newline at end of file
Index: lldb/test/API/commands/platform/process/launch/Makefile
===================================================================
--- /dev/null
+++ lldb/test/API/commands/platform/process/launch/Makefile
@@ -0,0 +1,3 @@
+C_SOURCES := main.c
+
+include Makefile.rules
Index: lldb/source/Commands/CommandObjectPlatform.cpp
===================================================================
--- lldb/source/Commands/CommandObjectPlatform.cpp
+++ lldb/source/Commands/CommandObjectPlatform.cpp
@@ -1207,8 +1207,12 @@
       if (m_options.launch_info.GetExecutableFile()) {
         Debugger &debugger = GetDebugger();
 
-        if (argc == 0)
-          target->GetRunArguments(m_options.launch_info.GetArguments());
+        if (argc == 0) {
+          // If no arguments were given to the command, use target.run-args.
+          Args target_run_args;
+          target->GetRunArguments(target_run_args);
+          m_options.launch_info.GetArguments().AppendArguments(target_run_args);
+        }
 
         ProcessSP process_sp(platform_sp->DebugProcess(
             m_options.launch_info, debugger, *target, error));
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
  • [Lldb-commits]... David Spickett via Phabricator via lldb-commits
    • [Lldb-com... David Spickett via Phabricator via lldb-commits
    • [Lldb-com... Pavel Labath via Phabricator via lldb-commits
    • [Lldb-com... David Spickett via Phabricator via lldb-commits
    • [Lldb-com... Felipe de Azevedo Piovezan via Phabricator via lldb-commits
    • [Lldb-com... David Spickett via Phabricator via lldb-commits
    • [Lldb-com... Dave Lee via Phabricator via lldb-commits
    • [Lldb-com... Dave Lee via Phabricator via lldb-commits
    • [Lldb-com... Dave Lee via Phabricator via lldb-commits
    • [Lldb-com... Dave Lee via Phabricator via lldb-commits
    • [Lldb-com... David Spickett via Phabricator via lldb-commits
    • [Lldb-com... David Spickett via Phabricator via lldb-commits

Reply via email to