aboutsummaryrefslogtreecommitdiff
path: root/gdbsupport
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@efficios.com>2023-11-03 11:51:37 -0400
committerSimon Marchi <simon.marchi@efficios.com>2023-11-03 14:25:59 -0400
commitdbbfabb441556497f3ee9d89cf74bdc4a7a4c83c (patch)
tree18ff359d16234e6823b471bfd6950f3943767f19 /gdbsupport
parent88bfe6ac8bcbaf1eb0c1e4be02c21a5c048b7335 (diff)
downloadfsf-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.cc19
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. */