From: Sandra Loosemore <sandra@codesourcery.com>
To: gdb-patches <gdb-patches@sourceware.org>,
Keith Seitz <keiths@redhat.com>
Subject: [patch, testsuite] require readline for gdb.linespec/explicit.exp tab-completion tests
Date: Thu, 17 Sep 2015 07:29:00 -0000 [thread overview]
Message-ID: <55FA6B97.4080209@codesourcery.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 1269 bytes --]
Tab-completion tests require readline support. The ones in
gdb.base/completion.exp are already conditional, but the recently-added
gdb.linespec/explicit.exp tests are not. This patch fixes that, and
also an obvious typo ("faill" -> "fail"). The patch is kind of long
because I had to insert an "if" block and reindent, but there's nothing
else going on here. OK to commit?
BTW, independently of the readline-related failures on Windows host that
are addressed by this patch, on Linux host I've also run into the
failures already noted in this thread:
https://sourceware.org/ml/gdb-patches/2015-08/msg00432.html
The immediate problem is that the response to the "break -function
mai\t" test doesn't always include the ^G character in the output
pattern, and the other FAILs are cascading off of the testcase not being
structured to recover from a pattern match failure (it's sending more
commands without a newline to terminate the one that failed). But, I
have no clue why GDB is giving a ^G in some configurations and not
others (I observed that this test fails on nios2-elf target but passes
on nios2-linux-gnu, for instance), or whether this difference is
indicative of an actual bug. So I've not touched that part of the testcase.
-Sandra
[-- Attachment #2: explicit2.log --]
[-- Type: text/x-log, Size: 176 bytes --]
2015-09-17 Sandra Loosemore <sandra@codesourcery.com>
gdb/testsuite/
* gdb.linespec/explicit.exp: Check for readline support for
tab-completion tests. Fix obvious typo.
[-- Attachment #3: explicit2.patch --]
[-- Type: text/x-patch, Size: 10606 bytes --]
diff --git a/gdb/testsuite/gdb.linespec/explicit.exp b/gdb/testsuite/gdb.linespec/explicit.exp
index a0851cd..1fa203f 100644
--- a/gdb/testsuite/gdb.linespec/explicit.exp
+++ b/gdb/testsuite/gdb.linespec/explicit.exp
@@ -145,186 +145,193 @@ namespace eval $testfile {
gdb_test "break $linespec thread 123" "Unknown thread 123."
}
- # Test the explicit location completer
- foreach abbrev {"fun" "so" "lab" "li"} full {"function" "source" "label" "line"} {
- set tst "complete 'break -$abbrev'"
- send_gdb "break -${abbrev}\t"
- gdb_test_multiple "" $tst {
- "break -$full " {
- send_gdb "\n"
- gdb_test_multiple "" $tst {
- -re "missing argument for \"-$full\".*$gdb_prompt " {
- pass $tst
+ # Tests below are about tab-completion, which doesn't work if readline
+ # library isn't used. Check it first.
+ if { [readline_is_used] } {
+
+ # Test the explicit location completer
+ foreach abbrev {"fun" "so" "lab" "li"} full {"function" "source" "label" "line"} {
+ set tst "complete 'break -$abbrev'"
+ send_gdb "break -${abbrev}\t"
+ gdb_test_multiple "" $tst {
+ "break -$full " {
+ send_gdb "\n"
+ gdb_test_multiple "" $tst {
+ -re "missing argument for \"-$full\".*$gdb_prompt " {
+ pass $tst
+ }
}
}
}
- }
- set tst "complete -$full with no value"
- send_gdb "break -$full \t"
- gdb_test_multiple "" $tst {
- -re ".*break -$full " {
- send_gdb "\n"
- gdb_test_multiple "" $tst {
- -re ".*Source filename requires function, label, or line offset\..*$gdb_prompt " {
- if {[string equal $full "source"]} {
+ set tst "complete -$full with no value"
+ send_gdb "break -$full \t"
+ gdb_test_multiple "" $tst {
+ -re ".*break -$full " {
+ send_gdb "\n"
+ gdb_test_multiple "" $tst {
+ -re ".*Source filename requires function, label, or line offset\..*$gdb_prompt " {
+ if {[string equal $full "source"]} {
+ pass $tst
+ } else {
+ fail $tst
+ }
+ }
+ -re "missing argument for \"-$full\".*$gdb_prompt " {
pass $tst
- } else {
- faill $tst
}
}
- -re "missing argument for \"-$full\".*$gdb_prompt " {
- pass $tst
- }
}
}
}
- }
- set tst "complete unique function name"
- send_gdb "break -function mai\t"
- gdb_test_multiple "" $tst {
- "break -function mai\\\x07n" {
- send_gdb "\n"
- gdb_test "" ".*Breakpoint \[0-9\]+.*" $tst
- gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+ set tst "complete unique function name"
+ send_gdb "break -function mai\t"
+ gdb_test_multiple "" $tst {
+ "break -function mai\\\x07n" {
+ send_gdb "\n"
+ gdb_test "" ".*Breakpoint \[0-9\]+.*" $tst
+ gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+ }
}
- }
- set tst "complete non-unique function name"
- send_gdb "break -function myfunc\t"
- gdb_test_multiple "" $tst {
- "break -function myfunc\\\x07tion" {
- send_gdb "\t\t"
- gdb_test_multiple "" $tst {
- -re "\\\x07\r\nmyfunction\[ \t\]+myfunction2\[ \t\]+myfunction3\[ \t\]+myfunction4\[ \t\]+\r\n$gdb_prompt " {
- gdb_test "2" ".*Breakpoint \[0-9\]+.*" $tst
- gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+ set tst "complete non-unique function name"
+ send_gdb "break -function myfunc\t"
+ gdb_test_multiple "" $tst {
+ "break -function myfunc\\\x07tion" {
+ send_gdb "\t\t"
+ gdb_test_multiple "" $tst {
+ -re "\\\x07\r\nmyfunction\[ \t\]+myfunction2\[ \t\]+myfunction3\[ \t\]+myfunction4\[ \t\]+\r\n$gdb_prompt " {
+ gdb_test "2" ".*Breakpoint \[0-9\]+.*" $tst
+ gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+ }
}
}
}
- }
- set tst "complete non-existant function name"
- send_gdb "break -function foo\t"
- gdb_test_multiple "" $tst {
- "break -function foo\\\x07" {
- send_gdb "\t\t"
- gdb_test_multiple "" $tst {
- -re "\\\x07\\\x07" {
- send_gdb "\n"
- gdb_test "" {Function "foo" not defined.} $tst
+ set tst "complete non-existant function name"
+ send_gdb "break -function foo\t"
+ gdb_test_multiple "" $tst {
+ "break -function foo\\\x07" {
+ send_gdb "\t\t"
+ gdb_test_multiple "" $tst {
+ -re "\\\x07\\\x07" {
+ send_gdb "\n"
+ gdb_test "" {Function "foo" not defined.} $tst
+ }
}
}
}
- }
- set tst "complete unique file name"
- send_gdb "break -source 3ex\t"
- gdb_test_multiple "" $tst {
- "break -source 3explicit.c " {
- send_gdb "\n"
- gdb_test "" \
- {Source filename requires function, label, or line offset.} $tst
+ set tst "complete unique file name"
+ send_gdb "break -source 3ex\t"
+ gdb_test_multiple "" $tst {
+ "break -source 3explicit.c " {
+ send_gdb "\n"
+ gdb_test "" \
+ {Source filename requires function, label, or line offset.} $tst
+ }
}
- }
- set tst "complete non-unique file name"
- send_gdb "break -source exp\t"
- gdb_test_multiple "" $tst {
- "break -source exp\\\x07licit" {
- send_gdb "\t\t"
- gdb_test_multiple "" $tst {
- -re "\\\x07\r\nexplicit.c\[ \t\]+explicit2.c\[ \t\]+\r\n$gdb_prompt" {
- send_gdb "\n"
- gdb_test "" \
- {Source filename requires function, label, or line offset.} \
- $tst
+ set tst "complete non-unique file name"
+ send_gdb "break -source exp\t"
+ gdb_test_multiple "" $tst {
+ "break -source exp\\\x07licit" {
+ send_gdb "\t\t"
+ gdb_test_multiple "" $tst {
+ -re "\\\x07\r\nexplicit.c\[ \t\]+explicit2.c\[ \t\]+\r\n$gdb_prompt" {
+ send_gdb "\n"
+ gdb_test "" \
+ {Source filename requires function, label, or line offset.} \
+ $tst
+ }
}
}
- }
- "break -source exp\\\x07l" {
- # This pattern may occur when glibc debuginfo is installed.
- send_gdb "\t\t"
- gdb_test_multiple "" $tst {
- -re "\\\x07\r\nexplicit.c\[ \t\]+explicit2.c\[ \t\]+expl.*\r\n$gdb_prompt" {
- send_gdb "\n"
- gdb_test "" \
- {Source filename requires function, label, or line offset.} \
- $tst
+ "break -source exp\\\x07l" {
+ # This pattern may occur when glibc debuginfo is installed.
+ send_gdb "\t\t"
+ gdb_test_multiple "" $tst {
+ -re "\\\x07\r\nexplicit.c\[ \t\]+explicit2.c\[ \t\]+expl.*\r\n$gdb_prompt" {
+ send_gdb "\n"
+ gdb_test "" \
+ {Source filename requires function, label, or line offset.} \
+ $tst
+ }
}
}
}
- }
- set tst "complete non-existant file name"
- send_gdb "break -source foo\t"
- gdb_test_multiple "" $tst {
- "break -source foo" {
- send_gdb "\t\t"
- gdb_test_multiple "" $tst {
- "\\\x07\\\x07" {
- send_gdb "\n"
- gdb_test "" \
- {Source filename requires function, label, or line offset.} \
- $tst
+ set tst "complete non-existant file name"
+ send_gdb "break -source foo\t"
+ gdb_test_multiple "" $tst {
+ "break -source foo" {
+ send_gdb "\t\t"
+ gdb_test_multiple "" $tst {
+ "\\\x07\\\x07" {
+ send_gdb "\n"
+ gdb_test "" \
+ {Source filename requires function, label, or line offset.} \
+ $tst
+ }
}
}
}
- }
- set tst "complete filename and unique function name"
- send_gdb "break -source explicit.c -function ma\t"
- gdb_test_multiple "" $tst {
- "break -source explicit.c -function main " {
- send_gdb "\n"
- gdb_test "" ".*Breakpoint .*" $tst
- gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+ set tst "complete filename and unique function name"
+ send_gdb "break -source explicit.c -function ma\t"
+ gdb_test_multiple "" $tst {
+ "break -source explicit.c -function main " {
+ send_gdb "\n"
+ gdb_test "" ".*Breakpoint .*" $tst
+ gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+ }
}
- }
- set tst "complete filename and non-unique function name"
- send_gdb "break -so 3explicit.c -func myfunc\t"
- gdb_test_multiple "" $tst {
- "break -so 3explicit.c -func myfunc\\\x07tion" {
- send_gdb "\t\t"
- gdb_test_multiple "" $tst {
- -re "\\\x07\r\nmyfunction3\[ \t\]+myfunction4\[ \t\]+\r\n$gdb_prompt " {
- gdb_test "3" ".*Breakpoint \[0-9\]+.*" $tst
- gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+ set tst "complete filename and non-unique function name"
+ send_gdb "break -so 3explicit.c -func myfunc\t"
+ gdb_test_multiple "" $tst {
+ "break -so 3explicit.c -func myfunc\\\x07tion" {
+ send_gdb "\t\t"
+ gdb_test_multiple "" $tst {
+ -re "\\\x07\r\nmyfunction3\[ \t\]+myfunction4\[ \t\]+\r\n$gdb_prompt " {
+ gdb_test "3" ".*Breakpoint \[0-9\]+.*" $tst
+ gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+ }
}
}
}
- }
- set tst "complete filename and non-existant function name"
- send_gdb "break -sou 3explicit.c -fun foo\t"
- gdb_test_multiple "" $tst {
- "break -sou 3explicit.c -fun foo\\\x07" {
- send_gdb "\t\t"
- gdb_test_multiple "" $tst {
- "\\\x07\\\x07" {
- send_gdb "\n"
- gdb_test "" \
- {Function "foo" not defined in "3explicit.c".} $tst
+ set tst "complete filename and non-existant function name"
+ send_gdb "break -sou 3explicit.c -fun foo\t"
+ gdb_test_multiple "" $tst {
+ "break -sou 3explicit.c -fun foo\\\x07" {
+ send_gdb "\t\t"
+ gdb_test_multiple "" $tst {
+ "\\\x07\\\x07" {
+ send_gdb "\n"
+ gdb_test "" \
+ {Function "foo" not defined in "3explicit.c".} $tst
+ }
}
}
}
- }
- set tst "complete filename and function reversed"
- send_gdb "break -func myfunction4 -source 3ex\t"
- gdb_test_multiple "" $tst {
- "break -func myfunction4 -source 3explicit.c " {
- send_gdb "\n"
- gdb_test "" "Breakpoint \[0-9\]+.*" $tst
- gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+ set tst "complete filename and function reversed"
+ send_gdb "break -func myfunction4 -source 3ex\t"
+ gdb_test_multiple "" $tst {
+ "break -func myfunction4 -source 3explicit.c " {
+ send_gdb "\n"
+ gdb_test "" "Breakpoint \[0-9\]+.*" $tst
+ gdb_test_no_output "delete \$bpnum" "delete $tst breakpoint"
+ }
}
- }
- # NOTE: We don't bother testing more elaborate combinations of options,
- # such as "-func main -sour 3ex\t" (main is defined in explicit.c). The
- # completer cannot handle these yet.
+ # NOTE: We don't bother testing more elaborate combinations of options,
+ # such as "-func main -sour 3ex\t" (main is defined in explicit.c).
+ # The completer cannot handle these yet.
+
+ }
+ # End of completion tests.
# Test pending explicit breakpoints
gdb_exit
next reply other threads:[~2015-09-17 7:29 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-17 7:29 Sandra Loosemore [this message]
2015-09-17 18:50 ` Keith Seitz
2015-09-17 21:10 ` Sandra Loosemore
2015-09-18 4:31 ` Doug Evans
2015-09-18 15:56 ` Sandra Loosemore
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55FA6B97.4080209@codesourcery.com \
--to=sandra@codesourcery.com \
--cc=gdb-patches@sourceware.org \
--cc=keiths@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox