Commit | Line | Data |
---|---|---|
0017922d PA |
1 | # Copyright (C) 2014 Free Software Foundation, Inc. |
2 | ||
3 | # This program is free software; you can redistribute it and/or modify | |
4 | # it under the terms of the GNU General Public License as published by | |
5 | # the Free Software Foundation; either version 3 of the License, or | |
6 | # (at your option) any later version. | |
7 | # | |
8 | # This program is distributed in the hope that it will be useful, | |
9 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
10 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
11 | # GNU General Public License for more details. | |
12 | # | |
13 | # You should have received a copy of the GNU General Public License | |
14 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
15 | ||
16 | # A collection of tests related to running execution commands directly | |
17 | # from the command line, with "-ex". | |
18 | ||
19 | standard_testfile | |
20 | ||
21 | if {[build_executable "failed to prepare" $testfile $srcfile debug] == -1} { | |
22 | return -1 | |
23 | } | |
24 | ||
25 | # Check that we handle pagination correctly when it triggers due to an | |
26 | # background execution command entered directly on the command line. | |
27 | ||
28 | proc test_bg_execution_pagination_return {} { | |
29 | global binfile | |
30 | global pagination_prompt | |
31 | ||
32 | with_test_prefix "paginate" { | |
33 | clean_restart $binfile | |
34 | ||
35 | if ![runto_main] then { | |
36 | fail "Can't run to main" | |
37 | return 0 | |
38 | } | |
39 | ||
40 | gdb_test "b after_sleep" | |
41 | ||
42 | gdb_test_no_output "set height 2" | |
43 | ||
44 | gdb_test "continue&" "Continuing\." | |
45 | ||
46 | set test "pagination handled, breakpoint hit" | |
47 | set saw_pagination_prompt 0 | |
48 | gdb_test_multiple "" $test { | |
49 | -re "$pagination_prompt$" { | |
50 | set saw_pagination_prompt 1 | |
51 | send_gdb "\n" | |
52 | exp_continue | |
53 | } | |
0017922d PA |
54 | -re "after sleep\[^\r\n\]+\r\n$" { |
55 | gdb_assert $saw_pagination_prompt $test | |
56 | } | |
57 | } | |
58 | ||
59 | # GDB used to crash here. | |
60 | gdb_test "p 1" " = 1" "GDB accepts further input" | |
61 | ||
62 | # In case the board file wants to send further commands. | |
63 | gdb_test_no_output "set height unlimited" | |
64 | } | |
65 | } | |
66 | ||
67 | # Check that we handle canceling pagination correctly when it triggers | |
68 | # due to a background execution command entered directly on the | |
69 | # command line. | |
70 | ||
71 | proc test_bg_execution_pagination_cancel { how } { | |
72 | global binfile | |
73 | global gdb_prompt pagination_prompt | |
74 | ||
75 | with_test_prefix "cancel with $how" { | |
76 | clean_restart $binfile | |
77 | ||
78 | if ![runto_main] then { | |
79 | fail "Can't run to main" | |
80 | return 0 | |
81 | } | |
82 | ||
83 | gdb_test "b after_sleep" | |
84 | ||
85 | gdb_test_no_output "set height 2" | |
86 | ||
87 | gdb_test "continue&" "Continuing\." | |
88 | ||
89 | set test "continue& paginates" | |
90 | gdb_test_multiple "" $test { | |
91 | -re "$pagination_prompt$" { | |
92 | pass $test | |
93 | } | |
0017922d PA |
94 | } |
95 | ||
96 | set test "cancel pagination" | |
97 | if { $how == "ctrl-c" } { | |
98 | send_gdb "\003" | |
99 | } else { | |
100 | send_gdb "q\n" | |
101 | ||
102 | } | |
103 | gdb_test_multiple "" $test { | |
104 | -re "Quit\r\n$gdb_prompt $" { | |
105 | pass $test | |
106 | } | |
107 | } | |
108 | ||
109 | gdb_test "p 1" " = 1" "GDB accepts further input" | |
110 | ||
111 | # In case the board file wants to send further commands. | |
112 | gdb_test_no_output "set height unlimited" | |
113 | } | |
114 | } | |
115 | ||
116 | test_bg_execution_pagination_return | |
117 | test_bg_execution_pagination_cancel "ctrl-c" | |
118 | test_bg_execution_pagination_cancel "quit" |