public inbox for gdb-cvs@sourceware.org help / color / mirror / Atom feed
From: Pedro Alves <palves@sourceware.org> To: gdb-cvs@sourceware.org Subject: [binutils-gdb] lib/completion-support.exp: Add test_gdb_completion_offers_commands Date: Wed, 12 Jun 2019 23:29:00 -0000 [thread overview] Message-ID: <20190612232931.31983.qmail@sourceware.org> (raw) https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=e2a689da55d3feb7b79a141f69c4049112f59c91 commit e2a689da55d3feb7b79a141f69c4049112f59c91 Author: Pedro Alves <palves@redhat.com> Date: Thu Jun 13 00:06:53 2019 +0100 lib/completion-support.exp: Add test_gdb_completion_offers_commands This adds a procedure to the collection of completion-testing routines, that allows checking whether completion offers all commands as completion candidates. This will be used for testing completing "frame apply all [TAB]", "thread apply all [TAB]", etc. gdb/testsuite/ChangeLog: 2019-06-13 Pedro Alves <palves@redhat.com> * lib/completion-support.exp (test_gdb_complete_tab_multiple) (test_gdb_complete_cmd_multiple, test_gdb_complete_multiple): Add 'max_completions' parameter and handle it. (test_gdb_completion_offers_commands): New. Diff: --- gdb/testsuite/ChangeLog | 7 ++++ gdb/testsuite/lib/completion-support.exp | 66 +++++++++++++++++++++++++++----- 2 files changed, 64 insertions(+), 9 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index d2063f2..d550142 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,5 +1,12 @@ 2019-06-13 Pedro Alves <palves@redhat.com> + * lib/completion-support.exp (test_gdb_complete_tab_multiple) + (test_gdb_complete_cmd_multiple, test_gdb_complete_multiple): Add + 'max_completions' parameter and handle it. + (test_gdb_completion_offers_commands): New. + +2019-06-13 Pedro Alves <palves@redhat.com> + * gdb.base/options.exp (test-backtrace): Test completing qualifiers. 2019-06-13 Pedro Alves <palves@redhat.com> diff --git a/gdb/testsuite/lib/completion-support.exp b/gdb/testsuite/lib/completion-support.exp index 3e498d3..97fed18 100644 --- a/gdb/testsuite/lib/completion-support.exp +++ b/gdb/testsuite/lib/completion-support.exp @@ -119,10 +119,11 @@ proc test_gdb_complete_tab_unique { input_line complete_line_re append_char_re } # Test that completing INPUT_LINE with TAB completes to "INPUT_LINE + # ADD_COMPLETED_LINE" and that it displays the completion matches in -# COMPLETION_LIST. +# COMPLETION_LIST. If MAX_COMPLETIONS then we expect the completion +# to hit the max-completions limit. proc test_gdb_complete_tab_multiple { input_line add_completed_line \ - completion_list } { + completion_list {max_completions 0}} { global gdb_prompt set input_line_re [string_to_regexp $input_line] @@ -130,6 +131,12 @@ proc test_gdb_complete_tab_multiple { input_line add_completed_line \ set expected_re [make_tab_completion_list_re $completion_list] + if {$max_completions} { + append expected_re "\r\n" + append expected_re \ + "\\*\\*\\* List may be truncated, max-completions reached\\. \\*\\*\\*" + } + set test "tab complete \"$input_line\"" send_gdb "$input_line\t" gdb_test_multiple "" "$test (first tab)" { @@ -179,12 +186,20 @@ proc test_gdb_complete_cmd_unique { input_line complete_line_re } { # Test that completing "CMD_PREFIX + COMPLETION_WORD" with the # complete command displays the COMPLETION_LIST completion list. Each -# entry in the list should be prefixed by CMD_PREFIX. +# entry in the list should be prefixed by CMD_PREFIX. If +# MAX_COMPLETIONS then we expect the completion to hit the +# max-completions limit. -proc test_gdb_complete_cmd_multiple { cmd_prefix completion_word completion_list {start_quote_char ""} {end_quote_char ""} } { +proc test_gdb_complete_cmd_multiple { cmd_prefix completion_word completion_list {start_quote_char ""} {end_quote_char ""} {max_completions 0}} { global gdb_prompt set expected_re [make_cmd_completion_list_re $cmd_prefix $completion_list $start_quote_char $end_quote_char] + + if {$max_completions} { + append expected_re \ + "$cmd_prefix \\*\\*\\* List may be truncated, max-completions reached\\. \\*\\*\\*.*\r\n" + } + set cmd_re [string_to_regexp "complete $cmd_prefix$completion_word"] set test "cmd complete \"$cmd_prefix$completion_word\"" gdb_test_multiple "complete $cmd_prefix$completion_word" $test { @@ -255,11 +270,15 @@ proc test_gdb_complete_unique { input_line complete_line {append_char " "} {max_ # Test that completing "CMD_PREFIX + COMPLETION_WORD" adds # ADD_COMPLETED_LINE to the input line, and that it displays # COMPLETION_LIST as completion match list. COMPLETION_WORD is the -# completion word. - -proc test_gdb_complete_multiple { cmd_prefix completion_word add_completed_line completion_list {start_quote_char ""} {end_quote_char ""}} { - test_gdb_complete_tab_multiple "$cmd_prefix$completion_word" $add_completed_line $completion_list - test_gdb_complete_cmd_multiple $cmd_prefix $completion_word $completion_list $start_quote_char $end_quote_char +# completion word. If MAX_COMPLETIONS then we expect the completion +# to hit the max-completions limit. + +proc test_gdb_complete_multiple { + cmd_prefix completion_word add_completed_line completion_list + {start_quote_char ""} {end_quote_char ""} {max_completions 0} +} { + test_gdb_complete_tab_multiple "$cmd_prefix$completion_word" $add_completed_line $completion_list $max_completions + test_gdb_complete_cmd_multiple $cmd_prefix $completion_word $completion_list $start_quote_char $end_quote_char $max_completions } # Test that all the substring prefixes of INPUT from [0..START) to @@ -481,3 +500,32 @@ proc foreach_location_labels { sources functions labels body_linespec body_expli } } } + +# Check that completion of INPUT_LINE results in GDB completing on all +# command names. +proc test_gdb_completion_offers_commands {input_line} { + global gdb_prompt + + # There are two many commands to usefully check here. So we force + # max-completions to 2, and check if those 2 come out. + + # Save current max-completions. + set max_completions 0 + set test "show max-completions" + gdb_test_multiple $test $test { + -re "Maximum number of completion candidates is (.*)\\.\r\n$gdb_prompt $" { + set max_completions $expect_out(1,string) + } + } + + # Force showing two commands. + gdb_test_no_output "set max-completions 2" "" + + test_gdb_complete_multiple $input_line "" "" { + "!" + "+" + } "" "" 1 + + # Restore. + gdb_test_no_output "set max-completions $max_completions" "" +}
reply other threads:[~2019-06-12 23:29 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=20190612232931.31983.qmail@sourceware.org \ --to=palves@sourceware.org \ --cc=gdb-cvs@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: linkBe 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).