diff options
author | Tom de Vries <tdevries@suse.de> | 2019-10-24 18:43:46 +0200 |
---|---|---|
committer | Tom de Vries <tdevries@suse.de> | 2019-10-24 18:43:46 +0200 |
commit | 4ccdfbec5028a56b9847ec2687b9139e1769ffc5 (patch) | |
tree | 9974d51badde0fcdaf15820d69e023316750c725 | |
parent | 33d569b709886a1208145806da80b689d9cae9da (diff) | |
download | gdb-4ccdfbec5028a56b9847ec2687b9139e1769ffc5.zip gdb-4ccdfbec5028a56b9847ec2687b9139e1769ffc5.tar.gz gdb-4ccdfbec5028a56b9847ec2687b9139e1769ffc5.tar.bz2 |
[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
-rw-r--r-- | gdb/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gdb/testsuite/gdb.reverse/step-precsave.exp | 18 | ||||
-rw-r--r-- | gdb/testsuite/lib/gdb.exp | 25 |
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 @@ gdb_test "break $end_of_main" \ # 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 @@ proc gdb_internal_error_resync {} { # 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 @@ proc gdb_test_multiple { command message user_code { prompt_regexp "" } } { 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 @@ proc gdb_test_multiple { command message user_code { prompt_regexp "" } } { 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 @@ proc gdb_test_multiple { command message user_code { prompt_regexp "" } } { 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 "; " } |