Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Bruno Larsen via Gdb-patches <gdb-patches@sourceware.org>
To: gdb-patches@sourceware.org
Cc: Bruno Larsen <blarsen@redhat.com>
Subject: [PATCH] gdb/testsuite: Improve testing of GDB's completion functions
Date: Wed, 22 Feb 2023 10:11:10 +0100	[thread overview]
Message-ID: <20230222091110.2995513-1-blarsen@redhat.com> (raw)

When looking at some failures of gdb.linespec/cp-completion-aliases.exp,
I noticed that when a completion test will fail, it always fails with a
timeout.  This is because most completion tests use gdb_test_multiple
and only add a check for the correct output.  This commit adds new
options for both, tab and command completion.

For command completion, the new option will check if the prompt was
printed, and fail in this case. This is enough to know that the test has
failed because the check comes after the PASS path. For tab completion,
we have to check if GDB outputted more than just the input line, because
sometimes GDB would have printed a partial line before finishing with
the correct completion.
---
 gdb/testsuite/lib/completion-support.exp | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/gdb/testsuite/lib/completion-support.exp b/gdb/testsuite/lib/completion-support.exp
index bf9c5ad352c..275f8874f15 100644
--- a/gdb/testsuite/lib/completion-support.exp
+++ b/gdb/testsuite/lib/completion-support.exp
@@ -94,6 +94,9 @@ proc test_gdb_complete_tab_none { line } {
 	-re "^$line_re$completion::bell_re$" {
 	    pass "$test"
 	}
+	-re "$line_re\[^ \]+ $" {
+	    fail "$test"
+	}
     }
 
     clear_input_line $test
@@ -108,11 +111,15 @@ proc test_gdb_complete_tab_unique { input_line complete_line_re append_char_re }
 
     set test "tab complete \"$input_line\""
     send_gdb "$input_line\t"
+    set partial_complete [string_to_regexp $input_line]
     set res 1
     gdb_test_multiple "" "$test" {
 	-re "^$complete_line_re$append_char_re$" {
 	    pass "$test"
 	}
+	-re "$partial_complete\[^ \]+ $" {
+	    fail "$test"
+	}
 	timeout {
 	    fail "$test (timeout)"
 	    set res -1
@@ -164,6 +171,9 @@ proc test_gdb_complete_tab_multiple { input_line add_completed_line \
 			}
 		    }
 		}
+		-re "${maybe_bell}\r\n.+\r\n$gdb_prompt $" {
+		    fail "$test"
+		}
 	    }
 	}
     }
@@ -191,6 +201,9 @@ proc test_gdb_complete_cmd_unique { input_line complete_line_re } {
 	-re "^$cmd_re\r\n$complete_line_re\r\n$gdb_prompt $" {
 	    pass $test
 	}
+	-re "$gdb_prompt $" {
+	    fail "$test"
+	}
     }
 }
 
@@ -217,6 +230,9 @@ proc test_gdb_complete_cmd_multiple { cmd_prefix completion_word completion_list
 	-re "^$cmd_re\r\n$expected_re$gdb_prompt $" {
 	    pass $test
 	}
+	-re "$gdb_prompt $" {
+	    fail "$test"
+	}
     }
 }
 
-- 
2.39.1


             reply	other threads:[~2023-02-22  9:11 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-22  9:11 Bruno Larsen via Gdb-patches [this message]
2023-02-24 19:06 ` Tom Tromey
2023-02-27 10:03   ` Bruno Larsen via Gdb-patches
2023-07-15 12:13 ` Tom de Vries via Gdb-patches
2023-07-25 15:40   ` Bruno Larsen via Gdb-patches
2023-08-15  5:45     ` Tom de Vries via Gdb-patches
2023-08-15  7:05       ` Guinevere Larsen via Gdb-patches

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=20230222091110.2995513-1-blarsen@redhat.com \
    --to=gdb-patches@sourceware.org \
    --cc=blarsen@redhat.com \
    /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