From: Lancelot SIX via Gdb-patches <gdb-patches@sourceware.org>
To: Pedro Alves <pedro@palves.net>
Cc: gdb-patches@sourceware.org
Subject: Re: [PATCH 00/29] Remove DUPLICATEs from testsuite/gdb.base/*.exp
Date: Sat, 18 Dec 2021 00:39:39 +0000 [thread overview]
Message-ID: <20211218003939.tbizhc7qbuhyq5dr@Plymouth> (raw)
In-Reply-To: <6a859188-8e54-4053-6e20-d6e50091bbd5@palves.net>
> I reviewed all patches except patch #15 (gdb.base/complete-empty.exp). I left that for
> last as I think I'll need look a bit in more detail, but I ran out of time for now.
> I sent a few comments. Patches that I didn't comment on (other than #15) looks
> OK to me.
>
> Thanks a lot for doing this.
>
Hi,
I do not know if you have had a chance to look an #15, but I think
I have another approach you might prefer. Instead of going around the
testing framework in the testcase, it improves the completion testing
framework.
See below the alternative approach.
Let me know what you think.
Best,
Lancelot.
---
From d62890e28d1492248649365946b931886192da76 Mon Sep 17 00:00:00 2001
From: Lancelot SIX <lsix@lancelotsix.com>
Date: Sat, 20 Nov 2021 23:20:23 +0000
Subject: [PATCH] gdb: completion-support.exp: improve leading whitespace
support
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
There is a expect support library in the source tree designed to help
developers test the auto-completion capabilities of GDB.
One of the functions is test_gdb_complete_unique_re. It is used
(usually indirectly via test_gdb_complete_unique) to test that a given
input line is completed as a given output line. The test checks for two
ways to do the completion: using tab-completion, or using the
'complete' command. To do this, calls to two dedicated functions are
performed. If we omit few details, we can consider that a call to
test_gdb_complete_unique $input $expected
is equivalent to the two following calls:
test_gdb_complete_tab_unique $input $expected
test_gdb_complete_cmd_unique $input $expected
When using the tab-completion, everything works as expected, but some
care must be taken when using the 'complete' command if the given input
has leading whitespaces. In such situation, the output of the
'complete' command will drop the leading whitespaces.
The current approach is that in such situation, the input and expected
outputs are right trimmed (i.e. all leading whitespaces are removed)
when performing the command completion check.
This means that the following call:
test_gdb_complete_unique " $input" " $expected"
is almost equivalent to (again, omitting few details and arguments):
test_gdb_complete_tab_unique " $input" " $expected"
test_gdb_complete_cmd_unique "$input" "$expected"
This approach comes with a problem that we encounter when running the
tests in complete-empty.exp. When doing so, we have:
Running .../gdb/testsuite/gdb.base/complete-empty.exp ...
DUPLICATE: gdb.base/complete-empty.exp: empty-input-line: cmd complete ""
This is because the test file does something like:
test_gdb_complete_unique "" "!" " " 1
test_gdb_complete_unique " " " !" " " 1¬
which, if we do the substitution introduced above is equivalent to:
test_gdb_complete_tab_unique "" "!"
test_gdb_complete_cmd_unique "" "!"
test_gdb_complete_tab_unique " " " !"
test_gdb_complete_cmd_unique "" "!"
We see that the lines 2 and 4 are now the same, and for this reason the
testing framework complains about DUPLICATE test names.
To fix that, this commit proposes that instead of left trimming both
input and expected outputs, only the expected output is trimmed.
Care must be taken in the case the completion gives more possibilities
than allowed by the max-completions setting. In this case, the input
will be repeated in the output in its left trimmed version. This commit
also ensures that this is taken care of.
With this commit, the gdb.base/complete-empty.exp still passes all its
tests but does not report the DUPLICATE anymore.
Tested on x86_64-linux.
---
gdb/testsuite/lib/completion-support.exp | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/gdb/testsuite/lib/completion-support.exp b/gdb/testsuite/lib/completion-support.exp
index ddd3921977b..706ecdcb923 100644
--- a/gdb/testsuite/lib/completion-support.exp
+++ b/gdb/testsuite/lib/completion-support.exp
@@ -254,10 +254,8 @@ proc test_gdb_complete_unique_re { input_line complete_line_re {append_char " "}
}
}
- # Trim INPUT_LINE and COMPLETE LINE, for the case we're completing
- # a command with leading whitespace. Leading command whitespace
- # is discarded by GDB.
- set input_line [string trimleft $input_line]
+ # Trim COMPLETE LINE, for the case we're completing a command with leading
+ # whitespace. Leading command whitespace is discarded by GDB.
set expected_output_re [string trimleft $complete_line_re]
if {$append_char_re != " "} {
append expected_output_re $append_char_re
@@ -266,7 +264,7 @@ proc test_gdb_complete_unique_re { input_line complete_line_re {append_char " "}
set max_completion_reached_msg \
"*** List may be truncated, max-completions reached. ***"
set input_line_re \
- [string_to_regexp $input_line]
+ [string_to_regexp [string trimleft $input_line]]
set max_completion_reached_msg_re \
[string_to_regexp $max_completion_reached_msg]
--
2.34.0
next prev parent reply other threads:[~2021-12-18 0:40 UTC|newest]
Thread overview: 74+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-11-21 17:56 Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 01/29] gdb/testsuite: Remove duplicates from gdb.base/stack-checking.exp Lancelot SIX via Gdb-patches
2022-01-04 13:59 ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 02/29] gdb/testsuite: Remove duplicates from gdb.base/miscexprs.exp Lancelot SIX via Gdb-patches
2021-12-10 22:06 ` Pedro Alves
2021-12-14 23:28 ` Lancelot SIX via Gdb-patches
2021-12-15 11:52 ` Pedro Alves
2022-01-04 14:00 ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 03/29] gdb/testsuite: Remove duplicates from gdb.base/interp.exp Lancelot SIX via Gdb-patches
2021-11-22 14:13 ` Pedro Alves
2021-11-22 17:33 ` Lancelot SIX via Gdb-patches
2021-12-10 22:01 ` Pedro Alves
2021-11-21 17:56 ` [PATCH 04/29] gdb/testsuite: Remove duplicates from gdb.base/realname-expand.exp Lancelot SIX via Gdb-patches
2022-01-04 14:06 ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 05/29] gdb/testsuite: Remove duplicates from gdb.base/pie-fork.exp Lancelot SIX via Gdb-patches
2022-01-04 14:07 ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 06/29] gdb/testsuite: Remove duplicates from gdb.base/checkpoint.exp Lancelot SIX via Gdb-patches
2022-01-04 14:11 ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 07/29] gdb/testsuite: Remove duplicates from gdb.base/pending.exp Lancelot SIX via Gdb-patches
2022-01-04 14:12 ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 08/29] gdb/testsuite: Remove duplicates from gdb.base/decl-before-def.exp Lancelot SIX via Gdb-patches
2022-01-04 14:13 ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 09/29] gdb/testsuite: Remove duplicates from gdb.base/solib-display.exp Lancelot SIX via Gdb-patches
2022-01-04 14:17 ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 10/29] gdb/testsuite: Remove duplicates from gdb.base/del.exp Lancelot SIX via Gdb-patches
2022-01-04 14:20 ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 11/29] gdb/testsuite: Remove duplicates from gdb.base/dfp-test.exp Lancelot SIX via Gdb-patches
2022-01-04 14:26 ` Andrew Burgess via Gdb-patches
2022-01-05 22:03 ` Lancelot SIX via Gdb-patches
2022-01-06 9:34 ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 12/29] gdb/testsuite: Remove duplicates from gdb.base/ptype.exp Lancelot SIX via Gdb-patches
2022-01-04 15:13 ` Andrew Burgess via Gdb-patches
2021-11-21 17:56 ` [PATCH 13/29] gdb/testsuite: Remove duplicates from gdb.base/dfp-exprs.exp Lancelot SIX via Gdb-patches
2021-12-10 23:03 ` Pedro Alves
2021-12-15 0:01 ` Lancelot SIX via Gdb-patches
2021-12-15 11:54 ` Pedro Alves
2021-11-21 17:56 ` [PATCH 14/29] gdb/testsuite: Remove duplicates from gdb.base/subst.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 15/29] gdb/testsuite: Remove duplicates from gdb.base/complete-empty.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 16/29] gdb/testsuite: Remove duplicates from gdb.base/ui-redirect.exp Lancelot SIX via Gdb-patches
2021-12-10 23:15 ` Pedro Alves
2021-12-15 0:26 ` Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 17/29] gdb/testsuite: Remove duplicates from gdb.base/pretty-array.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 18/29] gdb/testsuite: Remove duplicates from gdb.base/readline.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 19/29] gdb/testsuite: Remove duplicates from gdb.base/exprs.exp Lancelot SIX via Gdb-patches
2021-12-10 23:15 ` Pedro Alves
2021-12-15 0:21 ` Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 20/29] gdb/testsuite: Remove duplicates from gdb.base/set-cfd.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 21/29] gdb/testsuite: Remove duplicates from gdb.base/shlib-call.exp Lancelot SIX via Gdb-patches
2021-12-10 23:24 ` Pedro Alves
2021-12-16 22:57 ` Lancelot SIX via Gdb-patches
2021-12-17 11:58 ` Pedro Alves
2021-11-21 17:56 ` [PATCH 22/29] gdb/testsuite: Remove duplicates from gdb.base/funcargs.exp Lancelot SIX via Gdb-patches
2021-12-10 23:26 ` Pedro Alves
2021-12-16 23:08 ` Lancelot SIX via Gdb-patches
2021-12-17 12:00 ` Pedro Alves
2021-11-21 17:56 ` [PATCH 23/29] gdb/testsuite: Remove duplicates from gdb.base/define-prefix.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 24/29] gdb/testsuite: Remove duplicates from gdb.base/unload.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 25/29] gdb/testsuite: Remove duplicates from gdb.base/pointers.exp Lancelot SIX via Gdb-patches
2021-12-10 23:27 ` Pedro Alves
2021-12-16 23:14 ` Lancelot SIX via Gdb-patches
2021-12-17 12:18 ` Pedro Alves
2021-12-17 23:14 ` Lancelot SIX via Gdb-patches
2022-01-05 16:05 ` Pedro Alves
2021-11-21 17:56 ` [PATCH 26/29] gdb/testsuite: Remove duplicates from gdb.base/call-signal-resume.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 27/29] gdb/testsuite: Remove duplicates from gdb.base/nested-subp2.exp Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 28/29] gdb/testsuite: Remove duplicates from gdb.base/watchpoints.exp Lancelot SIX via Gdb-patches
2021-12-10 23:30 ` Pedro Alves
2021-12-16 23:15 ` Lancelot SIX via Gdb-patches
2021-11-21 17:56 ` [PATCH 29/29] gdb/testsuite: Remove duplicates from gdb.base/corefile-buildid.exp Lancelot SIX via Gdb-patches
2021-12-10 23:38 ` Pedro Alves
2021-12-10 23:40 ` [PATCH 00/29] Remove DUPLICATEs from testsuite/gdb.base/*.exp Pedro Alves
2021-12-18 0:39 ` Lancelot SIX via Gdb-patches [this message]
2022-01-05 16:23 ` Pedro Alves
2022-01-07 22:36 ` Lancelot SIX 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=20211218003939.tbizhc7qbuhyq5dr@Plymouth \
--to=gdb-patches@sourceware.org \
--cc=lsix@lancelotsix.com \
--cc=pedro@palves.net \
/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