| """ | |
| 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, | |
| ) |