diff options
author | Jim Blandy <jimb@codesourcery.com> | 2001-12-17 22:58:42 +0000 |
---|---|---|
committer | Jim Blandy <jimb@codesourcery.com> | 2001-12-17 22:58:42 +0000 |
commit | 0eba65ab187e6d8ffd41a688c53336c1847fd3d6 (patch) | |
tree | d4c3f45bdd9d443d36783f0b160ca945d31092d8 /gdb/testsuite/gdb.base/completion.exp | |
parent | ed4de5e2e022526c1d1294cefd2e3c1973d06c39 (diff) | |
download | binutils-gdb-0eba65ab187e6d8ffd41a688c53336c1847fd3d6.tar.gz |
* gdb.base/completion.exp: Rather than completing very long
filenames, which can make the readline library produce output we
don't recognize, cd to the directory first, and then complete
using nice, short relative paths.
Diffstat (limited to 'gdb/testsuite/gdb.base/completion.exp')
-rw-r--r-- | gdb/testsuite/gdb.base/completion.exp | 60 |
1 files changed, 42 insertions, 18 deletions
diff --git a/gdb/testsuite/gdb.base/completion.exp b/gdb/testsuite/gdb.base/completion.exp index bb2d2467bdf..e8069d33871 100644 --- a/gdb/testsuite/gdb.base/completion.exp +++ b/gdb/testsuite/gdb.base/completion.exp @@ -610,34 +610,58 @@ gdb_expect { timeout { fail "(timeout) complete (2) 'p no_var_named_this-'" } } -send_gdb "file ${objdir}/Make\t" + +# The following tests used to simply try to complete `${objdir}/Make', +# and so on. The problem is that ${objdir} can be very long; the +# completed filename may be more than eighty characters wide. When +# this happens, readline tries to manage things, producing output that +# may make sense on the screen, but is rather hard for our script to +# recognize. +# +# In the case that motivated this change, the (gdb) prompt occupied +# the leftmost six columns, and `${objdump}/' was seventy-four +# characters long --- eighty in all. After printing the slash, +# readline emitted a space, a carriage return, and then `Makefile' +# (the tab character being received as input after `Make'. +# +# Basically, you have to let readline do whatever it's going to do to +# make the screen look right. If it happens to use a different +# strategy on Tuesdays to get the cursor in the right place, that's +# not something the testsuite should care about. +# +# So, we avoid long lines. We `cd' to ${objdir} first, and then do +# the completion relative to the current directory. + +gdb_test "cd ${objdir}" "Working directory ${objdir}.*" "cd to \${objdir}" +send_gdb "file ./Make\t" sleep 1 gdb_expect { - -re "file ${objdir}/Makefile.*$"\ + -re "file ./Makefile.*$"\ { send_gdb "\n" gdb_expect { -re "\r\nA program is being debugged already\\. Kill it\\? \\(y or n\\) $"\ { send_gdb "n\n" gdb_expect { -re "\r\nProgram not killed\\.\r\n$gdb_prompt $"\ - { pass "complete 'file Make'"} - -re ".*$gdb_prompt $" { fail "complete 'file Make'"} - timeout {fail "(timeout) complete 'file Make'"} + { pass "complete 'file ./Make'"} + -re ".*$gdb_prompt $" { fail "complete 'file ./Make'"} + timeout {fail "(timeout) complete 'file ./Make'"} } } - -re ".*$gdb_prompt $" { fail "complete 'file Make'"} - timeout {fail "(timeout) complete 'file Make'"} + -re ".*$gdb_prompt $" { fail "complete 'file ./Make'"} + timeout {fail "(timeout) complete 'file ./Make'"} } } - -re ".*$gdb_prompt $" { fail "complete 'file Make'" } - timeout { fail "(timeout) complete 'file Make'" } + -re ".*$gdb_prompt $" { fail "complete 'file ./Make'" } + timeout { fail "(timeout) complete 'file ./Make'" } } -send_gdb "file ${srcdir}/gdb.base/compl\t" +gdb_test "cd ${srcdir}" "Working directory ${srcdir}.*" "cd to \${srcdir}" +send_gdb "file ./gdb.base/compl\t" sleep 1 gdb_expect { - -re "^file ${srcdir}/gdb.base/completion\\.exp $"\ + -re "^file ./gdb.base/completion\\.exp $"\ { send_gdb "\n" gdb_expect { -re "\r\nA program is being debugged already\\. Kill it\\? \\(y or n\\) $" @@ -645,17 +669,17 @@ gdb_expect { { send_gdb "n\n" gdb_expect { -re "\r\nProgram not killed\\.\r\n$gdb_prompt $"\ - { pass "complete 'file gdb.base/compl'"} - -re ".*$gdb_prompt $" { fail "complete 'file gdb.base/compl'"} - timeout {fail "(timeout) complete 'file gdb.base/compl'"} + { pass "complete 'file ./gdb.base/compl'"} + -re ".*$gdb_prompt $" { fail "complete 'file ./gdb.base/compl'"} + timeout {fail "(timeout) complete 'file ./gdb.base/compl'"} } } - -re ".*$gdb_prompt $" { fail "complete 'file gdb.base/compl'"} - timeout {fail "(timeout) complete 'file gdb.base/compl'"} + -re ".*$gdb_prompt $" { fail "complete 'file ./gdb.base/compl'"} + timeout {fail "(timeout) complete 'file ./gdb.base/compl'"} } } - -re ".*$gdb_prompt $" { fail "complete 'file gdb.base/compl'" } - timeout { fail "(timeout) complete 'file gdb.base/compl'" } + -re ".*$gdb_prompt $" { fail "complete 'file ./gdb.base/compl'" } + timeout { fail "(timeout) complete 'file ./gdb.base/compl'" } } send_gdb "info func mark\t" |