From: Yao Qi <yao@codesourcery.com>
To: Joel Brobecker <brobecker@adacore.com>
Cc: <gdb-patches@sourceware.org>
Subject: Re: [PATCH] Skip tests on completion and readline when readline lib isn't used
Date: Wed, 26 Mar 2014 13:13:00 -0000 [thread overview]
Message-ID: <5332D1D1.20509@codesourcery.com> (raw)
In-Reply-To: <20140326123207.GP4282@adacore.com>
On 03/26/2014 08:32 PM, Joel Brobecker wrote:
>> +if { ![readline_is_used] } {
>> > + # Restore globals modified in this test...
>> > + set timeout $oldtimeout1
>> > + return -1
> You actually do not need to restore $timeout. It's automatically
> restored at the start of every testcase (see lib/gdb.exp::gdb_init).
>
OK.
>> >
>> > +# Return 1 if readline library is used.
>> > +
>> > +proc readline_is_used { } {
>> > + global gdb_prompt
>> > +
>> > + send_gdb "show editing\n"
>> > + gdb_expect {
>> > + -re ".*Editing of command lines as they are typed is on\..*$gdb_prompt $" {
>> > + return 1
>> > + }
>> > + -re ".*$gdb_prompt $" {
>> > + return 0
>> > + }
> Can you use gdb_test_multiple, in this case?
Done. Patch below is pushed in.
--
Yao (é½å°§)
gdb/testsuite:
2014-03-26 Yao Qi <yao@codesourcery.com>
* lib/gdb.exp (readline_is_used): New proc.
* gdb.base/completion.exp: Move tests on command complete up.
Skip the rest of tests if readline is not used.
* gdb.ada/complete.exp: Skp the test if readline is not
used.
* gdb.base/filesym.exp: Likewise.
* gdb.base/macscp.exp: Likewise.
* gdb.base/readline-ask.exp: Likewise.
* gdb.base/readline.exp: Likewise.
* gdb.python/py-cmd.exp: Likewise.
* gdb.trace/tfile.exp: Likewise.
---
gdb/testsuite/ChangeLog | 14 ++++
gdb/testsuite/gdb.ada/complete.exp | 23 ++++---
gdb/testsuite/gdb.base/completion.exp | 121 ++++++++++++++++---------------
gdb/testsuite/gdb.base/filesym.exp | 6 ++
gdb/testsuite/gdb.base/macscp.exp | 119 ++++++++++++++++---------------
gdb/testsuite/gdb.base/readline-ask.exp | 5 ++
gdb/testsuite/gdb.base/readline.exp | 5 ++
gdb/testsuite/gdb.python/py-cmd.exp | 18 +++--
gdb/testsuite/gdb.trace/tfile.exp | 8 ++-
gdb/testsuite/lib/gdb.exp | 15 ++++
10 files changed, 198 insertions(+), 136 deletions(-)
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 694efd6..45355f3 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,5 +1,19 @@
2014-03-26 Yao Qi <yao@codesourcery.com>
+ * lib/gdb.exp (readline_is_used): New proc.
+ * gdb.base/completion.exp: Move tests on command complete up.
+ Skip the rest of tests if readline is not used.
+ * gdb.ada/complete.exp: Skp the test if readline is not
+ used.
+ * gdb.base/filesym.exp: Likewise.
+ * gdb.base/macscp.exp: Likewise.
+ * gdb.base/readline-ask.exp: Likewise.
+ * gdb.base/readline.exp: Likewise.
+ * gdb.python/py-cmd.exp: Likewise.
+ * gdb.trace/tfile.exp: Likewise.
+
+2014-03-26 Yao Qi <yao@codesourcery.com>
+
* gdb.base/macscp.exp: Fix code format issues.
2014-03-25 Ulrich Weigand <uweigand@de.ibm.com>
diff --git a/gdb/testsuite/gdb.ada/complete.exp b/gdb/testsuite/gdb.ada/complete.exp
index 5b52f73..1e1ebaa 100644
--- a/gdb/testsuite/gdb.ada/complete.exp
+++ b/gdb/testsuite/gdb.ada/complete.exp
@@ -176,15 +176,18 @@ test_gdb_complete "<pck__my" \
# The verification we are trying to make involves the event loop,
# and using the "complete" command is not sufficient to reproduce
# the original problem.
-set test "interactive complete 'print some'"
-send_gdb "print some\t"
-gdb_test_multiple "" "$test" {
- -re "^print some_local_variable $" {
- send_gdb "\n"
- gdb_test_multiple "" "$test" {
- -re " = 1$eol$gdb_prompt $" {
- pass "$test"
- }
- }
+
+if { [readline_is_used] } {
+ set test "interactive complete 'print some'"
+ send_gdb "print some\t"
+ gdb_test_multiple "" "$test" {
+ -re "^print some_local_variable $" {
+ send_gdb "\n"
+ gdb_test_multiple "" "$test" {
+ -re " = 1$eol$gdb_prompt $" {
+ pass "$test"
+ }
+ }
+ }
}
}
diff --git a/gdb/testsuite/gdb.base/completion.exp b/gdb/testsuite/gdb.base/completion.exp
index b7b9b8e..73e3a06 100644
--- a/gdb/testsuite/gdb.base/completion.exp
+++ b/gdb/testsuite/gdb.base/completion.exp
@@ -69,6 +69,70 @@ if ![runto_main] then {
set oldtimeout1 $timeout
set timeout 30
+gdb_test_no_output "complete print values\[0\].x." \
+ "field completion with invalid field"
+
+# If there is a non-deprecated completion, it should be returned.
+gdb_test "complete sav" "save" "test non-deprecated completion"
+# If there is only a deprecated completion, then it should be returned.
+gdb_test "complete save-t" "save-tracepoints" "test deprecated completion"
+
+
+#
+# Tag name completion.
+#
+
+gdb_test "complete ptype struct some_" "ptype struct some_struct"
+gdb_test "complete ptype enum some_" "ptype enum some_enum"
+gdb_test "complete ptype union some_" "ptype union some_union"
+
+
+gdb_test "complete set gnutarget aut" "set gnutarget auto"
+
+
+gdb_test "complete set cp-abi aut" "set cp-abi auto"
+
+# Test that completion of commands 'target FOO' works well.
+set targets [list "core" "tfile" "exec"]
+
+# Test that completion of command 'target ctf' if GDB supports ctf
+# target.
+gdb_test_multiple "target ctf" "" {
+ -re "Undefined target command: \"ctf\"\. Try \"help target\"\.\r\n$gdb_prompt $" {
+ }
+ -re "No CTF directory specified.*\r\n$gdb_prompt $" {
+ lappend targets "ctf"
+ }
+}
+
+foreach target_name ${targets} {
+ gdb_test "complete target ${target_name} ./gdb.base/completion" \
+ "target ${target_name} \\./gdb.base/completion.*\\./gdb.base/completion0\\.o.*\\./gdb.base/completion1\\.o.*"
+}
+
+#
+# "set foo unlimited" completion.
+#
+
+# A var_uinteger command.
+gdb_test "complete set height " "set height unlimited"
+gdb_test "complete set height u" "set height unlimited"
+
+# A var_integer command.
+gdb_test "complete set listsize " "set listsize unlimited"
+gdb_test "complete set listsize unl" "set listsize unlimited"
+
+# A var_zuinteger_unlimited command.
+gdb_test "complete set trace-buffer-size " "set trace-buffer-size unlimited"
+gdb_test "complete set trace-buffer-size unl" "set trace-buffer-size unlimited"
+
+# Tests below are about tab-completion, which doesn't work if readline
+# library isn't used. Check it first.
+
+if { ![readline_is_used] } {
+ return -1
+}
+
set test "complete 'hfgfh'"
send_gdb "hfgfh\t"
gdb_test_multiple "" "$test" {
@@ -687,63 +751,6 @@ gdb_test_multiple "" "$test" {
}
}
-gdb_test_no_output "complete print values\[0\].x." \
- "field completion with invalid field"
-
-# If there is a non-deprecated completion, it should be returned.
-gdb_test "complete sav" "save" "test non-deprecated completion"
-# If there is only a deprecated completion, then it should be returned.
-gdb_test "complete save-t" "save-tracepoints" "test deprecated completion"
-
-
-#
-# Tag name completion.
-#
-
-gdb_test "complete ptype struct some_" "ptype struct some_struct"
-gdb_test "complete ptype enum some_" "ptype enum some_enum"
-gdb_test "complete ptype union some_" "ptype union some_union"
-
-
-gdb_test "complete set gnutarget aut" "set gnutarget auto"
-
-
-gdb_test "complete set cp-abi aut" "set cp-abi auto"
-
-# Test that completion of commands 'target FOO' works well.
-set targets [list "core" "tfile" "exec"]
-
-# Test that completion of command 'target ctf' if GDB supports ctf
-# target.
-gdb_test_multiple "target ctf" "" {
- -re "Undefined target command: \"ctf\"\. Try \"help target\"\.\r\n$gdb_prompt $" {
- }
- -re "No CTF directory specified.*\r\n$gdb_prompt $" {
- lappend targets "ctf"
- }
-}
-
-foreach target_name ${targets} {
- gdb_test "complete target ${target_name} ./gdb.base/completion" \
- "target ${target_name} ./gdb.base/completion\\.exp.*"
-}
-
-#
-# "set foo unlimited" completion.
-#
-
-# A var_uinteger command.
-gdb_test "complete set height " "set height unlimited"
-gdb_test "complete set height u" "set height unlimited"
-
-# A var_integer command.
-gdb_test "complete set listsize " "set listsize unlimited"
-gdb_test "complete set listsize unl" "set listsize unlimited"
-
-# A var_zuinteger_unlimited command.
-gdb_test "complete set trace-buffer-size " "set trace-buffer-size unlimited"
-gdb_test "complete set trace-buffer-size unl" "set trace-buffer-size unlimited"
-
# Restore globals modified in this test...
set timeout $oldtimeout1
diff --git a/gdb/testsuite/gdb.base/filesym.exp b/gdb/testsuite/gdb.base/filesym.exp
index 5f43116..77e643b 100644
--- a/gdb/testsuite/gdb.base/filesym.exp
+++ b/gdb/testsuite/gdb.base/filesym.exp
@@ -22,6 +22,12 @@ if {[prepare_for_testing $testfile.exp $testfile $srcfile debug]} {
return -1
}
+if { ![readline_is_used] } {
+ unsupported "completion doesn't work when readline isn't used."
+ return -1
+}
+
+
# Test completion list for "filesy". We expect the immediate result to
# complete to "filesym"; completing again, we expect the symbol name and the
# filename (in that order).
diff --git a/gdb/testsuite/gdb.base/macscp.exp b/gdb/testsuite/gdb.base/macscp.exp
index e953c0d..9503e75 100644
--- a/gdb/testsuite/gdb.base/macscp.exp
+++ b/gdb/testsuite/gdb.base/macscp.exp
@@ -517,77 +517,80 @@ gdb_test "macro undef" \
"usage: macro undef.*" \
"macro undef with no arguments"
-# Completion tests.
-
-# The macro FIFTY_SEVEN is in scope at this point.
-send_gdb "p FIFTY_\t"
-gdb_expect {
- -re "^p FIFTY_SEVEN $" {
- send_gdb "\n"
- gdb_expect {
- -re "^.* = 57.*$gdb_prompt $" {
- pass "complete 'p FIFTY_SEVEN'"
- }
- -re ".*$gdb_prompt $" { fail "complete 'p FIFTY_SEVEN'" }
- timeout { fail "(timeout) complete 'p FIFTY_SEVEN'" }
+# Do completion tests if readline is used.
+
+if { [readline_is_used] } {
+
+ # The macro FIFTY_SEVEN is in scope at this point.
+ send_gdb "p FIFTY_\t"
+ gdb_expect {
+ -re "^p FIFTY_SEVEN $" {
+ send_gdb "\n"
+ gdb_expect {
+ -re "^.* = 57.*$gdb_prompt $" {
+ pass "complete 'p FIFTY_SEVEN'"
+ }
+ -re ".*$gdb_prompt $" { fail "complete 'p FIFTY_SEVEN'" }
+ timeout { fail "(timeout) complete 'p FIFTY_SEVEN'" }
}
}
- -re ".*$gdb_prompt $" { fail "complete 'p FIFTY_SEVEN'" }
- timeout { fail "(timeout) complete 'p FIFTY_SEVEN' 2" }
-}
+ -re ".*$gdb_prompt $" { fail "complete 'p FIFTY_SEVEN'" }
+ timeout { fail "(timeout) complete 'p FIFTY_SEVEN' 2" }
+ }
-# The macro TWENTY_THREE is not in scope.
-send_gdb "p TWENTY_\t"
-gdb_expect {
- -re "^p TWENTY_\\\x07$" {
- send_gdb "\n"
- gdb_expect {
- -re "No symbol \"TWENTY_\" in current context\\..*$gdb_prompt $" {
- pass "complete 'p TWENTY_'"
+ # The macro TWENTY_THREE is not in scope.
+ send_gdb "p TWENTY_\t"
+ gdb_expect {
+ -re "^p TWENTY_\\\x07$" {
+ send_gdb "\n"
+ gdb_expect {
+ -re "No symbol \"TWENTY_\" in current context\\..*$gdb_prompt $" {
+ pass "complete 'p TWENTY_'"
+ }
+ -re ".*$gdb_prompt $" { fail "complete 'p TWENTY_'" }
+ timeout { fail "(timeout) complete 'p TWENTY_'"}
}
- -re ".*$gdb_prompt $" { fail "complete 'p TWENTY_'" }
- timeout { fail "(timeout) complete 'p TWENTY_'"}
}
+ -re ".*$gdb_prompt $" { fail "complete 'p TWENTY_'" }
+ timeout { fail "(timeout) complete 'p TWENTY_' 2" }
}
- -re ".*$gdb_prompt $" { fail "complete 'p TWENTY_'" }
- timeout { fail "(timeout) complete 'p TWENTY_' 2" }
-}
-# The macro FORTY_EIGHT was undefined and thus is not in scope.
-send_gdb "p FORTY_\t"
-gdb_expect {
- -re "^p FORTY_\\\x07$" {
- send_gdb "\n"
- gdb_expect {
- -re "No symbol \"FORTY_\" in current context\\..*$gdb_prompt $" {
- pass "complete 'p FORTY_'"
- }
- -re ".*$gdb_prompt $" { fail "complete 'p FORTY_'" }
- timeout {fail "(timeout) complete 'p FORTY_'"}
+ # The macro FORTY_EIGHT was undefined and thus is not in scope.
+ send_gdb "p FORTY_\t"
+ gdb_expect {
+ -re "^p FORTY_\\\x07$" {
+ send_gdb "\n"
+ gdb_expect {
+ -re "No symbol \"FORTY_\" in current context\\..*$gdb_prompt $" {
+ pass "complete 'p FORTY_'"
+ }
+ -re ".*$gdb_prompt $" { fail "complete 'p FORTY_'" }
+ timeout {fail "(timeout) complete 'p FORTY_'"}
}
}
- -re ".*$gdb_prompt $" { fail "complete 'p FORTY_'" }
- timeout { fail "(timeout) complete 'p FORTY_' 2" }
-}
+ -re ".*$gdb_prompt $" { fail "complete 'p FORTY_'" }
+ timeout { fail "(timeout) complete 'p FORTY_' 2" }
+ }
-gdb_test_no_output "macro define TWENTY_THREE 25" \
- "defining TWENTY_THREE"
-
-# User-defined macros are always in scope.
-send_gdb "p TWENTY_\t"
-gdb_expect {
- -re "^p TWENTY_THREE $" {
- send_gdb "\n"
- gdb_expect {
- -re "^.* = 25.*$gdb_prompt $" {
- pass "complete 'p TWENTY_THREE'"
+ gdb_test_no_output "macro define TWENTY_THREE 25" \
+ "defining TWENTY_THREE"
+
+ # User-defined macros are always in scope.
+ send_gdb "p TWENTY_\t"
+ gdb_expect {
+ -re "^p TWENTY_THREE $" {
+ send_gdb "\n"
+ gdb_expect {
+ -re "^.* = 25.*$gdb_prompt $" {
+ pass "complete 'p TWENTY_THREE'"
+ }
+ -re ".*$gdb_prompt $" { fail "complete 'p TWENTY_THREE'"}
+ timeout { fail "(timeout) complete 'p TWENTY_THREE'" }
}
- -re ".*$gdb_prompt $" { fail "complete 'p TWENTY_THREE'"}
- timeout { fail "(timeout) complete 'p TWENTY_THREE'" }
}
+ -re ".*$gdb_prompt $" { fail "complete 'p TWENTY_THREE'" }
+ timeout { fail "(timeout) complete 'p TWENTY_THREE' 2" }
}
- -re ".*$gdb_prompt $" { fail "complete 'p TWENTY_THREE'" }
- timeout { fail "(timeout) complete 'p TWENTY_THREE' 2" }
}
# Splicing tests.
diff --git a/gdb/testsuite/gdb.base/readline-ask.exp b/gdb/testsuite/gdb.base/readline-ask.exp
index e15dcca..d0a349d 100644
--- a/gdb/testsuite/gdb.base/readline-ask.exp
+++ b/gdb/testsuite/gdb.base/readline-ask.exp
@@ -25,6 +25,11 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" object {debug}]
setenv INPUTRC $inputrc
clean_restart ${binfile}
+if { ![readline_is_used] } {
+ unsupported "completion doesn't work when readline isn't used."
+ return -1
+}
+
gdb_test_no_output "set width 50"
gdb_test_no_output "set height 3"
diff --git a/gdb/testsuite/gdb.base/readline.exp b/gdb/testsuite/gdb.base/readline.exp
index 3c7d4c1..ef7fa13 100644
--- a/gdb/testsuite/gdb.base/readline.exp
+++ b/gdb/testsuite/gdb.base/readline.exp
@@ -145,6 +145,11 @@ proc operate_and_get_next {name args} {
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
+if { ![readline_is_used] } {
+ unsupported "readline isn't used."
+ return -1
+}
+
set oldtimeout1 $timeout
set timeout 30
diff --git a/gdb/testsuite/gdb.python/py-cmd.exp b/gdb/testsuite/gdb.python/py-cmd.exp
index c48c8bf..a87aecb 100644
--- a/gdb/testsuite/gdb.python/py-cmd.exp
+++ b/gdb/testsuite/gdb.python/py-cmd.exp
@@ -177,14 +177,16 @@ gdb_test "complete expr_test bar\." \
"expr_test bar\.bc.*expr_test bar\.ij.*" \
"Test completion through complete command"
-set test "complete 'expr_test bar.i'"
-send_gdb "expr_test bar\.i\t\t"
-gdb_test_multiple "" "$test" {
- -re "expr_test bar\.ij \\\x07$" {
- send_gdb "\n"
- gdb_test_multiple "" $test {
- -re "invoked on = bar.ij.*$gdb_prompt $" {
- pass "$test"
+if { [readline_is_used] } {
+ set test "complete 'expr_test bar.i'"
+ send_gdb "expr_test bar\.i\t\t"
+ gdb_test_multiple "" "$test" {
+ -re "expr_test bar\.ij \\\x07$" {
+ send_gdb "\n"
+ gdb_test_multiple "" $test {
+ -re "invoked on = bar.ij.*$gdb_prompt $" {
+ pass "$test"
+ }
}
}
}
diff --git a/gdb/testsuite/gdb.trace/tfile.exp b/gdb/testsuite/gdb.trace/tfile.exp
index 634c2fc..c98e64c 100644
--- a/gdb/testsuite/gdb.trace/tfile.exp
+++ b/gdb/testsuite/gdb.trace/tfile.exp
@@ -148,6 +148,8 @@ gdb_test "interpreter-exec mi \"-trace-status\"" \
# Test completion works well.
-gdb_test "target tfile [file rootname $tfile_basic]\t" \
- "Assuming tracepoint.*" \
- "complete-command 'target tfile'"
+if { [readline_is_used] } {
+ gdb_test "target tfile [file rootname $tfile_basic]\t" \
+ "Assuming tracepoint.*" \
+ "complete-command 'target tfile'"
+}
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 61e476b..0db3c90 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -1831,6 +1831,21 @@ proc supports_reverse {} {
return 0
}
+# Return 1 if readline library is used.
+
+proc readline_is_used { } {
+ global gdb_prompt
+
+ gdb_test_multiple "show editing" "" {
+ -re ".*Editing of command lines as they are typed is on\..*$gdb_prompt $" {
+ return 1
+ }
+ -re ".*$gdb_prompt $" {
+ return 0
+ }
+ }
+}
+
# Return 1 if target is ELF.
gdb_caching_proc is_elf_target {
set me "is_elf_target"
--
1.7.7.6
next prev parent reply other threads:[~2014-03-26 13:13 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-26 5:49 Yao Qi
2014-03-26 12:32 ` Joel Brobecker
2014-03-26 13:13 ` Yao Qi [this message]
2014-05-01 16:27 ` [PUSHED 0/2] Make local-remote-host.exp force pseudo-tty allocation; add local-remote-host-notty.exp Pedro Alves
2014-05-01 16:27 ` [PUSHED 2/2] New testsuite/boards/local-remote-host.exp board, now with editing on Pedro Alves
2014-05-02 11:28 ` Yao Qi
2014-05-01 16:27 ` [PUSHED 1/2] Rename testsuite/boards/local-remote-host.exp -> testsuite/boards/local-remote-host-notty.exp Pedro Alves
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=5332D1D1.20509@codesourcery.com \
--to=yao@codesourcery.com \
--cc=brobecker@adacore.com \
--cc=gdb-patches@sourceware.org \
/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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).