Mercurial > hg > CbC > CbC_llvm
view lldb/test/API/commands/gui/viewlarge/TestGuiViewLarge.py @ 252:1f2b6ac9f198 llvm-original
LLVM16-1
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Fri, 18 Aug 2023 09:04:13 +0900 |
parents | c4bab56944e8 |
children |
line wrap: on
line source
""" Test that the 'gui' displays long lines/names correctly without overruns. """ import lldb from lldbsuite.test.decorators import * from lldbsuite.test.lldbtest import * from lldbsuite.test.lldbpexpect import PExpectTest class GuiViewLargeCommandTest(PExpectTest): # PExpect uses many timeouts internally and doesn't play well # under ASAN on a loaded machine.. @skipIfAsan @skipIfCursesSupportMissing @skipIfRemote # "run" command will not work correctly for remote debug @expectedFailureNetBSD @skipIf(oslist=["linux"], archs=["arm", "aarch64"]) def test_gui(self): self.build() # Limit columns to 80, so that long lines will not be displayed completely. self.launch(executable=self.getBuildArtifact("a.out"), dimensions=(100, 80)) self.expect( 'br set -f main.c -p "// Break here"', substrs=["Breakpoint 1", "address ="] ) self.expect("run", substrs=["stop reason ="]) escape_key = chr(27).encode() left_key = chr(27) + "OD" # for vt100 terminal (lldbexpect sets TERM=vt100) right_key = chr(27) + "OC" ctrl_l = chr(12) # Start the GUI. self.child.sendline("gui") # Check the sources window. self.child.expect_exact("Sources") # The string is copy&pasted from a 80-columns terminal. It will be followed by some # kind of an escape sequence (color, frame, etc.). self.child.expect_exact( "int a_variable_with_a_very_looooooooooooooooooooooooooo" + chr(27) ) # The escape here checks that there's no content drawn by the previous line. self.child.expect_exact("int shortvar = 1;" + chr(27)) # Check the triggered breakpoint marker on a long line. self.child.expect_exact("<<< Thread 1: breakpoint 1.1" + chr(27)) # Check the variable window. self.child.expect_exact("Variables") self.child.expect_exact( "(int) a_variable_with_a_very_looooooooooooooooooooooooooooooo" + chr(27) ) self.child.expect_exact("(int) shortvar = 1" + chr(27)) # Scroll the sources view twice to the right. self.child.send(right_key) self.child.send(right_key) # Force a redraw, otherwise curses will optimize the drawing to not draw all 'o'. self.child.send(ctrl_l) # The source code is indented by two spaces, so there'll be just two extra 'o' on the right. self.child.expect_exact( "int a_variable_with_a_very_looooooooooooooooooooooooooooo" + chr(27) ) # And scroll back to the left. self.child.send(left_key) self.child.send(left_key) self.child.send(ctrl_l) self.child.expect_exact( "int a_variable_with_a_very_looooooooooooooooooooooooooo" + chr(27) ) # Press escape to quit the gui self.child.send(escape_key) self.expect_prompt() self.quit()