Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMartin Hořeňovský2025-07-16 20:43:34 +0200
committerMartin Hořeňovský2025-07-17 11:27:03 +0200
commit0e8112a7625bc415ec20aac9a5a62243c7fbfb36 (patch)
tree684c4bab02c2714f196f33575b9bbdf4766323ce
parent9be81c0e05aedabbf1224ccb424ef0a628bcb9c8 (diff)
downloadcatch3-0e8112a7625bc415ec20aac9a5a62243c7fbfb36.tar.gz
Only track the last line info in RunContext
There were only two places where we used the full `AssertionInfo` instance in `m_lastAssertionInfo`: 1) when reporting unexpected exception from running a test case 2) when reporting fatal error because in those two places we do not have access to a real instance of `AssertionInfo`, but we still need to send one to the reporters. As a bonus, in both of these places we were already constructing a fake-ish assertion info, by using the last encountered source location, but dummying out the other information. Instead, we only keep track of the last encountered source location, and construct the dummy `AssertionInfo` on-demand. This finishes the set of refactoring around `m_lastAssertionInfo` in `RunContext` and improves the performance of running assertions by ~5% in both Debug and Release mode. -------------- Note that this change also causes small difference in output. It could be avoided by having an invalidation flag and tracking where the information would be invalidated before, but the difference includes more precise line location for unexpected errors (both exceptions and fatals), so I prefer the new output.
-rw-r--r--src/catch2/internal/catch_run_context.cpp54
-rw-r--r--src/catch2/internal/catch_run_context.hpp10
-rw-r--r--tests/SelfTest/Baselines/compact.sw.approved.txt6
-rw-r--r--tests/SelfTest/Baselines/compact.sw.multi.approved.txt6
-rw-r--r--tests/SelfTest/Baselines/console.std.approved.txt3
-rw-r--r--tests/SelfTest/Baselines/console.sw.approved.txt3
-rw-r--r--tests/SelfTest/Baselines/console.sw.multi.approved.txt3
-rw-r--r--tests/SelfTest/Baselines/console.swa4.approved.txt2
-rw-r--r--tests/SelfTest/Baselines/junit.sw.approved.txt9
-rw-r--r--tests/SelfTest/Baselines/junit.sw.multi.approved.txt9
-rw-r--r--tests/SelfTest/Baselines/sonarqube.sw.approved.txt9
-rw-r--r--tests/SelfTest/Baselines/sonarqube.sw.multi.approved.txt9
-rw-r--r--tests/SelfTest/Baselines/tap.sw.approved.txt6
-rw-r--r--tests/SelfTest/Baselines/tap.sw.multi.approved.txt6
-rw-r--r--tests/SelfTest/Baselines/teamcity.sw.approved.txt6
-rw-r--r--tests/SelfTest/Baselines/teamcity.sw.multi.approved.txt6
-rw-r--r--tests/SelfTest/Baselines/xml.sw.approved.txt42
-rw-r--r--tests/SelfTest/Baselines/xml.sw.multi.approved.txt42
18 files changed, 156 insertions, 75 deletions
diff --git a/src/catch2/internal/catch_run_context.cpp b/src/catch2/internal/catch_run_context.cpp
index a0866fd2..b23c2146 100644
--- a/src/catch2/internal/catch_run_context.cpp
+++ b/src/catch2/internal/catch_run_context.cpp
@@ -169,7 +169,7 @@ namespace Catch {
: m_runInfo(_config->name()),
m_config(_config),
m_reporter(CATCH_MOVE(reporter)),
- m_lastAssertionInfo{ StringRef(), SourceLineInfo("",0), StringRef(), ResultDisposition::Normal },
+ m_lastKnownLineInfo("DummyLocation", static_cast<size_t>(-1)),
m_outputRedirect( makeOutputRedirect( m_reporter->getPreferences().shouldRedirectStdOut ) ),
m_abortAfterXFailedAssertions( m_config->abortAfter() ),
m_includeSuccessfulResults( m_config->includeSuccessfulResults() || m_reporter->getPreferences().shouldReportAllAssertions ),
@@ -307,11 +307,6 @@ namespace Catch {
// populateReaction is run if it is needed
m_lastResult = CATCH_MOVE( result );
}
- void RunContext::resetAssertionInfo() {
- m_lastAssertionInfo.macroName = StringRef();
- m_lastAssertionInfo.capturedExpression = "{Unknown expression after the reported line}"_sr;
- m_lastAssertionInfo.resultDisposition = ResultDisposition::Normal;
- }
void RunContext::notifyAssertionStarted( AssertionInfo const& info ) {
auto _ = scopedDeactivate( *m_outputRedirect );
@@ -331,7 +326,7 @@ namespace Catch {
m_activeSections.push_back(&sectionTracker);
SectionInfo sectionInfo( sectionLineInfo, static_cast<std::string>(sectionName) );
- m_lastAssertionInfo.lineInfo = sectionLineInfo;
+ m_lastKnownLineInfo = sectionLineInfo;
{
auto _ = scopedDeactivate( *m_outputRedirect );
@@ -350,7 +345,7 @@ namespace Catch {
m_trackerContext,
TestCaseTracking::NameAndLocationRef(
generatorName, lineInfo ) );
- m_lastAssertionInfo.lineInfo = lineInfo;
+ m_lastKnownLineInfo = lineInfo;
return tracker;
}
@@ -476,10 +471,10 @@ namespace Catch {
// Instead, fake a result data.
AssertionResultData tempResult( ResultWas::FatalErrorCondition, { false } );
tempResult.message = static_cast<std::string>(message);
- AssertionResult result(m_lastAssertionInfo, CATCH_MOVE(tempResult));
+ AssertionResult result( makeDummyAssertionInfo(),
+ CATCH_MOVE( tempResult ) );
assertionEnded(CATCH_MOVE(result) );
- resetAssertionInfo();
// Best effort cleanup for sections that have not been destructed yet
// Since this is a fatal error, we have not had and won't have the opportunity to destruct them properly
@@ -520,7 +515,6 @@ namespace Catch {
void RunContext::assertionPassed() {
m_lastAssertionPassed = true;
++m_totals.assertions.passed;
- resetAssertionInfo();
m_messageScopes.clear();
}
@@ -535,7 +529,7 @@ namespace Catch {
Counts prevAssertions = m_totals.assertions;
double duration = 0;
m_shouldReportUnexpected = true;
- m_lastAssertionInfo = { "TEST_CASE"_sr, testCaseInfo.lineInfo, StringRef(), ResultDisposition::Normal };
+ m_lastKnownLineInfo = testCaseInfo.lineInfo;
Timer timer;
CATCH_TRY {
@@ -552,9 +546,11 @@ namespace Catch {
} CATCH_CATCH_ALL {
// Under CATCH_CONFIG_FAST_COMPILE, unexpected exceptions under REQUIRE assertions
// are reported without translation at the point of origin.
- if( m_shouldReportUnexpected ) {
+ if ( m_shouldReportUnexpected ) {
AssertionReaction dummyReaction;
- handleUnexpectedInflightException( m_lastAssertionInfo, translateActiveException(), dummyReaction );
+ handleUnexpectedInflightException( makeDummyAssertionInfo(),
+ translateActiveException(),
+ dummyReaction );
}
}
Counts assertions = m_totals.assertions - prevAssertions;
@@ -622,14 +618,13 @@ namespace Catch {
ITransientExpression const *expr,
bool negated ) {
- m_lastAssertionInfo.lineInfo = info.lineInfo;
+ m_lastKnownLineInfo = info.lineInfo;
AssertionResultData data( resultType, LazyExpression( negated ) );
AssertionResult assertionResult{ info, CATCH_MOVE( data ) };
assertionResult.m_resultData.lazyExpression.m_transientExpression = expr;
assertionEnded( CATCH_MOVE(assertionResult) );
- resetAssertionInfo();
}
void RunContext::handleMessage(
@@ -638,7 +633,7 @@ namespace Catch {
std::string&& message,
AssertionReaction& reaction
) {
- m_lastAssertionInfo.lineInfo = info.lineInfo;
+ m_lastKnownLineInfo = info.lineInfo;
AssertionResultData data( resultType, LazyExpression( false ) );
data.message = CATCH_MOVE( message );
@@ -655,8 +650,8 @@ namespace Catch {
// considered "OK"
reaction.shouldSkip = true;
}
- resetAssertionInfo();
}
+
void RunContext::handleUnexpectedExceptionNotThrown(
AssertionInfo const& info,
AssertionReaction& reaction
@@ -669,7 +664,7 @@ namespace Catch {
std::string&& message,
AssertionReaction& reaction
) {
- m_lastAssertionInfo.lineInfo = info.lineInfo;
+ m_lastKnownLineInfo = info.lineInfo;
AssertionResultData data( ResultWas::ThrewException, LazyExpression( false ) );
data.message = CATCH_MOVE(message);
@@ -677,7 +672,6 @@ namespace Catch {
assertionEnded( CATCH_MOVE(assertionResult) );
populateReaction( reaction,
info.resultDisposition & ResultDisposition::Normal );
- resetAssertionInfo();
}
void RunContext::populateReaction( AssertionReaction& reaction,
@@ -686,24 +680,36 @@ namespace Catch {
reaction.shouldThrow = aborting() || has_normal_disposition;
}
+ AssertionInfo RunContext::makeDummyAssertionInfo() {
+ const bool testCaseJustStarted =
+ m_lastKnownLineInfo == m_activeTestCase->getTestCaseInfo().lineInfo;
+
+ return AssertionInfo{
+ testCaseJustStarted ? "TEST_CASE"_sr : StringRef(),
+ m_lastKnownLineInfo,
+ testCaseJustStarted ? StringRef() : "{Unknown expression after the reported line}"_sr,
+ ResultDisposition::Normal
+ };
+ }
+
void RunContext::handleIncomplete(
AssertionInfo const& info
) {
using namespace std::string_literals;
- m_lastAssertionInfo.lineInfo = info.lineInfo;
+ m_lastKnownLineInfo = info.lineInfo;
AssertionResultData data( ResultWas::ThrewException, LazyExpression( false ) );
data.message = "Exception translation was disabled by CATCH_CONFIG_FAST_COMPILE"s;
AssertionResult assertionResult{ info, CATCH_MOVE( data ) };
assertionEnded( CATCH_MOVE(assertionResult) );
- resetAssertionInfo();
}
+
void RunContext::handleNonExpr(
AssertionInfo const &info,
ResultWas::OfType resultType,
AssertionReaction &reaction
) {
- m_lastAssertionInfo.lineInfo = info.lineInfo;
+ m_lastKnownLineInfo = info.lineInfo;
AssertionResultData data( resultType, LazyExpression( false ) );
AssertionResult assertionResult{ info, CATCH_MOVE( data ) };
@@ -714,10 +720,8 @@ namespace Catch {
populateReaction(
reaction, info.resultDisposition & ResultDisposition::Normal );
}
- resetAssertionInfo();
}
-
IResultCapture& getResultCapture() {
if (auto* capture = getCurrentContext().getResultCapture())
return *capture;
diff --git a/src/catch2/internal/catch_run_context.hpp b/src/catch2/internal/catch_run_context.hpp
index 4aecd662..ed3fda93 100644
--- a/src/catch2/internal/catch_run_context.hpp
+++ b/src/catch2/internal/catch_run_context.hpp
@@ -119,7 +119,6 @@ namespace Catch {
void runCurrentTest();
void invokeActiveTestCase();
- void resetAssertionInfo();
bool testForMissingAssertions( Counts& assertions );
void assertionEnded( AssertionResult&& result );
@@ -131,6 +130,11 @@ namespace Catch {
void populateReaction( AssertionReaction& reaction, bool has_normal_disposition );
+ // Creates dummy info for unexpected exceptions/fatal errors,
+ // where we do not have the access to one, but we still need
+ // to send one to the reporters.
+ AssertionInfo makeDummyAssertionInfo();
+
private:
void handleUnfinishedSections();
@@ -145,16 +149,18 @@ namespace Catch {
IEventListenerPtr m_reporter;
std::vector<MessageInfo> m_messages;
std::vector<ScopedMessage> m_messageScopes; /* Keeps owners of so-called unscoped messages. */
- AssertionInfo m_lastAssertionInfo;
+ SourceLineInfo m_lastKnownLineInfo;
std::vector<SectionEndInfo> m_unfinishedSections;
std::vector<ITracker*> m_activeSections;
TrackerContext m_trackerContext;
Detail::unique_ptr<OutputRedirect> m_outputRedirect;
FatalConditionHandler m_fatalConditionhandler;
+ // Caches m_config->abortAfter() to avoid vptr calls/allow inlining
size_t m_abortAfterXFailedAssertions;
bool m_lastAssertionPassed = false;
bool m_shouldReportUnexpected = true;
bool m_includeSuccessfulResults;
+ // Caches m_config->shouldDebugBreak() to avoid vptr calls/allow inlining
bool m_shouldDebugBreak;
};
diff --git a/tests/SelfTest/Baselines/compact.sw.approved.txt b/tests/SelfTest/Baselines/compact.sw.approved.txt
index 840d3dcb..5e2fef69 100644
--- a/tests/SelfTest/Baselines/compact.sw.approved.txt
+++ b/tests/SelfTest/Baselines/compact.sw.approved.txt
@@ -84,8 +84,8 @@ Matchers.tests.cpp:<line number>: passed: smallest_non_zero, WithinULP( -smalles
Matchers.tests.cpp:<line number>: passed: smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-324, -0.0000000000000000e+00])
Matchers.tests.cpp:<line number>: passed: smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) for: 0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45])
Matchers.tests.cpp:<line number>: passed: smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.00000000e+00])
-Generators.tests.cpp:<line number>: failed: unexpected exception with message: 'failure to init'
-Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'answer := 42' with 1 message: 'expected exception'
+Generators.tests.cpp:<line number>: failed: unexpected exception with message: 'failure to init'; expression was: {Unknown expression after the reported line}
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'answer := 42'; expression was: {Unknown expression after the reported line} with 1 message: 'expected exception'
Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'answer := 42'; expression was: thisThrows() with 1 message: 'expected exception'
Exception.tests.cpp:<line number>: passed: thisThrows() with 1 message: 'answer := 42'
Compilation.tests.cpp:<line number>: passed: 42 == f for: 42 == {?}
@@ -2392,7 +2392,7 @@ Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'u
Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
-Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'unexpected exception'
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'unexpected exception'; expression was: {Unknown expression after the reported line}
Tricky.tests.cpp:<line number>: passed:
Tricky.tests.cpp:<line number>: passed:
Tricky.tests.cpp:<line number>: passed:
diff --git a/tests/SelfTest/Baselines/compact.sw.multi.approved.txt b/tests/SelfTest/Baselines/compact.sw.multi.approved.txt
index 933a887a..e96370e0 100644
--- a/tests/SelfTest/Baselines/compact.sw.multi.approved.txt
+++ b/tests/SelfTest/Baselines/compact.sw.multi.approved.txt
@@ -82,8 +82,8 @@ Matchers.tests.cpp:<line number>: passed: smallest_non_zero, WithinULP( -smalles
Matchers.tests.cpp:<line number>: passed: smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0 not is within 1 ULPs of -4.9406564584124654e-324 ([-9.8813129168249309e-324, -0.0000000000000000e+00])
Matchers.tests.cpp:<line number>: passed: smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) for: 0.0f is within 2 ULPs of -1.40129846e-45f ([-4.20389539e-45, 1.40129846e-45])
Matchers.tests.cpp:<line number>: passed: smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.00000000e+00])
-Generators.tests.cpp:<line number>: failed: unexpected exception with message: 'failure to init'
-Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'answer := 42' with 1 message: 'expected exception'
+Generators.tests.cpp:<line number>: failed: unexpected exception with message: 'failure to init'; expression was: {Unknown expression after the reported line}
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'answer := 42'; expression was: {Unknown expression after the reported line} with 1 message: 'expected exception'
Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'answer := 42'; expression was: thisThrows() with 1 message: 'expected exception'
Exception.tests.cpp:<line number>: passed: thisThrows() with 1 message: 'answer := 42'
Compilation.tests.cpp:<line number>: passed: 42 == f for: 42 == {?}
@@ -2385,7 +2385,7 @@ Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'u
Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
-Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'unexpected exception'
+Exception.tests.cpp:<line number>: failed: unexpected exception with message: 'unexpected exception'; expression was: {Unknown expression after the reported line}
Tricky.tests.cpp:<line number>: passed:
Tricky.tests.cpp:<line number>: passed:
Tricky.tests.cpp:<line number>: passed:
diff --git a/tests/SelfTest/Baselines/console.std.approved.txt b/tests/SelfTest/Baselines/console.std.approved.txt
index 92d44a87..b7933236 100644
--- a/tests/SelfTest/Baselines/console.std.approved.txt
+++ b/tests/SelfTest/Baselines/console.std.approved.txt
@@ -34,6 +34,7 @@ Generators.tests.cpp:<line number>
...............................................................................
Generators.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
due to unexpected exception with message:
failure to init
@@ -45,6 +46,7 @@ Exception.tests.cpp:<line number>
...............................................................................
Exception.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
due to unexpected exception with messages:
answer := 42
expected exception
@@ -1248,6 +1250,7 @@ Exception.tests.cpp:<line number>
...............................................................................
Exception.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
due to unexpected exception with message:
unexpected exception
diff --git a/tests/SelfTest/Baselines/console.sw.approved.txt b/tests/SelfTest/Baselines/console.sw.approved.txt
index 414a8881..eb0ea034 100644
--- a/tests/SelfTest/Baselines/console.sw.approved.txt
+++ b/tests/SelfTest/Baselines/console.sw.approved.txt
@@ -768,6 +768,7 @@ Generators.tests.cpp:<line number>
...............................................................................
Generators.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
due to unexpected exception with message:
failure to init
@@ -779,6 +780,7 @@ Exception.tests.cpp:<line number>
...............................................................................
Exception.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
due to unexpected exception with messages:
answer := 42
expected exception
@@ -15783,6 +15785,7 @@ Exception.tests.cpp:<line number>
...............................................................................
Exception.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
due to unexpected exception with message:
unexpected exception
diff --git a/tests/SelfTest/Baselines/console.sw.multi.approved.txt b/tests/SelfTest/Baselines/console.sw.multi.approved.txt
index cb13b0ff..95f4f6f7 100644
--- a/tests/SelfTest/Baselines/console.sw.multi.approved.txt
+++ b/tests/SelfTest/Baselines/console.sw.multi.approved.txt
@@ -766,6 +766,7 @@ Generators.tests.cpp:<line number>
...............................................................................
Generators.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
due to unexpected exception with message:
failure to init
@@ -777,6 +778,7 @@ Exception.tests.cpp:<line number>
...............................................................................
Exception.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
due to unexpected exception with messages:
answer := 42
expected exception
@@ -15776,6 +15778,7 @@ Exception.tests.cpp:<line number>
...............................................................................
Exception.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
due to unexpected exception with message:
unexpected exception
diff --git a/tests/SelfTest/Baselines/console.swa4.approved.txt b/tests/SelfTest/Baselines/console.swa4.approved.txt
index 41b7612a..3d181c9f 100644
--- a/tests/SelfTest/Baselines/console.swa4.approved.txt
+++ b/tests/SelfTest/Baselines/console.swa4.approved.txt
@@ -768,6 +768,7 @@ Generators.tests.cpp:<line number>
...............................................................................
Generators.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
due to unexpected exception with message:
failure to init
@@ -779,6 +780,7 @@ Exception.tests.cpp:<line number>
...............................................................................
Exception.tests.cpp:<line number>: FAILED:
+ {Unknown expression after the reported line}
due to unexpected exception with messages:
answer := 42
expected exception
diff --git a/tests/SelfTest/Baselines/junit.sw.approved.txt b/tests/SelfTest/Baselines/junit.sw.approved.txt
index a7bcc914..d4b2ee20 100644
--- a/tests/SelfTest/Baselines/junit.sw.approved.txt
+++ b/tests/SelfTest/Baselines/junit.sw.approved.txt
@@ -53,8 +53,9 @@ Nor would this
<testcase classname="<exe-name>.global" name="#2152 - ULP checks between differently signed values were wrong - float" time="{duration}" status="run"/>
<testcase classname="<exe-name>.global" name="#2615 - Throwing in constructor generator fails test case but does not abort" time="{duration}" status="run">
<skipped message="TEST_CASE tagged with !mayfail"/>
- <error type="TEST_CASE">
+ <error message="{Unknown expression after the reported line}">
FAILED:
+ {Unknown expression after the reported line}
failure to init
at Generators.tests.cpp:<line number>
</error>
@@ -62,8 +63,9 @@ at Generators.tests.cpp:<line number>
<testcase classname="<exe-name>.global" name="#748 - captures with unexpected exceptions" time="{duration}" status="run"/>
<testcase classname="<exe-name>.global" name="#748 - captures with unexpected exceptions/outside assertions" time="{duration}" status="run">
<skipped message="TEST_CASE tagged with !mayfail"/>
- <error type="TEST_CASE">
+ <error message="{Unknown expression after the reported line}">
FAILED:
+ {Unknown expression after the reported line}
expected exception
answer := 42
at Exception.tests.cpp:<line number>
@@ -1837,8 +1839,9 @@ at Exception.tests.cpp:<line number>
</error>
</testcase>
<testcase classname="<exe-name>.global" name="When unchecked exceptions are thrown from sections they are always failures/section name" time="{duration}" status="run">
- <error type="TEST_CASE">
+ <error message="{Unknown expression after the reported line}">
FAILED:
+ {Unknown expression after the reported line}
unexpected exception
at Exception.tests.cpp:<line number>
</error>
diff --git a/tests/SelfTest/Baselines/junit.sw.multi.approved.txt b/tests/SelfTest/Baselines/junit.sw.multi.approved.txt
index 20ae2abf..c23dff5b 100644
--- a/tests/SelfTest/Baselines/junit.sw.multi.approved.txt
+++ b/tests/SelfTest/Baselines/junit.sw.multi.approved.txt
@@ -52,8 +52,9 @@ Nor would this
<testcase classname="<exe-name>.global" name="#2152 - ULP checks between differently signed values were wrong - float" time="{duration}" status="run"/>
<testcase classname="<exe-name>.global" name="#2615 - Throwing in constructor generator fails test case but does not abort" time="{duration}" status="run">
<skipped message="TEST_CASE tagged with !mayfail"/>
- <error type="TEST_CASE">
+ <error message="{Unknown expression after the reported line}">
FAILED:
+ {Unknown expression after the reported line}
failure to init
at Generators.tests.cpp:<line number>
</error>
@@ -61,8 +62,9 @@ at Generators.tests.cpp:<line number>
<testcase classname="<exe-name>.global" name="#748 - captures with unexpected exceptions" time="{duration}" status="run"/>
<testcase classname="<exe-name>.global" name="#748 - captures with unexpected exceptions/outside assertions" time="{duration}" status="run">
<skipped message="TEST_CASE tagged with !mayfail"/>
- <error type="TEST_CASE">
+ <error message="{Unknown expression after the reported line}">
FAILED:
+ {Unknown expression after the reported line}
expected exception
answer := 42
at Exception.tests.cpp:<line number>
@@ -1836,8 +1838,9 @@ at Exception.tests.cpp:<line number>
</error>
</testcase>
<testcase classname="<exe-name>.global" name="When unchecked exceptions are thrown from sections they are always failures/section name" time="{duration}" status="run">
- <error type="TEST_CASE">
+ <error message="{Unknown expression after the reported line}">
FAILED:
+ {Unknown expression after the reported line}
unexpected exception
at Exception.tests.cpp:<line number>
</error>
diff --git a/tests/SelfTest/Baselines/sonarqube.sw.approved.txt b/tests/SelfTest/Baselines/sonarqube.sw.approved.txt
index 915c5a9b..e757c5a4 100644
--- a/tests/SelfTest/Baselines/sonarqube.sw.approved.txt
+++ b/tests/SelfTest/Baselines/sonarqube.sw.approved.txt
@@ -1008,8 +1008,9 @@ at Decomposition.tests.cpp:<line number>
<file path="tests/<exe-name>/UsageTests/Exception.tests.cpp">
<testCase name="#748 - captures with unexpected exceptions" duration="{duration}"/>
<testCase name="#748 - captures with unexpected exceptions/outside assertions" duration="{duration}">
- <skipped message="TEST_CASE()">
+ <skipped message="({Unknown expression after the reported line})">
FAILED:
+ {Unknown expression after the reported line}
expected exception
answer := 42
at Exception.tests.cpp:<line number>
@@ -1142,8 +1143,9 @@ at Exception.tests.cpp:<line number>
</error>
</testCase>
<testCase name="When unchecked exceptions are thrown from sections they are always failures/section name" duration="{duration}">
- <error message="TEST_CASE()">
+ <error message="({Unknown expression after the reported line})">
FAILED:
+ {Unknown expression after the reported line}
unexpected exception
at Exception.tests.cpp:<line number>
</error>
@@ -1161,8 +1163,9 @@ at Exception.tests.cpp:<line number>
<testCase name="#1913 - GENERATE inside a for loop should not keep recreating the generator" duration="{duration}"/>
<testCase name="#1913 - GENERATEs can share a line" duration="{duration}"/>
<testCase name="#2615 - Throwing in constructor generator fails test case but does not abort" duration="{duration}">
- <skipped message="TEST_CASE()">
+ <skipped message="({Unknown expression after the reported line})">
FAILED:
+ {Unknown expression after the reported line}
failure to init
at Generators.tests.cpp:<line number>
</skipped>
diff --git a/tests/SelfTest/Baselines/sonarqube.sw.multi.approved.txt b/tests/SelfTest/Baselines/sonarqube.sw.multi.approved.txt
index cc890873..eb7d7ffb 100644
--- a/tests/SelfTest/Baselines/sonarqube.sw.multi.approved.txt
+++ b/tests/SelfTest/Baselines/sonarqube.sw.multi.approved.txt
@@ -1007,8 +1007,9 @@ at Decomposition.tests.cpp:<line number>
<file path="tests/<exe-name>/UsageTests/Exception.tests.cpp">
<testCase name="#748 - captures with unexpected exceptions" duration="{duration}"/>
<testCase name="#748 - captures with unexpected exceptions/outside assertions" duration="{duration}">
- <skipped message="TEST_CASE()">
+ <skipped message="({Unknown expression after the reported line})">
FAILED:
+ {Unknown expression after the reported line}
expected exception
answer := 42
at Exception.tests.cpp:<line number>
@@ -1141,8 +1142,9 @@ at Exception.tests.cpp:<line number>
</error>
</testCase>
<testCase name="When unchecked exceptions are thrown from sections they are always failures/section name" duration="{duration}">
- <error message="TEST_CASE()">
+ <error message="({Unknown expression after the reported line})">
FAILED:
+ {Unknown expression after the reported line}
unexpected exception
at Exception.tests.cpp:<line number>
</error>
@@ -1160,8 +1162,9 @@ at Exception.tests.cpp:<line number>
<testCase name="#1913 - GENERATE inside a for loop should not keep recreating the generator" duration="{duration}"/>
<testCase name="#1913 - GENERATEs can share a line" duration="{duration}"/>
<testCase name="#2615 - Throwing in constructor generator fails test case but does not abort" duration="{duration}">
- <skipped message="TEST_CASE()">
+ <skipped message="({Unknown expression after the reported line})">
FAILED:
+ {Unknown expression after the reported line}
failure to init
at Generators.tests.cpp:<line number>
</skipped>
diff --git a/tests/SelfTest/Baselines/tap.sw.approved.txt b/tests/SelfTest/Baselines/tap.sw.approved.txt
index f1064e6b..08bb5254 100644
--- a/tests/SelfTest/Baselines/tap.sw.approved.txt
+++ b/tests/SelfTest/Baselines/tap.sw.approved.txt
@@ -165,9 +165,9 @@ ok {test-number} - smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) for: 0.
# #2152 - ULP checks between differently signed values were wrong - float
ok {test-number} - smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.00000000e+00])
# #2615 - Throwing in constructor generator fails test case but does not abort
-not ok {test-number} - unexpected exception with message: 'failure to init'
+not ok {test-number} - unexpected exception with message: 'failure to init'; expression was: {Unknown expression after the reported line}
# #748 - captures with unexpected exceptions
-not ok {test-number} - unexpected exception with message: 'answer := 42' with 1 message: 'expected exception'
+not ok {test-number} - unexpected exception with message: 'answer := 42'; expression was: {Unknown expression after the reported line} with 1 message: 'expected exception'
# #748 - captures with unexpected exceptions
not ok {test-number} - unexpected exception with message: 'answer := 42'; expression was: thisThrows() with 1 message: 'expected exception'
# #748 - captures with unexpected exceptions
@@ -3772,7 +3772,7 @@ not ok {test-number} - unexpected exception with message: 'expected exception';
# When unchecked exceptions are thrown from functions they are always failures
not ok {test-number} - unexpected exception with message: 'expected exception'; expression was: thisThrows() == 0
# When unchecked exceptions are thrown from sections they are always failures
-not ok {test-number} - unexpected exception with message: 'unexpected exception'
+not ok {test-number} - unexpected exception with message: 'unexpected exception'; expression was: {Unknown expression after the reported line}
# X/level/0/a
ok {test-number} -
# X/level/0/b
diff --git a/tests/SelfTest/Baselines/tap.sw.multi.approved.txt b/tests/SelfTest/Baselines/tap.sw.multi.approved.txt
index bdfc9c3b..4181327d 100644
--- a/tests/SelfTest/Baselines/tap.sw.multi.approved.txt
+++ b/tests/SelfTest/Baselines/tap.sw.multi.approved.txt
@@ -163,9 +163,9 @@ ok {test-number} - smallest_non_zero, WithinULP( -smallest_non_zero, 2 ) for: 0.
# #2152 - ULP checks between differently signed values were wrong - float
ok {test-number} - smallest_non_zero, !WithinULP( -smallest_non_zero, 1 ) for: 0.0f not is within 1 ULPs of -1.40129846e-45f ([-2.80259693e-45, -0.00000000e+00])
# #2615 - Throwing in constructor generator fails test case but does not abort
-not ok {test-number} - unexpected exception with message: 'failure to init'
+not ok {test-number} - unexpected exception with message: 'failure to init'; expression was: {Unknown expression after the reported line}
# #748 - captures with unexpected exceptions
-not ok {test-number} - unexpected exception with message: 'answer := 42' with 1 message: 'expected exception'
+not ok {test-number} - unexpected exception with message: 'answer := 42'; expression was: {Unknown expression after the reported line} with 1 message: