This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[RFC] Fixing gdb.base/completion.exp (PR testsuite/12649)
- From: Marek Polacek <mpolacek at redhat dot com>
- To: "gdb-patches at sourceware dot org" <gdb-patches at sourceware dot org>
- Date: Wed, 27 Apr 2011 16:58:46 +0200
- Subject: [RFC] Fixing gdb.base/completion.exp (PR testsuite/12649)
Hi!
I am now trying to get rid of racy cases in gdb.base/completion.exp. The
first thing to do is to make use of `complete' rather than of '\t'. The '\t's
do not work well with char-wise read1() and thus they're occasionally causing
problems. The next thing to do is to remove ubiquitous `sleep's, which are racy
themselves and also make this test quite slow (with read1() this test takes
~8 minutes (!), with normal read() about 35 seconds).
This test basically comprises of chunks like this:
send_gdb "show output\t"
sleep 1
gdb_expect {
-re "^show output-radix $"\
{ send_gdb "\n"
gdb_expect {
-re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\
{ pass "complete 'show output'"}
-re ".*$gdb_prompt $" { fail "complete 'show output'"}
timeout {fail "(timeout) complete 'show output'"}
}
}
-re "^show output$"\
{ send_gdb "\n"
gdb_expect {
-re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\
{ fail "1complete 'show output'"}
-re ".*$gdb_prompt $" { fail "2complete 'show output'"}
timeout { fail "(timeout) complete 'show output'"}
}
}
-re ".*$gdb_prompt $" { fail "3complete 'show output'" }
timeout { fail "(timeout) complete 'show output'" }
}
I think this whole shenanigans is not necessary iff we are interested
only in testing that the _completion_ works. If you look at it, this chunk
has only one `pass'. What if we could replace this all with only one line like
the following?
gdb_test "complete show output" "show output-radix" "complete 'show output'"
Thus, my point is that we could replace those "send_gdb + sleep + gdb_expect"
sequences with just one gdb_test{,multiple,no_output}. I don't know yet if this
transformation is possible for every test in the completion.exp file.
Maybe the changes would be quite dramatical. However, this test would be _much_
simpler and much faster. Also, the current formatting is ugly ;).
So, do you think this is a good idea? Is there something I'm missing?
Thanks.
Marek