[PATCH] gdb: allow specifying multiple filters when running selftests
Kevin Buettner
kevinb@redhat.com
Thu Aug 13 01:46:19 GMT 2020
On Wed, 12 Aug 2020 18:12:45 -0400
Simon Marchi via Gdb-patches <gdb-patches@sourceware.org> wrote:
> I found myself wanting to run a few specific selftests while developing.
> I thought it would be nice to be able to provide multiple test names
> when running `maintenant selftests`. The arguments to that command is
> currently interpreted as a single filter (not split by spaces), it now
> becomes a list a filters, split by spaces. A test is executed when it
> matches at least one filter.
>
> Here's an example of the result in GDB:
>
> (gdb) maintenance selftest xml
> Running selftest xml_escape_text.
> Running selftest xml_escape_text_append.
> Ran 2 unit tests, 0 failed
> (gdb) maintenance selftest xml unord
> Running selftest unordered_remove.
> Running selftest xml_escape_text.
> Running selftest xml_escape_text_append.
> Ran 3 unit tests, 0 failed
> (gdb) maintenance selftest xml unord foobar
> Running selftest unordered_remove.
> Running selftest xml_escape_text.
> Running selftest xml_escape_text_append.
> Ran 3 unit tests, 0 failed
>
> Since the selftest machinery is also shared with gdbserver, I also
> adapted gdbserver. It accepts a `--selftest` switch, which accepts an
> optional filter argument. I made it so you can now pass `--selftest`
> multiple time to add filters.
>
> It's not so useful right now though: there's only a single selftest
> right now in GDB and it's for an architecture I can't compile. So I
> tested by adding dummy tests, here's an example of the result:
>
> $ ./gdbserver --selftest=foo
> Running selftest foo.
> foo
> Running selftest foobar.
> foobar
> Ran 2 unit tests, 0 failed
> $ ./gdbserver --selftest=foo --selftest=bar
> Running selftest bar.
> bar
> Running selftest foo.
> foo
> Running selftest foobar.
> foobar
> Ran 3 unit tests, 0 failed
>
> gdbsupport/ChangeLog:
>
> * selftest.h (run_tests): Change parameter to array_view.
> * selftest.c (run_tests): Change parameter to array_view and use
> it.
>
> gdb/ChangeLog:
>
> * maint.c (maintenance_selftest): Split args and pass array_view
> to run_tests.
>
> gdbserver/ChangeLog:
>
> * server.cc (captured_main): Accept multiple `--selftest=`
> options. Pass all `--selftest=` arguments to run_tests.
LGTM.
Kevin
More information about the Gdb-patches
mailing list