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