75 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
| """
 | |
| Test the 'gui' shortcut 'b' (toggle breakpoint).
 | |
| """
 | |
| 
 | |
| import lldb
 | |
| from lldbsuite.test.decorators import *
 | |
| from lldbsuite.test.lldbtest import *
 | |
| from lldbsuite.test.lldbpexpect import PExpectTest
 | |
| 
 | |
| class TestGuiBasicDebugCommandTest(PExpectTest):
 | |
| 
 | |
|     mydir = TestBase.compute_mydir(__file__)
 | |
| 
 | |
|     # PExpect uses many timeouts internally and doesn't play well
 | |
|     # under ASAN on a loaded machine..
 | |
|     @skipIfAsan
 | |
|     @skipIfCursesSupportMissing
 | |
|     def test_gui(self):
 | |
|         self.build()
 | |
| 
 | |
|         self.launch(executable=self.getBuildArtifact("a.out"), dimensions=(100,500))
 | |
|         self.expect('br set -o true -f main.c -p "// First break here"', substrs=["Breakpoint 1", "address ="])
 | |
|         self.expect("run", substrs=["stop reason ="])
 | |
| 
 | |
|         self.child.sendline("breakpoint list")
 | |
|         self.child.expect_exact("No breakpoints currently set.")
 | |
| 
 | |
|         escape_key = chr(27).encode()
 | |
|         down_key = chr(27)+'OB' # for vt100 terminal (lldbexpect sets TERM=vt100)
 | |
| 
 | |
|         # Start the GUI and close the welcome window.
 | |
|         self.child.sendline("gui")
 | |
|         self.child.send(escape_key)
 | |
|         self.child.expect_exact("Sources") # wait for gui
 | |
| 
 | |
|         # Go to next line, set a breakpoint.
 | |
|         self.child.send(down_key)
 | |
|         self.child.send('b')
 | |
|         self.child.send(escape_key)
 | |
|         self.expect_prompt()
 | |
|         self.child.sendline("breakpoint list")
 | |
|         self.child.expect("2: file = '[^']*main.c', line = 3,.*")
 | |
|         self.child.sendline("gui")
 | |
|         self.child.expect_exact("Sources")
 | |
| 
 | |
|         # Go two lines down ("gui" resets position), set a breakpoint.
 | |
|         self.child.send(down_key)
 | |
|         self.child.send(down_key)
 | |
|         self.child.send('b')
 | |
|         self.child.send(escape_key)
 | |
|         self.expect_prompt()
 | |
|         self.child.sendline("breakpoint list")
 | |
|         self.child.expect("2: file = '[^']*main.c', line = 3,")
 | |
|         self.child.expect("3: file = '[^']*main.c', line = 4,")
 | |
|         self.child.sendline("gui")
 | |
|         self.child.expect_exact("Sources")
 | |
| 
 | |
|         # Toggle both the breakpoints (remove them).
 | |
|         self.child.send(down_key)
 | |
|         self.child.send('b')
 | |
|         self.child.send(down_key)
 | |
|         self.child.send('b')
 | |
|         self.child.send(escape_key)
 | |
|         self.expect_prompt()
 | |
|         self.child.sendline("breakpoint list")
 | |
|         self.child.expect_exact("No breakpoints currently set.")
 | |
|         self.child.sendline("gui")
 | |
|         self.child.expect_exact("Sources")
 | |
| 
 | |
|         # Press escape to quit the gui
 | |
|         self.child.send(escape_key)
 | |
| 
 | |
|         self.expect_prompt()
 | |
|         self.quit()
 |