""" Test platform process launch. """ from textwrap import dedent from lldbsuite.test import lldbutil from lldbsuite.test.lldbtest import TestBase class ProcessLaunchTestCase(TestBase): NO_DEBUG_INFO_TESTCASE = True def setup(self): self.build() self.runCmd("file " + self.getBuildArtifact("a.out")) exe = lldbutil.append_to_process_working_directory(self, "a.out") outfile = lldbutil.append_to_process_working_directory(self, "stdio.log") return (exe, outfile) 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") stdio_log = lldbutil.read_file_on_target(self, outfile) self.assertEqual( dedent( """\ Got 1 argument(s). [0]: {} """.format( exe ) ), stdio_log, ) 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") stdio_log = lldbutil.read_file_on_target(self, outfile) self.assertEqual( dedent( """\ Got 4 argument(s). [0]: {} [1]: A [2]: B [3]: C """.format( exe ) ), stdio_log, ) 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 {} -s".format(outfile)) self.runCmd("continue") stdio_log = lldbutil.read_file_on_target(self, outfile) self.assertEqual( dedent( """\ Got 3 argument(s). [0]: {} [1]: D [2]: E """.format( exe ) ), stdio_log, )