binutils-gdb/gdb/testsuite/gdb.python/py-completion.exp
Tom de Vries 7f3294a9b7 [gdb/testsuite] Fix gdb.python/py-completion.exp
With test-case gdb.python/py-completion.exp and target board
native-extended-gdbserver I get this warning:
...
(gdb) PASS: gdb.python/py-completion.exp: discard #2
completefilecommandcond $outputs/gdb.python/py-completion/py-completion-t^G\
  PASS: gdb.python/py-completion.exp: completefilecommandcond completion
Remote debugging from host ::1, port 53346^M
monitor exit^M
not implemented^M
(gdb) WARNING: Timed out waiting for EOF in server after monitor exit
...

Fix this by adding the missing "discard #3", such that we have instead:
...
(gdb) PASS: gdb.python/py-completion.exp: discard #2
completefilecommandcond $outputs/gdb.python/py-completion/py-completion-t^G\
  PASS: gdb.python/py-completion.exp: completefilecommandcond completion
 ^M
not implemented^M
(gdb) PASS: gdb.python/py-completion.exp: discard #3
Remote debugging from host ::1, port 36278^M
monitor exit^M
(gdb)
...

Tested on x86_64-linux.
2023-03-10 16:34:04 +01:00

138 lines
4.2 KiB
Plaintext

# Copyright (C) 2014-2023 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
set testfile "py-completion"
load_lib gdb-python.exp
require allow_python_tests
set pyfile [gdb_remote_download host ${srcdir}/${subdir}/${testfile}.py]
set discard 0
gdb_exit
gdb_start
# Tab completion tests require readline support, and this set of tests
# doesn't work on a remote host either.
if { [readline_is_used] && ![is_remote host] } {
gdb_test_no_output "source ${pyfile}" "load python file"
# Create a temporary directory
set testdir "[standard_output_file "py-completion-testdir"]/"
set testdir_regex [string_to_regexp $testdir]
set testdir_complete [standard_output_file "py-completion-test"]
file mkdir $testdir
# This one should always pass.
send_gdb "completefileinit ${testdir_complete}\t"
gdb_test_multiple "" "completefileinit completion" {
-re "^completefileinit ${testdir_regex}$" {
pass "completefileinit completion"
}
}
# Just discarding whatever we typed.
gdb_test " " ".*" "discard #[incr discard]"
# This is the problematic one.
send_gdb "completefilemethod ${testdir_complete}\t"
gdb_test_multiple "" "completefilemethod completion" {
-re "^completefilemethod ${testdir_regex} $" {
fail "completefilemethod completion (completed filename as wrong command arg)"
}
-re "^completefilemethod ${testdir_regex}$" {
pass "completefilemethod completion"
}
}
# Discarding again
gdb_test " " ".*" "discard #[incr discard]"
# Another problematic
set completion_regex "[string_to_regexp [standard_output_file "py-completion-t"]]"
send_gdb "completefilecommandcond [standard_output_file "py-completion-t\t"]"
gdb_test_multiple "" "completefilecommandcond completion" {
-re "^completefilecommandcond ${testdir}$" {
fail "completefilecommandcond completion (completed filename instead of command)"
}
-re "^completefilecommandcond ${completion_regex}\007$" {
pass "completefilecommandcond completion"
}
}
# Discarding again
gdb_test " " ".*" "discard #[incr discard]"
}
# Start gdb over again to clear out current state. This can interfere
# with the expected output of the below tests in a buggy gdb.
gdb_exit
gdb_start
gdb_test_no_output "source ${pyfile}" "load python file again"
gdb_test_sequence "complete completel" \
"list all completions of 'complete completel'" {
"completelimit1"
"completelimit2"
"completelimit3"
"completelimit4"
"completelimit5"
"completelimit6"
"completelimit7"
}
# Discarding again
gdb_test " " ".*" "discard #[incr discard]"
gdb_test_sequence "complete completelimit1 c" \
"list all completions of 'complete completelimit1 c'" {
"completelimit1 cl11"
"completelimit1 cl12"
"completelimit1 cl13"
}
# Discarding again
gdb_test " " ".*" "discard #[incr discard]"
# If using readline, we can TAB-complete. This used to trigger a bug
# because the cached result from the completer was being reused for
# a different python command.
if {[readline_is_used]} {
set testname "tab-complete 'completelimit1 c'"
send_gdb "completelimit1 c\t"
gdb_test_multiple "" $testname {
-re "^completelimit1 c\\\x07l1$" {
pass $testname
# Discard the command line
gdb_test " " ".*" "discard #[incr discard]"
}
}
gdb_test_sequence "complete completelimit2 c" \
"list all completions of 'complete completelimit2 c'" {
"completelimit2 cl21"
"completelimit2 cl210"
"completelimit2 cl22"
"completelimit2 cl23"
"completelimit2 cl24"
"completelimit2 cl25"
"completelimit2 cl26"
"completelimit2 cl27"
"completelimit2 cl28"
"completelimit2 cl29"
}
}