diff options
-rw-r--r-- | gdb/testsuite/ChangeLog | 14 | ||||
-rw-r--r-- | gdb/testsuite/gdb.ada/complete.exp | 23 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/completion.exp | 121 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/filesym.exp | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/macscp.exp | 119 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/readline-ask.exp | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/readline.exp | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.python/py-cmd.exp | 18 | ||||
-rw-r--r-- | gdb/testsuite/gdb.trace/tfile.exp | 8 | ||||
-rw-r--r-- | 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 d51a847..8d9eea5 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" { @@ -672,63 +736,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 4a6f930..608fae0 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" |