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    # PExpect uses many timeouts internally and doesn't play well
15a94fbb25SMuhammad Omair Javaid    # under ASAN on a loaded machine..
16a94fbb25SMuhammad Omair Javaid    @skipIfAsan
17a94fbb25SMuhammad Omair Javaid    @skipIfCursesSupportMissing
18f2128abeSMuhammad Omair Javaid    @skipIf(oslist=["linux"], archs=["arm", "aarch64"])
19*3b8a1cc3SAugusto Noronha    @skipIf(bugnumber="rdar://97460266")
20a94fbb25SMuhammad Omair Javaid    def test_gui(self):
21a94fbb25SMuhammad Omair Javaid        self.build()
22a94fbb25SMuhammad Omair Javaid
23*3b8a1cc3SAugusto Noronha        print(1)
24a94fbb25SMuhammad Omair Javaid        self.launch(executable=self.getBuildArtifact("a.out"), dimensions=(100,500))
25*3b8a1cc3SAugusto Noronha        print(2)
26791b6ebcSPavel Labath        self.expect("breakpoint set -n break_here", substrs=["Breakpoint 1", "address ="])
27*3b8a1cc3SAugusto Noronha        print(3)
28a94fbb25SMuhammad Omair Javaid        self.expect("run", substrs=["stop reason ="])
29a94fbb25SMuhammad Omair Javaid
30a94fbb25SMuhammad Omair Javaid        escape_key = chr(27).encode()
31a94fbb25SMuhammad Omair Javaid
32a94fbb25SMuhammad Omair Javaid        # Start the GUI and close the welcome window.
33*3b8a1cc3SAugusto Noronha        print(4)
34a94fbb25SMuhammad Omair Javaid        self.child.sendline("gui")
35*3b8a1cc3SAugusto Noronha        print(5)
36a94fbb25SMuhammad Omair Javaid        self.child.send(escape_key)
37*3b8a1cc3SAugusto Noronha        print(6)
38a94fbb25SMuhammad Omair Javaid        self.child.expect_exact("Threads")
39a94fbb25SMuhammad Omair Javaid
40a94fbb25SMuhammad Omair Javaid        # The thread running thread_start_routine should be expanded.
41*3b8a1cc3SAugusto Noronha
42*3b8a1cc3SAugusto Noronha        print(7)
43f90fa555SLuboš Luňák        self.child.expect_exact("#0: break_here")
44a94fbb25SMuhammad Omair Javaid
45a94fbb25SMuhammad Omair Javaid        # Exit GUI.
46*3b8a1cc3SAugusto Noronha
47*3b8a1cc3SAugusto Noronha        print(8)
48a94fbb25SMuhammad Omair Javaid        self.child.send(escape_key)
49*3b8a1cc3SAugusto Noronha        print(9)
50a94fbb25SMuhammad Omair Javaid        self.expect_prompt()
51a94fbb25SMuhammad Omair Javaid
52a94fbb25SMuhammad Omair Javaid        # Select the main thread.
53*3b8a1cc3SAugusto Noronha        print(10)
54a94fbb25SMuhammad Omair Javaid        self.child.sendline("thread select 1")
55a94fbb25SMuhammad Omair Javaid
56a94fbb25SMuhammad Omair Javaid        # Start the GUI.
57*3b8a1cc3SAugusto Noronha        print(11)
58a94fbb25SMuhammad Omair Javaid        self.child.sendline("gui")
59*3b8a1cc3SAugusto Noronha        print(12)
60a94fbb25SMuhammad Omair Javaid        self.child.expect_exact("Threads")
61a94fbb25SMuhammad Omair Javaid
62a94fbb25SMuhammad Omair Javaid        # The main thread should be expanded.
63*3b8a1cc3SAugusto Noronha
64*3b8a1cc3SAugusto Noronha        print(13)
65f90fa555SLuboš Luňák        self.child.expect("#\d+: main")
66a94fbb25SMuhammad Omair Javaid
67a94fbb25SMuhammad Omair Javaid        # Quit the GUI
68*3b8a1cc3SAugusto Noronha        print(14)
69a94fbb25SMuhammad Omair Javaid        self.child.send(escape_key)
70a94fbb25SMuhammad Omair Javaid
71*3b8a1cc3SAugusto Noronha        print(15)
72a94fbb25SMuhammad Omair Javaid        self.expect_prompt()
73*3b8a1cc3SAugusto Noronha
74*3b8a1cc3SAugusto Noronha        print(16)
75a94fbb25SMuhammad Omair Javaid        self.quit()
76