This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[pushed] [gdb/testsuite] Add -wrap pattern flag to gdb_test_multiple
- From: "Sourceware to Gerrit sync (Code Review)" <gerrit at gnutoolchain-gerrit dot osci dot io>
- To: Tom de Vries <tdevries at suse dot de>, gdb-patches at sourceware dot org
- Cc: Luis Machado <luis dot machado at linaro dot org>, Andrew Burgess <andrew dot burgess at embecosm dot com>
- Date: Thu, 24 Oct 2019 12:44:06 -0400
- Subject: [pushed] [gdb/testsuite] Add -wrap pattern flag to gdb_test_multiple
- Auto-submitted: auto-generated
- References: <gerrit.1571045169000.Ie42c97d5ab7acf6db351299ccd23a83540fe6e1a@gnutoolchain-gerrit.osci.io>
- Reply-to: noreply at gnutoolchain-gerrit dot osci dot io, tdevries at suse dot de, andrew dot burgess at embecosm dot com, luis dot machado at linaro dot org, gdb-patches at sourceware dot org
Sourceware to Gerrit sync has submitted this change.
Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/36
......................................................................
[gdb/testsuite] Add -wrap pattern flag to gdb_test_multiple
Currently, in order to rewrite:
...
gdb_test <command> <pattern> <message>
...
using gdb_test_multiple, we get:
...
gdb_test_multiple <command> <message> {
-re "\[\r\n\]*(?:<pattern>)\[\r\n\]+$gdb_prompt $" {
pass $gdb_test_name
}
}
...
Add a '-wrap pattern flag to gdb_test_multiple, that wraps the regexp
pattern as gdb_test wraps its message argument.
This allows us to rewrite into the more compact:
...
gdb_test_multiple <command> <message> {
-re -wrap <pattern> {
pass $gdb_test_name
}
}
...
Tested on x86_64-linux.
gdb/testsuite/ChangeLog:
2019-10-24 Tom de Vries <tdevries@suse.de>
* lib/gdb.exp (gdb_test_multiple): Add -wrap pattern flag.
* gdb.reverse/step-precsave.exp: Rewrite gdb_test_multiple containing
kfail using -wrap pattern flag and convenience variable
gdb_test_name.
Change-Id: Ie42c97d5ab7acf6db351299ccd23a83540fe6e1a
---
M gdb/testsuite/ChangeLog
M gdb/testsuite/gdb.reverse/step-precsave.exp
M gdb/testsuite/lib/gdb.exp
3 files changed, 38 insertions(+), 12 deletions(-)
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 12ef1fe..faee8e0 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2019-10-24 Tom de Vries <tdevries@suse.de>
+
+ * lib/gdb.exp (gdb_test_multiple): Add -wrap pattern flag.
+ * gdb.reverse/step-precsave.exp: Rewrite gdb_test_multiple containing
+ kfail using -wrap pattern flag and convenience variable
+ gdb_test_name.
+
2019-10-24 Andrew Burgess <andrew.burgess@embecosm.com>
* gdb.python/py-progspace.exp: Add tests for the
diff --git a/gdb/testsuite/gdb.reverse/step-precsave.exp b/gdb/testsuite/gdb.reverse/step-precsave.exp
index 72ee279..2cdceef 100644
--- a/gdb/testsuite/gdb.reverse/step-precsave.exp
+++ b/gdb/testsuite/gdb.reverse/step-precsave.exp
@@ -46,19 +46,15 @@
# This can take awhile.
with_timeout_factor 20 {
- set test "run to end of main"
- set pass_pattern "Breakpoint .* end of main .*"
- set kfail_pattern "Process record does not support instruction 0xc5 at.*"
- set kfail2_pattern "Process record does not support instruction 0xfae64 at.*"
- gdb_test_multiple "continue" $test {
- -re "\[\r\n\]*(?:$pass_pattern)\[\r\n\]+$gdb_prompt $" {
- pass $test
+ gdb_test_multiple "continue" "run to end of main" {
+ -re -wrap "Breakpoint .* end of main .*" {
+ pass $gdb_test_name
}
- -re "\[\r\n\]*(?:$kfail_pattern)\[\r\n\]+$gdb_prompt $" {
- kfail "record/23188" $test
+ -re -wrap "Process record does not support instruction 0xc5 at.*" {
+ kfail "record/23188" $gdb_test_name
}
- -re "\[\r\n\]*(?:$kfail2_pattern)\[\r\n\]+$gdb_prompt $" {
- kfail "record/25038" $test
+ -re -wrap "Process record does not support instruction 0xfae64 at.*" {
+ kfail "record/25038" $gdb_test_name
}
}
}
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index fed46ec..6770741 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -764,6 +764,17 @@
# expected from $gdb_spawn_id. IOW, callers do not need to worry
# about resetting "-i" back to $gdb_spawn_id explicitly.
#
+# In EXPECT_ARGUMENTS we can use a -wrap pattern flag, that wraps the regexp
+# pattern as gdb_test wraps its message argument.
+# This allows us to rewrite:
+# gdb_test <command> <pattern> <message>
+# into:
+# gdb_test_multiple <command> <message> {
+# -re -wrap <pattern> {
+# pass $gdb_test_name
+# }
+# }
+#
proc gdb_test_multiple { command message user_code { prompt_regexp "" } } {
global verbose use_gdb_stub
global gdb_prompt pagination_prompt
@@ -825,6 +836,7 @@
set patterns ""
set expecting_action 0
set expecting_arg 0
+ set wrap_pattern 0
foreach item $user_code subst_item $subst_code {
if { $item == "-n" || $item == "-notransfer" || $item == "-nocase" } {
lappend processed_code $item
@@ -839,6 +851,10 @@
lappend processed_code $item
continue
}
+ if { $item == "-wrap" } {
+ set wrap_pattern 1
+ continue
+ }
if { $expecting_arg } {
set expecting_arg 0
lappend processed_code $subst_item
@@ -852,7 +868,14 @@
continue
}
set expecting_action 1
- lappend processed_code $subst_item
+ if { $wrap_pattern } {
+ # Wrap subst_item as is done for the gdb_test PATTERN argument.
+ lappend processed_code \
+ "\[\r\n\]*(?:$subst_item)\[\r\n\]+$gdb_prompt $"
+ set wrap_pattern 0
+ } else {
+ lappend processed_code $subst_item
+ }
if {$patterns != ""} {
append patterns "; "
}
--
Gerrit-Project: binutils-gdb
Gerrit-Branch: master
Gerrit-Change-Id: Ie42c97d5ab7acf6db351299ccd23a83540fe6e1a
Gerrit-Change-Number: 36
Gerrit-PatchSet: 3
Gerrit-Owner: Tom de Vries <tdevries@suse.de>
Gerrit-Reviewer: Andrew Burgess <andrew.burgess@embecosm.com>
Gerrit-Reviewer: Luis Machado <luis.machado@linaro.org>
Gerrit-Reviewer: Tom de Vries <tdevries@suse.de>
Gerrit-MessageType: merged