[gdb/testsuite] Add string_list_to_regexp
authorTom de Vries <tdevries@suse.de>
Fri, 10 Sep 2021 15:16:48 +0000 (17:16 +0200)
committerTom de Vries <tdevries@suse.de>
Fri, 10 Sep 2021 15:16:48 +0000 (17:16 +0200)
commitca4987847046f288573278237673ded42a2dead8
tree5d1fed8166541752f297268b45e437b1258123da
parent49a9ec7f6a37117519aba9d3e31b1fe17a9dc029
[gdb/testsuite] Add string_list_to_regexp

A regexp pattern with escapes like this is hard to read:
...
set re "~\"\[$\]$decimal = 1\\\\n\"\r\n\\^done"
...

We can make it more readable by spacing out parts (which allows us to also use
the curly braces where that's convenient):
...
set re [list "~" {"} {[$]} $decimal " = 1" "\\\\" "n" {"} "\r\n" "\\^" "done"]
set re [join $re ""]
...
or by using string_to_regexp:
...
set re [list \
            [string_to_regexp {~"$}] \
            $decimal \
            [string_to_regexp " = 1\\n\"\r\n^done"]]
set re [join $re ""]
...
Note: we have to avoid applying string_to_list to decimal, which is already a
regexp.

Add a proc string_list_to_regexp to make it easy to do both:
...
set re [list \
            [string_list_to_regexp ~ {"} $] \
            $decimal \
            [string_list_to_regexp " = 1" \\ n {"} \r\n ^ done]]
...

Also add a test-case gdb.testsuite/string_to_regexp.exp.
gdb/testsuite/gdb.testsuite/string_to_regexp.exp [new file with mode: 0644]
gdb/testsuite/lib/gdb-utils.exp