From b1d008579604b08217857863c8276bcfc6865c67 Mon Sep 17 00:00:00 2001 From: Phil Nash Date: Fri, 25 Aug 2017 11:33:29 +0100 Subject: [PATCH] Tweaked how failedButOk assertions are recorded - fixes issue where sections in !shouldfail or !mayfail test cases that have failing assertions where marked as failed instead of failedButOk --- include/internal/catch_run_context.cpp | 12 ++++-------- projects/SelfTest/Baselines/xml.sw.approved.txt | 4 ++-- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/include/internal/catch_run_context.cpp b/include/internal/catch_run_context.cpp index d29ef54d..d5b69ae5 100644 --- a/include/internal/catch_run_context.cpp +++ b/include/internal/catch_run_context.cpp @@ -112,7 +112,10 @@ namespace Catch { if (result.getResultType() == ResultWas::Ok) { m_totals.assertions.passed++; } else if (!result.isOk()) { - m_totals.assertions.failed++; + if( m_activeTestCase->getTestCaseInfo().okToFail() ) + m_totals.assertions.failedButOk++; + else + m_totals.assertions.failed++; } // We have no use for the return value (whether messages should be cleared), because messages were made scoped @@ -297,13 +300,6 @@ namespace Catch { Counts assertions = m_totals.assertions - prevAssertions; bool missingAssertions = testForMissingAssertions(assertions); - - if (testCaseInfo.okToFail()) { - std::swap(assertions.failedButOk, assertions.failed); - m_totals.assertions.failed -= assertions.failedButOk; - m_totals.assertions.failedButOk += assertions.failedButOk; - } - SectionStats testCaseSectionStats(testCaseSection, assertions, duration, missingAssertions); m_reporter->sectionEnded(testCaseSectionStats); } diff --git a/projects/SelfTest/Baselines/xml.sw.approved.txt b/projects/SelfTest/Baselines/xml.sw.approved.txt index 8f52326e..61870985 100644 --- a/projects/SelfTest/Baselines/xml.sw.approved.txt +++ b/projects/SelfTest/Baselines/xml.sw.approved.txt @@ -12,7 +12,7 @@ expected exception - +
@@ -29,7 +29,7 @@ expected exception - +