xref: /llvm-project/lldb/test/API/tools/lldb-dap/commands/TestDAP_commands.py (revision 11a4d43f4a8ed02694de4d39b5591ff2b1c31803)
1aa207674SWalter Erquinigoimport os
2aa207674SWalter Erquinigo
3aa207674SWalter Erquinigoimport dap_server
4aa207674SWalter Erquinigoimport lldbdap_testcase
5aa207674SWalter Erquinigofrom lldbsuite.test import lldbtest, lldbutil
6aa207674SWalter Erquinigofrom lldbsuite.test.decorators import *
7aa207674SWalter Erquinigo
8aa207674SWalter Erquinigo
9aa207674SWalter Erquinigoclass TestDAP_commands(lldbdap_testcase.DAPTestCaseBase):
10aa207674SWalter Erquinigo    def test_command_directive_quiet_on_success(self):
11aa207674SWalter Erquinigo        program = self.getBuildArtifact("a.out")
12aa207674SWalter Erquinigo        command_quiet = (
13aa207674SWalter Erquinigo            "settings set target.show-hex-variable-values-with-leading-zeroes false"
14aa207674SWalter Erquinigo        )
15aa207674SWalter Erquinigo        command_not_quiet = (
16aa207674SWalter Erquinigo            "settings set target.show-hex-variable-values-with-leading-zeroes true"
17aa207674SWalter Erquinigo        )
18aa207674SWalter Erquinigo        self.build_and_launch(
19aa207674SWalter Erquinigo            program,
20aa207674SWalter Erquinigo            initCommands=["?" + command_quiet, command_not_quiet],
21aa207674SWalter Erquinigo            terminateCommands=["?" + command_quiet, command_not_quiet],
22aa207674SWalter Erquinigo            stopCommands=["?" + command_quiet, command_not_quiet],
23aa207674SWalter Erquinigo            exitCommands=["?" + command_quiet, command_not_quiet],
24aa207674SWalter Erquinigo        )
25*11a4d43fSMiro Bucko        full_output = self.collect_console(
26*11a4d43fSMiro Bucko            timeout_secs=1.0,
27*11a4d43fSMiro Bucko            pattern=command_not_quiet,
28*11a4d43fSMiro Bucko        )
29aa207674SWalter Erquinigo        self.assertNotIn(command_quiet, full_output)
30aa207674SWalter Erquinigo        self.assertIn(command_not_quiet, full_output)
31aa207674SWalter Erquinigo
32aa207674SWalter Erquinigo    def do_test_abort_on_error(
33aa207674SWalter Erquinigo        self,
34aa207674SWalter Erquinigo        use_init_commands=False,
35aa207674SWalter Erquinigo        use_launch_commands=False,
36aa207674SWalter Erquinigo        use_pre_run_commands=False,
37aa207674SWalter Erquinigo        use_post_run_commands=False,
38aa207674SWalter Erquinigo    ):
39aa207674SWalter Erquinigo        program = self.getBuildArtifact("a.out")
40aa207674SWalter Erquinigo        command_quiet = (
41aa207674SWalter Erquinigo            "settings set target.show-hex-variable-values-with-leading-zeroes false"
42aa207674SWalter Erquinigo        )
43aa207674SWalter Erquinigo        command_abort_on_error = "settings set foo bar"
44aa207674SWalter Erquinigo        commands = ["?!" + command_quiet, "!" + command_abort_on_error]
45aa207674SWalter Erquinigo        self.build_and_launch(
46aa207674SWalter Erquinigo            program,
47aa207674SWalter Erquinigo            initCommands=commands if use_init_commands else None,
48aa207674SWalter Erquinigo            launchCommands=commands if use_launch_commands else None,
49aa207674SWalter Erquinigo            preRunCommands=commands if use_pre_run_commands else None,
50aa207674SWalter Erquinigo            postRunCommands=commands if use_post_run_commands else None,
51aa207674SWalter Erquinigo            expectFailure=True,
52aa207674SWalter Erquinigo        )
53*11a4d43fSMiro Bucko        full_output = self.collect_console(
54*11a4d43fSMiro Bucko            timeout_secs=1.0,
55*11a4d43fSMiro Bucko            pattern=command_abort_on_error,
56*11a4d43fSMiro Bucko        )
57aa207674SWalter Erquinigo        self.assertNotIn(command_quiet, full_output)
58aa207674SWalter Erquinigo        self.assertIn(command_abort_on_error, full_output)
59aa207674SWalter Erquinigo
60aa207674SWalter Erquinigo    def test_command_directive_abort_on_error_init_commands(self):
61aa207674SWalter Erquinigo        self.do_test_abort_on_error(use_init_commands=True)
62aa207674SWalter Erquinigo
63aa207674SWalter Erquinigo    def test_command_directive_abort_on_error_launch_commands(self):
64aa207674SWalter Erquinigo        self.do_test_abort_on_error(use_launch_commands=True)
65aa207674SWalter Erquinigo
66aa207674SWalter Erquinigo    def test_command_directive_abort_on_error_pre_run_commands(self):
67aa207674SWalter Erquinigo        self.do_test_abort_on_error(use_pre_run_commands=True)
68aa207674SWalter Erquinigo
69aa207674SWalter Erquinigo    def test_command_directive_abort_on_error_post_run_commands(self):
70aa207674SWalter Erquinigo        self.do_test_abort_on_error(use_post_run_commands=True)
71aa207674SWalter Erquinigo
72aa207674SWalter Erquinigo    def test_command_directive_abort_on_error_attach_commands(self):
73aa207674SWalter Erquinigo        program = self.getBuildArtifact("a.out")
74aa207674SWalter Erquinigo        command_quiet = (
75aa207674SWalter Erquinigo            "settings set target.show-hex-variable-values-with-leading-zeroes false"
76aa207674SWalter Erquinigo        )
77aa207674SWalter Erquinigo        command_abort_on_error = "settings set foo bar"
78aa207674SWalter Erquinigo        self.build_and_create_debug_adaptor()
79aa207674SWalter Erquinigo        self.attach(
80aa207674SWalter Erquinigo            program,
81aa207674SWalter Erquinigo            attachCommands=["?!" + command_quiet, "!" + command_abort_on_error],
82aa207674SWalter Erquinigo            expectFailure=True,
83aa207674SWalter Erquinigo        )
84*11a4d43fSMiro Bucko        full_output = self.collect_console(
85*11a4d43fSMiro Bucko            timeout_secs=1.0,
86*11a4d43fSMiro Bucko            pattern=command_abort_on_error,
87*11a4d43fSMiro Bucko        )
88aa207674SWalter Erquinigo        self.assertNotIn(command_quiet, full_output)
89aa207674SWalter Erquinigo        self.assertIn(command_abort_on_error, full_output)
90