import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test import lldbutil from lldbsuite.test.lldbpexpect import PExpectTest class EditlineCompletionsTest(PExpectTest): @skipIfAsan @skipIfEditlineSupportMissing def test_completion_truncated(self): """Test that the completion is correctly truncated.""" self.launch(dimensions=(10, 20)) self.child.send("_regexp-\t") self.child.expect(" _regexp-a...") self.child.expect(" _regexp-b...") @skipIfAsan @skipIfEditlineSupportMissing def test_description_truncated(self): """Test that the description is correctly truncated.""" self.launch(dimensions=(10, 70)) self.child.send("_regexp-\t") self.child.expect( " _regexp-attach -- Attach to process by ID or name." ) self.child.expect( " _regexp-break -- Set a breakpoint using one of several..." ) @skipIfAsan @skipIfEditlineSupportMissing def test_separator_omitted(self): """Test that the separated is correctly omitted.""" self.launch(dimensions=(10, 32)) self.child.send("_regexp-\t") self.child.expect(" _regexp-attach \r\n") self.child.expect(" _regexp-break \r\n") @skipIfAsan @skipIfEditlineSupportMissing def test_separator(self): """Test that the separated is correctly printed.""" self.launch(dimensions=(10, 33)) self.child.send("_regexp-\t") self.child.expect(" _regexp-attach -- A...") self.child.expect(" _regexp-break -- S...") @skipIfAsan @skipIfEditlineSupportMissing def test_multiline_description(self): """Test that multi-line descriptions are correctly padded and truncated.""" self.launch(dimensions=(10, 72)) self.child.send("k\t") self.child.expect( " kdp-remote -- Connect to a process via remote KDP server." ) self.child.expect( " If no UDP port is specified, port 41139 is assu..." ) self.child.expect( " kdp-remote is an abbreviation for 'process conn..." ) self.child.expect(" kill -- Terminate the current target process.") @skipIfAsan @skipIfEditlineSupportMissing def test_completion_pagination(self): """Test that we use the terminal height for pagination.""" self.launch(dimensions=(10, 30)) self.child.send("_regexp-\t") self.child.expect("Available completions:") self.child.expect(" _regexp-attach") self.child.expect(" _regexp-break") self.child.expect(" _regexp-bt") self.child.expect(" _regexp-display") self.child.expect(" _regexp-down") self.child.expect(" _regexp-env") self.child.expect(" _regexp-jump") self.child.expect("More") @skipIfAsan @skipIfEditlineSupportMissing def test_completion_multiline_pagination(self): """Test that we use the terminal height for pagination and account for multi-line descriptions.""" self.launch(dimensions=(6, 72)) self.child.send("k\t") self.child.expect("Available completions:") self.child.expect( " kdp-remote -- Connect to a process via remote KDP server." ) self.child.expect( " If no UDP port is specified, port 41139 is assu..." ) self.child.expect( " kdp-remote is an abbreviation for 'process conn..." ) self.child.expect("More")