1a94fbb25SMuhammad Omair Javaid""" 2a94fbb25SMuhammad Omair JavaidTest the 'gui' default thread tree expansion. 3a94fbb25SMuhammad Omair JavaidThe root process tree item and the tree item corresponding to the selected 4a94fbb25SMuhammad Omair Javaidthread should be expanded by default. 5a94fbb25SMuhammad Omair Javaid""" 6a94fbb25SMuhammad Omair Javaid 7a94fbb25SMuhammad Omair Javaidimport lldb 8a94fbb25SMuhammad Omair Javaidfrom lldbsuite.test.decorators import * 9a94fbb25SMuhammad Omair Javaidfrom lldbsuite.test.lldbtest import * 10a94fbb25SMuhammad Omair Javaidfrom lldbsuite.test.lldbpexpect import PExpectTest 11a94fbb25SMuhammad Omair Javaid 12a94fbb25SMuhammad Omair Javaidclass TestGuiExpandThreadsTree(PExpectTest): 13a94fbb25SMuhammad Omair Javaid 14a94fbb25SMuhammad Omair Javaid mydir = TestBase.compute_mydir(__file__) 15a94fbb25SMuhammad Omair Javaid 16a94fbb25SMuhammad Omair Javaid # PExpect uses many timeouts internally and doesn't play well 17a94fbb25SMuhammad Omair Javaid # under ASAN on a loaded machine.. 18a94fbb25SMuhammad Omair Javaid @skipIfAsan 19a94fbb25SMuhammad Omair Javaid @skipIfCursesSupportMissing 20*f2128abeSMuhammad Omair Javaid @skipIf(oslist=["linux"], archs=["arm", "aarch64"]) 21a94fbb25SMuhammad Omair Javaid def test_gui(self): 22a94fbb25SMuhammad Omair Javaid self.build() 23a94fbb25SMuhammad Omair Javaid 24a94fbb25SMuhammad Omair Javaid self.launch(executable=self.getBuildArtifact("a.out"), dimensions=(100,500)) 25a94fbb25SMuhammad Omair Javaid self.expect("breakpoint set -r thread_start_routine", substrs=["Breakpoint 1", "address ="]) 26a94fbb25SMuhammad Omair Javaid self.expect("run", substrs=["stop reason ="]) 27a94fbb25SMuhammad Omair Javaid 28a94fbb25SMuhammad Omair Javaid escape_key = chr(27).encode() 29a94fbb25SMuhammad Omair Javaid 30a94fbb25SMuhammad Omair Javaid # Start the GUI and close the welcome window. 31a94fbb25SMuhammad Omair Javaid self.child.sendline("gui") 32a94fbb25SMuhammad Omair Javaid self.child.send(escape_key) 33a94fbb25SMuhammad Omair Javaid self.child.expect_exact("Threads") 34a94fbb25SMuhammad Omair Javaid 35a94fbb25SMuhammad Omair Javaid # The thread running thread_start_routine should be expanded. 36a94fbb25SMuhammad Omair Javaid self.child.expect_exact("frame #0: thread_start_routine") 37a94fbb25SMuhammad Omair Javaid 38a94fbb25SMuhammad Omair Javaid # Exit GUI. 39a94fbb25SMuhammad Omair Javaid self.child.send(escape_key) 40a94fbb25SMuhammad Omair Javaid self.expect_prompt() 41a94fbb25SMuhammad Omair Javaid 42a94fbb25SMuhammad Omair Javaid # Select the main thread. 43a94fbb25SMuhammad Omair Javaid self.child.sendline("thread select 1") 44a94fbb25SMuhammad Omair Javaid 45a94fbb25SMuhammad Omair Javaid # Start the GUI. 46a94fbb25SMuhammad Omair Javaid self.child.sendline("gui") 47a94fbb25SMuhammad Omair Javaid self.child.expect_exact("Threads") 48a94fbb25SMuhammad Omair Javaid 49a94fbb25SMuhammad Omair Javaid # The main thread should be expanded. 50a94fbb25SMuhammad Omair Javaid self.child.expect("frame #\d+: main") 51a94fbb25SMuhammad Omair Javaid 52a94fbb25SMuhammad Omair Javaid # Quit the GUI 53a94fbb25SMuhammad Omair Javaid self.child.send(escape_key) 54a94fbb25SMuhammad Omair Javaid 55a94fbb25SMuhammad Omair Javaid self.expect_prompt() 56a94fbb25SMuhammad Omair Javaid self.quit() 57