Fix racy output matching in gdb.tui/tui-completion.exp
'make check-read1 TESTS="gdb.tui/tui-completion.exp"' exposes this test race: (gdb) PASS: gdb.tui/completion.exp: set max-completions unlimited layout ^G asm next prev regs split src (gdb) FAIL: gdb.tui/completion.exp: completion of layout names: tab completion Quit (gdb) PASS: gdb.tui/completion.exp: completion of layout names: quit command input focus ^G cmd next prev src (gdb) FAIL: gdb.tui/completion.exp: completion of focus command: tab completion Quit This is caused by expecting "$gdb_prompt layout $". gdb_test_multiple's internal prompt regexp can match first if expect's internal buffer is filled with partial output. Fix that by splitting the gdb_test_multiple in question in two. Since the same problem/code appears twice in the file, factor out a common procedure. gdb/testsuite/ChangeLog: 2017-11-09 Pedro Alves <palves@redhat.com> * gdb.tui/tui-completion.exp (test_tab_completion): New procedure, factored out from ... (top level): ... here, and adjusted to avoid expecting beyond the prompt in a single gdb_test_multiple.
This commit is contained in:
parent
5ed7a928ac
commit
584a564f36
@ -1,3 +1,10 @@
|
||||
2017-11-09 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* gdb.tui/tui-completion.exp (test_tab_completion): New procedure,
|
||||
factored out from ...
|
||||
(top level): ... here, and adjusted to avoid expecting beyond the
|
||||
prompt in a single gdb_test_multiple.
|
||||
|
||||
2017-11-09 Pedro Alves <palves@redhat.com>
|
||||
|
||||
* gdb.multi/multi-attach.exp ("kill" test): Match the whole query
|
||||
|
@ -22,12 +22,20 @@ if {[skip_tui_tests] || [target_info exists gdb,nointerrupts]} {
|
||||
|
||||
gdb_test_no_output "set max-completions unlimited"
|
||||
|
||||
with_test_prefix "completion of layout names" {
|
||||
# TAB-complete INPUT_LINE, and expect EXPECTED_RE as completion match
|
||||
# output.
|
||||
proc test_tab_completion {input_line expected_re} {
|
||||
global gdb_prompt
|
||||
|
||||
set test "tab completion"
|
||||
send_gdb "layout\t\t\t"
|
||||
send_gdb "$input_line\t\t\t"
|
||||
gdb_test_multiple "" "$test" {
|
||||
-re "asm *next *prev *regs *split *src *\r\n$gdb_prompt layout $" {
|
||||
pass "$test"
|
||||
-re "$expected_re\r\n$gdb_prompt " {
|
||||
gdb_test_multiple "" "$test" {
|
||||
-re "^$input_line$" {
|
||||
pass "$test"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
send_gdb "\003"
|
||||
@ -39,20 +47,10 @@ with_test_prefix "completion of layout names" {
|
||||
}
|
||||
}
|
||||
|
||||
with_test_prefix "completion of layout names" {
|
||||
test_tab_completion "layout" "asm *next *prev *regs *split *src *"
|
||||
}
|
||||
|
||||
with_test_prefix "completion of focus command" {
|
||||
set test "tab completion"
|
||||
send_gdb "focus \t\t"
|
||||
gdb_test_multiple "" "$test" {
|
||||
-re "cmd *next *prev *src *\r\n$gdb_prompt focus $" {
|
||||
pass "$test"
|
||||
}
|
||||
}
|
||||
|
||||
send_gdb "\003"
|
||||
set test "quit command input"
|
||||
gdb_test_multiple "" "$test" {
|
||||
-re "$gdb_prompt $" {
|
||||
pass "$test"
|
||||
}
|
||||
}
|
||||
test_tab_completion "focus" "cmd *next *prev *src *"
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user