1dd78d7c7SJonas Devlieghereimport lldb 2dd78d7c7SJonas Devliegherefrom lldbsuite.test.decorators import * 3dd78d7c7SJonas Devliegherefrom lldbsuite.test.lldbtest import * 4dd78d7c7SJonas Devliegherefrom lldbsuite.test import lldbutil 5dd78d7c7SJonas Devliegherefrom lldbsuite.test.lldbpexpect import PExpectTest 6dd78d7c7SJonas Devlieghere 7dd78d7c7SJonas Devlieghere 8dd78d7c7SJonas Devlieghereclass EditlineCompletionsTest(PExpectTest): 9dd78d7c7SJonas Devlieghere @skipIfAsan 10dd78d7c7SJonas Devlieghere @skipIfEditlineSupportMissing 11dd78d7c7SJonas Devlieghere def test_completion_truncated(self): 12dd78d7c7SJonas Devlieghere """Test that the completion is correctly truncated.""" 13dd78d7c7SJonas Devlieghere self.launch(dimensions=(10, 20)) 14dd78d7c7SJonas Devlieghere self.child.send("_regexp-\t") 15dd78d7c7SJonas Devlieghere self.child.expect(" _regexp-a...") 16dd78d7c7SJonas Devlieghere self.child.expect(" _regexp-b...") 17dd78d7c7SJonas Devlieghere 18dd78d7c7SJonas Devlieghere @skipIfAsan 19dd78d7c7SJonas Devlieghere @skipIfEditlineSupportMissing 20dd78d7c7SJonas Devlieghere def test_description_truncated(self): 21dd78d7c7SJonas Devlieghere """Test that the description is correctly truncated.""" 22dd78d7c7SJonas Devlieghere self.launch(dimensions=(10, 70)) 23dd78d7c7SJonas Devlieghere self.child.send("_regexp-\t") 24dd78d7c7SJonas Devlieghere self.child.expect( 25dd78d7c7SJonas Devlieghere " _regexp-attach -- Attach to process by ID or name." 26dd78d7c7SJonas Devlieghere ) 27dd78d7c7SJonas Devlieghere self.child.expect( 28dd78d7c7SJonas Devlieghere " _regexp-break -- Set a breakpoint using one of several..." 29dd78d7c7SJonas Devlieghere ) 30dd78d7c7SJonas Devlieghere 31dd78d7c7SJonas Devlieghere @skipIfAsan 32dd78d7c7SJonas Devlieghere @skipIfEditlineSupportMissing 33dd78d7c7SJonas Devlieghere def test_separator_omitted(self): 34dd78d7c7SJonas Devlieghere """Test that the separated is correctly omitted.""" 35dd78d7c7SJonas Devlieghere self.launch(dimensions=(10, 32)) 36dd78d7c7SJonas Devlieghere self.child.send("_regexp-\t") 37dd78d7c7SJonas Devlieghere self.child.expect(" _regexp-attach \r\n") 38dd78d7c7SJonas Devlieghere self.child.expect(" _regexp-break \r\n") 39dd78d7c7SJonas Devlieghere 40dd78d7c7SJonas Devlieghere @skipIfAsan 41dd78d7c7SJonas Devlieghere @skipIfEditlineSupportMissing 42dd78d7c7SJonas Devlieghere def test_separator(self): 43dd78d7c7SJonas Devlieghere """Test that the separated is correctly printed.""" 44dd78d7c7SJonas Devlieghere self.launch(dimensions=(10, 33)) 45dd78d7c7SJonas Devlieghere self.child.send("_regexp-\t") 46dd78d7c7SJonas Devlieghere self.child.expect(" _regexp-attach -- A...") 47dd78d7c7SJonas Devlieghere self.child.expect(" _regexp-break -- S...") 48dd78d7c7SJonas Devlieghere 49dd78d7c7SJonas Devlieghere @skipIfAsan 50dd78d7c7SJonas Devlieghere @skipIfEditlineSupportMissing 51dd78d7c7SJonas Devlieghere def test_multiline_description(self): 52dd78d7c7SJonas Devlieghere """Test that multi-line descriptions are correctly padded and truncated.""" 53dd78d7c7SJonas Devlieghere self.launch(dimensions=(10, 72)) 54dd78d7c7SJonas Devlieghere self.child.send("k\t") 55dd78d7c7SJonas Devlieghere self.child.expect( 56dd78d7c7SJonas Devlieghere " kdp-remote -- Connect to a process via remote KDP server." 57dd78d7c7SJonas Devlieghere ) 58dd78d7c7SJonas Devlieghere self.child.expect( 59dd78d7c7SJonas Devlieghere " If no UDP port is specified, port 41139 is assu..." 60dd78d7c7SJonas Devlieghere ) 61dd78d7c7SJonas Devlieghere self.child.expect( 62dd78d7c7SJonas Devlieghere " kdp-remote is an abbreviation for 'process conn..." 63dd78d7c7SJonas Devlieghere ) 64dd78d7c7SJonas Devlieghere self.child.expect(" kill -- Terminate the current target process.") 65*3dfc1d9bSJonas Devlieghere 66*3dfc1d9bSJonas Devlieghere @skipIfAsan 67*3dfc1d9bSJonas Devlieghere @skipIfEditlineSupportMissing 68*3dfc1d9bSJonas Devlieghere def test_completion_pagination(self): 69*3dfc1d9bSJonas Devlieghere """Test that we use the terminal height for pagination.""" 70*3dfc1d9bSJonas Devlieghere self.launch(dimensions=(10, 30)) 71*3dfc1d9bSJonas Devlieghere self.child.send("_regexp-\t") 72*3dfc1d9bSJonas Devlieghere self.child.expect("Available completions:") 73*3dfc1d9bSJonas Devlieghere self.child.expect(" _regexp-attach") 74*3dfc1d9bSJonas Devlieghere self.child.expect(" _regexp-break") 75*3dfc1d9bSJonas Devlieghere self.child.expect(" _regexp-bt") 76*3dfc1d9bSJonas Devlieghere self.child.expect(" _regexp-display") 77*3dfc1d9bSJonas Devlieghere self.child.expect(" _regexp-down") 78*3dfc1d9bSJonas Devlieghere self.child.expect(" _regexp-env") 79*3dfc1d9bSJonas Devlieghere self.child.expect(" _regexp-jump") 80*3dfc1d9bSJonas Devlieghere self.child.expect("More") 81*3dfc1d9bSJonas Devlieghere 82*3dfc1d9bSJonas Devlieghere @skipIfAsan 83*3dfc1d9bSJonas Devlieghere @skipIfEditlineSupportMissing 84*3dfc1d9bSJonas Devlieghere def test_completion_multiline_pagination(self): 85*3dfc1d9bSJonas Devlieghere """Test that we use the terminal height for pagination and account for multi-line descriptions.""" 86*3dfc1d9bSJonas Devlieghere self.launch(dimensions=(6, 72)) 87*3dfc1d9bSJonas Devlieghere self.child.send("k\t") 88*3dfc1d9bSJonas Devlieghere self.child.expect("Available completions:") 89*3dfc1d9bSJonas Devlieghere self.child.expect( 90*3dfc1d9bSJonas Devlieghere " kdp-remote -- Connect to a process via remote KDP server." 91*3dfc1d9bSJonas Devlieghere ) 92*3dfc1d9bSJonas Devlieghere self.child.expect( 93*3dfc1d9bSJonas Devlieghere " If no UDP port is specified, port 41139 is assu..." 94*3dfc1d9bSJonas Devlieghere ) 95*3dfc1d9bSJonas Devlieghere self.child.expect( 96*3dfc1d9bSJonas Devlieghere " kdp-remote is an abbreviation for 'process conn..." 97*3dfc1d9bSJonas Devlieghere ) 98*3dfc1d9bSJonas Devlieghere self.child.expect("More") 99