Catch exceptions from StringMakers inside Detail::stringify

This stops tests failing falsely if the assertion passed, but the
stringification itself failed as the assertion was sent to the reporter.

I don't think that stringification should be fallible, but the
overhead in compilation ended up being small enough (<0.5% on `SelfTest`)
that it might be worth implementing, in case there is more users
with weird `StringMaker`s than just MongoDB.

Closes #2980
This commit is contained in:
Martin Hořeňovský
2025-08-01 23:23:34 +02:00
parent 17fe5eaa5c
commit c5e0ef4e67
20 changed files with 129 additions and 20 deletions

View File

@@ -11789,6 +11789,19 @@ String.tests.cpp:<line number>: PASSED:
with message:
sr2.size() == 0
-------------------------------------------------------------------------------
Stringifying bla bla bla
-------------------------------------------------------------------------------
ToString.tests.cpp:<line number>
...............................................................................
ToString.tests.cpp:<line number>: PASSED:
CHECK( tos == tos )
with expansion:
{ stringification failed with an exception: "Invalid" }
==
{ stringification failed with an exception: "Invalid" }
-------------------------------------------------------------------------------
Stringifying char arrays with statically known sizes - char
-------------------------------------------------------------------------------
@@ -19213,6 +19226,6 @@ Misc.tests.cpp:<line number>
Misc.tests.cpp:<line number>: PASSED:
===============================================================================
test cases: 433 | 315 passed | 95 failed | 6 skipped | 17 failed as expected
assertions: 2291 | 2093 passed | 157 failed | 41 failed as expected
test cases: 434 | 316 passed | 95 failed | 6 skipped | 17 failed as expected
assertions: 2292 | 2094 passed | 157 failed | 41 failed as expected