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

summaryrefslogtreecommitdiffhomepage
path: root/src/catch2
diff options
context:
space:
mode:
authorMartin Hořeňovský2023-05-06 11:48:25 +0200
committerMartin Hořeňovský2023-05-06 11:48:41 +0200
commitd84777c9cbf5b1b7d0e9ef2e14606ece254adf7a (patch)
treefcf806ea44c6822ba8202f9ba5a922bab629d2a2 /src/catch2
parent51fdbedd1337955bedc02b570bb2a7fb19061f2e (diff)
downloadcatch3-d84777c9cbf5b1b7d0e9ef2e14606ece254adf7a.tar.gz
Fix assertionStarting events being sent after the expr is evaluated
Closes #2678
Diffstat (limited to 'src/catch2')
-rw-r--r--src/catch2/interfaces/catch_interfaces_capture.hpp1
-rw-r--r--src/catch2/internal/catch_assertion_handler.cpp4
-rw-r--r--src/catch2/internal/catch_run_context.cpp12
-rw-r--r--src/catch2/internal/catch_run_context.hpp1
4 files changed, 12 insertions, 6 deletions
diff --git a/src/catch2/interfaces/catch_interfaces_capture.hpp b/src/catch2/interfaces/catch_interfaces_capture.hpp
index e605f998..a1876a4c 100644
--- a/src/catch2/interfaces/catch_interfaces_capture.hpp
+++ b/src/catch2/interfaces/catch_interfaces_capture.hpp
@@ -43,6 +43,7 @@ namespace Catch {
public:
virtual ~IResultCapture();
+ virtual void notifyAssertionStarted( AssertionInfo const& info ) = 0;
virtual bool sectionStarted( StringRef sectionName,
SourceLineInfo const& sectionLineInfo,
Counts& assertions ) = 0;
diff --git a/src/catch2/internal/catch_assertion_handler.cpp b/src/catch2/internal/catch_assertion_handler.cpp
index b66a1456..e5232f70 100644
--- a/src/catch2/internal/catch_assertion_handler.cpp
+++ b/src/catch2/internal/catch_assertion_handler.cpp
@@ -23,7 +23,9 @@ namespace Catch {
ResultDisposition::Flags resultDisposition )
: m_assertionInfo{ macroName, lineInfo, capturedExpression, resultDisposition },
m_resultCapture( getResultCapture() )
- {}
+ {
+ m_resultCapture.notifyAssertionStarted( m_assertionInfo );
+ }
void AssertionHandler::handleExpr( ITransientExpression const& expr ) {
m_resultCapture.handleExpr( m_assertionInfo, expr, m_reaction );
diff --git a/src/catch2/internal/catch_run_context.cpp b/src/catch2/internal/catch_run_context.cpp
index 6fd63450..c6171a5c 100644
--- a/src/catch2/internal/catch_run_context.cpp
+++ b/src/catch2/internal/catch_run_context.cpp
@@ -301,7 +301,13 @@ namespace Catch {
m_lastAssertionInfo.capturedExpression = "{Unknown expression after the reported line}"_sr;
}
- bool RunContext::sectionStarted(StringRef sectionName, SourceLineInfo const& sectionLineInfo, Counts & assertions) {
+ void RunContext::notifyAssertionStarted( AssertionInfo const& info ) {
+ m_reporter->assertionStarting( info );
+ }
+
+ bool RunContext::sectionStarted( StringRef sectionName,
+ SourceLineInfo const& sectionLineInfo,
+ Counts& assertions ) {
ITracker& sectionTracker =
SectionTracker::acquire( m_trackerContext,
TestCaseTracking::NameAndLocationRef(
@@ -561,8 +567,6 @@ namespace Catch {
ITransientExpression const& expr,
AssertionReaction& reaction
) {
- m_reporter->assertionStarting( info );
-
bool negated = isFalseTest( info.resultDisposition );
bool result = expr.getResult() != negated;
@@ -600,8 +604,6 @@ namespace Catch {
StringRef message,
AssertionReaction& reaction
) {
- m_reporter->assertionStarting( info );
-
m_lastAssertionInfo = info;
AssertionResultData data( resultType, LazyExpression( false ) );
diff --git a/src/catch2/internal/catch_run_context.hpp b/src/catch2/internal/catch_run_context.hpp
index fc65f651..76cdd84d 100644
--- a/src/catch2/internal/catch_run_context.hpp
+++ b/src/catch2/internal/catch_run_context.hpp
@@ -70,6 +70,7 @@ namespace Catch {
ResultWas::OfType resultType,
AssertionReaction &reaction ) override;
+ void notifyAssertionStarted( AssertionInfo const& info ) override;
bool sectionStarted( StringRef sectionName,
SourceLineInfo const& sectionLineInfo,
Counts& assertions ) override;