diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2023-11-03 11:51:37 -0400 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2023-11-03 14:25:59 -0400 |
commit | dbbfabb441556497f3ee9d89cf74bdc4a7a4c83c (patch) | |
tree | 18ff359d16234e6823b471bfd6950f3943767f19 /gdbsupport | |
parent | 88bfe6ac8bcbaf1eb0c1e4be02c21a5c048b7335 (diff) | |
download | fsf-binutils-gdb-dbbfabb441556497f3ee9d89cf74bdc4a7a4c83c.zip fsf-binutils-gdb-dbbfabb441556497f3ee9d89cf74bdc4a7a4c83c.tar.gz fsf-binutils-gdb-dbbfabb441556497f3ee9d89cf74bdc4a7a4c83c.tar.bz2 |
gdbsupport: record and print failed selftest names
Since "maint selftest" now runs quite a lot of tests (especially in an
all-targets build), I thought it would be useful to print a summary at
the end of what failed. So, implement that.
Print the summary before the "Ran %d unit tests, %zu failed\n" line, so
that that one remains the last line, and the gdb.gdb/unittest.exp
doesn't need to be changed.
The output looks like (if I force a failure in a test):
(gdb) maint selftest
...
Running selftest value_copy.
Running selftest xml_escape_text.
Running selftest xml_escape_text_append.
Failures:
aarch64-analyze-prologue
Ran 4134 unit tests, 1 failed
(gdb)
Change-Id: If3aaabdd6f8078d0e6e50e8d08f3e558ab85277e
Approved-By: Tom Tromey <tom@tromey.com>
Diffstat (limited to 'gdbsupport')
-rw-r--r-- | gdbsupport/selftest.cc | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/gdbsupport/selftest.cc b/gdbsupport/selftest.cc index c2e3936..15c5242 100644 --- a/gdbsupport/selftest.cc +++ b/gdbsupport/selftest.cc @@ -72,8 +72,9 @@ run_verbose () void run_tests (gdb::array_view<const char *const> filters, bool verbose) { - int ran = 0, failed = 0; + int ran = 0; run_verbose_ = verbose; + std::vector<const char *> failed; for (const auto &test : all_selftests ()) { @@ -101,15 +102,25 @@ run_tests (gdb::array_view<const char *const> filters, bool verbose) } catch (const gdb_exception_error &ex) { - ++failed; debug_printf ("Self test failed: %s\n", ex.what ()); + failed.push_back (test.name.c_str ()); } reset (); } - debug_printf (_("Ran %d unit tests, %d failed\n"), - ran, failed); + if (!failed.empty ()) + { + debug_printf ("\nFailures:\n"); + + for (const char *name : failed) + debug_printf (" %s\n", name); + + debug_printf ("\n"); + } + + debug_printf (_("Ran %d unit tests, %zu failed\n"), + ran, failed.size ()); } /* See selftest.h. */ |