diff --git a/include/reporters/catch_reporter_junit.cpp b/include/reporters/catch_reporter_junit.cpp index e8375862..f47f58f7 100644 --- a/include/reporters/catch_reporter_junit.cpp +++ b/include/reporters/catch_reporter_junit.cpp @@ -12,6 +12,7 @@ #include "../internal/catch_tostring.h" #include "../internal/catch_reporter_registrars.hpp" +#include "../internal/catch_text.h" #include #include @@ -244,10 +245,25 @@ namespace Catch { XmlWriter::ScopedElement e = xml.scopedElement( elementName ); - xml.writeAttribute( "message", result.getExpandedExpression() ); + xml.writeAttribute( "message", result.getExpression() ); xml.writeAttribute( "type", result.getTestMacroName() ); ReusableStringStream rss; + if (stats.totals.assertions.total() > 0) { + rss << "FAILED" << ":\n"; + if (result.hasExpression()) { + rss << " "; + rss << result.getExpressionInMacro(); + rss << '\n'; + } + if (result.hasExpandedExpression()) { + rss << "with expansion:\n"; + rss << Column(result.getExpandedExpression()).indent(2) << '\n'; + } + } else { + rss << '\n'; + } + if( !result.getMessage().empty() ) rss << result.getMessage() << '\n'; for( auto const& msg : stats.infoMessages ) diff --git a/projects/SelfTest/Baselines/junit.sw.approved.txt b/projects/SelfTest/Baselines/junit.sw.approved.txt index 82bf925f..588c3a21 100644 --- a/projects/SelfTest/Baselines/junit.sw.approved.txt +++ b/projects/SelfTest/Baselines/junit.sw.approved.txt @@ -18,6 +18,7 @@ +FAILED: 1514 Tricky.tests.cpp: @@ -31,6 +32,7 @@ Nor would this +FAILED: expected exception answer := 42 Exception.tests.cpp: @@ -38,6 +40,8 @@ Exception.tests.cpp: +FAILED: + REQUIRE_NOTHROW( thisThrows() ) expected exception answer := 42 Exception.tests.cpp: @@ -47,7 +51,11 @@ Exception.tests.cpp: - + +FAILED: + CHECK( f() == 0 ) +with expansion: + 1 == 0 Misc.tests.cpp: @@ -59,27 +67,53 @@ Misc.tests.cpp: +FAILED: + CHECK( false != false ) Condition.tests.cpp: +FAILED: + CHECK( true != true ) Condition.tests.cpp: - + +FAILED: + CHECK( !true ) +with expansion: + false Condition.tests.cpp: - + +FAILED: + CHECK_FALSE( true ) +with expansion: + !true Condition.tests.cpp: - + +FAILED: + CHECK( !trueValue ) +with expansion: + false Condition.tests.cpp: - + +FAILED: + CHECK_FALSE( trueValue ) +with expansion: + !true Condition.tests.cpp: - + +FAILED: + CHECK( !(1 == 1) ) +with expansion: + false Condition.tests.cpp: +FAILED: + CHECK_FALSE( 1 == 1 ) Condition.tests.cpp: @@ -91,28 +125,48 @@ Condition.tests.cpp: - + +FAILED: + REQUIRE( s == "world" ) +with expansion: + "hello" == "world" Class.tests.cpp: - + +FAILED: + REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 ) +with expansion: + 0 == 1 Class.tests.cpp: - + +FAILED: + REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 ) +with expansion: + 0 == 1 Class.tests.cpp: - + +FAILED: + REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 ) +with expansion: + 0 == 1 Class.tests.cpp: - + +FAILED: + REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 ) +with expansion: + 0 == 1 Class.tests.cpp: @@ -121,22 +175,38 @@ Class.tests.cpp: - + +FAILED: + REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 ) +with expansion: + 6 < 2 Class.tests.cpp: - + +FAILED: + REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 ) +with expansion: + 2 < 2 Class.tests.cpp: - + +FAILED: + REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 ) +with expansion: + 6 < 2 Class.tests.cpp: - + +FAILED: + REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 ) +with expansion: + 2 < 2 Class.tests.cpp: @@ -145,17 +215,29 @@ Class.tests.cpp: - + +FAILED: + REQUIRE( Template_Fixture<TestType>::m_a == 2 ) +with expansion: + 1.0 == 2 Class.tests.cpp: - + +FAILED: + REQUIRE( Template_Fixture<TestType>::m_a == 2 ) +with expansion: + 1.0f == 2 Class.tests.cpp: - + +FAILED: + REQUIRE( Template_Fixture<TestType>::m_a == 2 ) +with expansion: + 1 == 2 Class.tests.cpp: @@ -163,17 +245,29 @@ Class.tests.cpp: - + +FAILED: + REQUIRE( Nttp_Fixture<V>::value == 0 ) +with expansion: + 1 == 0 Class.tests.cpp: - + +FAILED: + REQUIRE( Nttp_Fixture<V>::value == 0 ) +with expansion: + 3 == 0 Class.tests.cpp: - + +FAILED: + REQUIRE( Nttp_Fixture<V>::value == 0 ) +with expansion: + 6 == 0 Class.tests.cpp: @@ -181,7 +275,11 @@ Class.tests.cpp: - + +FAILED: + REQUIRE( m_a == 2 ) +with expansion: + 1 == 2 Class.tests.cpp: @@ -197,16 +295,25 @@ Class.tests.cpp: +FAILED: to infinity and beyond Misc.tests.cpp: - + +FAILED: + CHECK( &o1 == &o2 ) +with expansion: + 0x == 0x Tricky.tests.cpp: - + +FAILED: + CHECK( o1 == o2 ) +with expansion: + {?} == {?} Tricky.tests.cpp: @@ -214,6 +321,8 @@ Tricky.tests.cpp: +FAILED: + {Unknown expression after the reported line} unexpected exception Exception.tests.cpp: @@ -248,10 +357,19 @@ Exception.tests.cpp: - + +FAILED: + CHECK_THAT( testStringForMatching(), Contains("not there", Catch::CaseSensitive::No) ) +with expansion: + "this string contains 'abc' as a substring" contains: "not there" (case + insensitive) Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( testStringForMatching(), Contains("STRING") ) +with expansion: + "this string contains 'abc' as a substring" contains: "STRING" Matchers.tests.cpp: @@ -260,18 +378,23 @@ Matchers.tests.cpp: +FAILED: + REQUIRE_NOTHROW( throwCustom() ) custom exception - not std Exception.tests.cpp: +FAILED: + REQUIRE_THROWS_AS( throwCustom(), std::exception ) custom exception - not std Exception.tests.cpp: +FAILED: custom std exception Exception.tests.cpp: @@ -279,10 +402,19 @@ Exception.tests.cpp: - + +FAILED: + CHECK_THAT( testStringForMatching(), EndsWith("Substring") ) +with expansion: + "this string contains 'abc' as a substring" ends with: "Substring" Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( testStringForMatching(), EndsWith("this", Catch::CaseSensitive::No) ) +with expansion: + "this string contains 'abc' as a substring" ends with: "this" (case + insensitive) Matchers.tests.cpp: @@ -290,80 +422,158 @@ Matchers.tests.cpp: - + +FAILED: + CHECK( data.int_seven == 6 ) +with expansion: + 7 == 6 Condition.tests.cpp: - + +FAILED: + CHECK( data.int_seven == 8 ) +with expansion: + 7 == 8 Condition.tests.cpp: - + +FAILED: + CHECK( data.int_seven == 0 ) +with expansion: + 7 == 0 Condition.tests.cpp: - + +FAILED: + CHECK( data.float_nine_point_one == Approx( 9.11f ) ) +with expansion: + 9.1f == Approx( 9.1099996567 ) Condition.tests.cpp: - + +FAILED: + CHECK( data.float_nine_point_one == Approx( 9.0f ) ) +with expansion: + 9.1f == Approx( 9.0 ) Condition.tests.cpp: - + +FAILED: + CHECK( data.float_nine_point_one == Approx( 1 ) ) +with expansion: + 9.1f == Approx( 1.0 ) Condition.tests.cpp: - + +FAILED: + CHECK( data.float_nine_point_one == Approx( 0 ) ) +with expansion: + 9.1f == Approx( 0.0 ) Condition.tests.cpp: - + +FAILED: + CHECK( data.double_pi == Approx( 3.1415 ) ) +with expansion: + 3.1415926535 == Approx( 3.1415 ) Condition.tests.cpp: - + +FAILED: + CHECK( data.str_hello == "goodbye" ) +with expansion: + "hello" == "goodbye" Condition.tests.cpp: - + +FAILED: + CHECK( data.str_hello == "hell" ) +with expansion: + "hello" == "hell" Condition.tests.cpp: - + +FAILED: + CHECK( data.str_hello == "hello1" ) +with expansion: + "hello" == "hello1" Condition.tests.cpp: - + +FAILED: + CHECK( data.str_hello.size() == 6 ) +with expansion: + 5 == 6 Condition.tests.cpp: - + +FAILED: + CHECK( x == Approx( 1.301 ) ) +with expansion: + 1.3 == Approx( 1.301 ) Condition.tests.cpp: - + +FAILED: + CHECK_THAT( testStringForMatching(), Equals("this string contains 'ABC' as a substring") ) +with expansion: + "this string contains 'abc' as a substring" equals: "this string contains + 'ABC' as a substring" Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( testStringForMatching(), Equals("something else", Catch::CaseSensitive::No) ) +with expansion: + "this string contains 'abc' as a substring" equals: "something else" (case + insensitive) Matchers.tests.cpp: +FAILED: + CHECK_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{1} ) Matchers.tests.cpp: +FAILED: + REQUIRE_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{1} ) Matchers.tests.cpp: +FAILED: + CHECK_THROWS_MATCHES( throwsAsInt(1), SpecialException, ExceptionMatcher{1} ) Unknown exception Matchers.tests.cpp: +FAILED: + REQUIRE_THROWS_MATCHES( throwsAsInt(1), SpecialException, ExceptionMatcher{1} ) Unknown exception Matchers.tests.cpp: - + +FAILED: + CHECK_THROWS_MATCHES( throwsSpecialException(3), SpecialException, ExceptionMatcher{1} ) +with expansion: + SpecialException::what special exception has value of 1 Matchers.tests.cpp: - + +FAILED: + REQUIRE_THROWS_MATCHES( throwsSpecialException(4), SpecialException, ExceptionMatcher{1} ) +with expansion: + SpecialException::what special exception has value of 1 Matchers.tests.cpp: @@ -374,30 +584,39 @@ Matchers.tests.cpp: +FAILED: + CHECK_THROWS_AS( thisThrows(), std::string ) expected exception Exception.tests.cpp: +FAILED: + CHECK_THROWS_AS( thisDoesntThrow(), std::domain_error ) Exception.tests.cpp: +FAILED: + CHECK_NOTHROW( thisThrows() ) expected exception Exception.tests.cpp: +FAILED: This is a failure Message.tests.cpp: +FAILED: Message.tests.cpp: +FAILED: This is a failure Message.tests.cpp: @@ -453,19 +672,31 @@ Message.tests.cpp: - + +FAILED: + REQUIRE( a == 1 ) +with expansion: + 2 == 1 this message should be logged so should this Message.tests.cpp: - + +FAILED: + CHECK( a == 1 ) +with expansion: + 2 == 1 this message may be logged later this message should be logged Message.tests.cpp: - + +FAILED: + CHECK( a == 0 ) +with expansion: + 2 == 0 this message may be logged later this message should be logged and this, but later @@ -473,26 +704,50 @@ Message.tests.cpp: - + +FAILED: + REQUIRE( i < 10 ) +with expansion: + 10 < 10 current counter 10 i := 10 Message.tests.cpp: - + +FAILED: + CHECK( data.int_seven != 7 ) +with expansion: + 7 != 7 Condition.tests.cpp: - + +FAILED: + CHECK( data.float_nine_point_one != Approx( 9.1f ) ) +with expansion: + 9.1f != Approx( 9.1000003815 ) Condition.tests.cpp: - + +FAILED: + CHECK( data.double_pi != Approx( 3.1415926535 ) ) +with expansion: + 3.1415926535 != Approx( 3.1415926535 ) Condition.tests.cpp: - + +FAILED: + CHECK( data.str_hello != "hello" ) +with expansion: + "hello" != "hello" Condition.tests.cpp: - + +FAILED: + CHECK( data.str_hello.size() != 5 ) +with expansion: + 5 != 5 Condition.tests.cpp: @@ -503,18 +758,31 @@ Condition.tests.cpp: - + +FAILED: + CHECK_THAT( testStringForMatching(), (Contains("string") || Contains("different")) && Contains("random") ) +with expansion: + "this string contains 'abc' as a substring" ( ( contains: "string" or + contains: "different" ) and contains: "random" ) Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( testStringForMatching(), !Contains("substring") ) +with expansion: + "this string contains 'abc' as a substring" not contains: "substring" Matchers.tests.cpp: - + +FAILED: + REQUIRE_THROWS_WITH( thisThrows(), "should fail" ) +with expansion: + "expected exception" equals: "should fail" Exception.tests.cpp: @@ -522,6 +790,7 @@ Exception.tests.cpp: +FAILED: custom exception Exception.tests.cpp: @@ -529,61 +798,137 @@ Exception.tests.cpp: - + +FAILED: + CHECK( data.int_seven > 7 ) +with expansion: + 7 > 7 Condition.tests.cpp: - + +FAILED: + CHECK( data.int_seven < 7 ) +with expansion: + 7 < 7 Condition.tests.cpp: - + +FAILED: + CHECK( data.int_seven > 8 ) +with expansion: + 7 > 8 Condition.tests.cpp: - + +FAILED: + CHECK( data.int_seven < 6 ) +with expansion: + 7 < 6 Condition.tests.cpp: - + +FAILED: + CHECK( data.int_seven < 0 ) +with expansion: + 7 < 0 Condition.tests.cpp: - + +FAILED: + CHECK( data.int_seven < -1 ) +with expansion: + 7 < -1 Condition.tests.cpp: - + +FAILED: + CHECK( data.int_seven >= 8 ) +with expansion: + 7 >= 8 Condition.tests.cpp: - + +FAILED: + CHECK( data.int_seven <= 6 ) +with expansion: + 7 <= 6 Condition.tests.cpp: - + +FAILED: + CHECK( data.float_nine_point_one < 9 ) +with expansion: + 9.1f < 9 Condition.tests.cpp: - + +FAILED: + CHECK( data.float_nine_point_one > 10 ) +with expansion: + 9.1f > 10 Condition.tests.cpp: - + +FAILED: + CHECK( data.float_nine_point_one > 9.2 ) +with expansion: + 9.1f > 9.2 Condition.tests.cpp: - + +FAILED: + CHECK( data.str_hello > "hello" ) +with expansion: + "hello" > "hello" Condition.tests.cpp: - + +FAILED: + CHECK( data.str_hello < "hello" ) +with expansion: + "hello" < "hello" Condition.tests.cpp: - + +FAILED: + CHECK( data.str_hello > "hellp" ) +with expansion: + "hello" > "hellp" Condition.tests.cpp: - + +FAILED: + CHECK( data.str_hello > "z" ) +with expansion: + "hello" > "z" Condition.tests.cpp: - + +FAILED: + CHECK( data.str_hello < "hellm" ) +with expansion: + "hello" < "hellm" Condition.tests.cpp: - + +FAILED: + CHECK( data.str_hello < "a" ) +with expansion: + "hello" < "a" Condition.tests.cpp: - + +FAILED: + CHECK( data.str_hello >= "z" ) +with expansion: + "hello" >= "z" Condition.tests.cpp: - + +FAILED: + CHECK( data.str_hello <= "a" ) +with expansion: + "hello" <= "a" Condition.tests.cpp: @@ -592,12 +937,14 @@ Condition.tests.cpp: +FAILED: Message from section one Message.tests.cpp: +FAILED: Message from section two Message.tests.cpp: @@ -672,18 +1019,37 @@ Message.tests.cpp: - + +FAILED: + CHECK( truthy(false) ) +with expansion: + Hey, its truthy! Decomposition.tests.cpp: - + +FAILED: + CHECK_THAT( testStringForMatching(), Matches("this STRING contains 'abc' as a substring") ) +with expansion: + "this string contains 'abc' as a substring" matches "this STRING contains + 'abc' as a substring" case sensitively Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( testStringForMatching(), Matches("contains 'abc' as a substring") ) +with expansion: + "this string contains 'abc' as a substring" matches "contains 'abc' as a + substring" case sensitively Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( testStringForMatching(), Matches("this string contains 'abc' as a") ) +with expansion: + "this string contains 'abc' as a substring" matches "this string contains + 'abc' as a" case sensitively Matchers.tests.cpp: @@ -716,10 +1082,19 @@ Message from section two - + +FAILED: + CHECK_THAT( testStringForMatching(), StartsWith("This String") ) +with expansion: + "this string contains 'abc' as a substring" starts with: "This String" Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( testStringForMatching(), StartsWith("string", Catch::CaseSensitive::No) ) +with expansion: + "this string contains 'abc' as a substring" starts with: "string" (case + insensitive) Matchers.tests.cpp: @@ -748,14 +1123,18 @@ Matchers.tests.cpp: - + +FAILED: + CHECK( s1 == s2 ) +with expansion: + "if ($b == 10) { + $a = 20; + }" + == + "if ($b == 10) { + $a = 20; + } + " Misc.tests.cpp: @@ -826,6 +1205,7 @@ Misc.tests.cpp: +FAILED: For some reason someone is throwing a string literal! Exception.tests.cpp: @@ -843,6 +1223,7 @@ Exception.tests.cpp: +FAILED: 3.14 Exception.tests.cpp: @@ -854,12 +1235,20 @@ Exception.tests.cpp: - + +FAILED: + CHECK_THAT( empty, Approx(t1) ) +with expansion: + { } is approx: { 1.0, 2.0 } Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( v1, Approx(v2) ) +with expansion: + { 2.0, 4.0, 6.0 } is approx: { 1.0, 3.0, 5.0 } Matchers.tests.cpp: @@ -869,76 +1258,132 @@ Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( v, VectorContains(-1) ) +with expansion: + { 1, 2, 3 } Contains: -1 Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( empty, VectorContains(1) ) +with expansion: + { } Contains: 1 Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( empty, Contains(v) ) +with expansion: + { } Contains: { 1, 2, 3 } Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( v, Contains(v2) ) +with expansion: + { 1, 2, 3 } Contains: { 1, 2, 4 } Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( v, Equals(v2) ) +with expansion: + { 1, 2, 3 } Equals: { 1, 2 } Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( v2, Equals(v) ) +with expansion: + { 1, 2 } Equals: { 1, 2, 3 } Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( empty, Equals(v) ) +with expansion: + { } Equals: { 1, 2, 3 } Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( v, Equals(empty) ) +with expansion: + { 1, 2, 3 } Equals: { } Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( v, UnorderedEquals(empty) ) +with expansion: + { 1, 2, 3 } UnorderedEquals: { } Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( empty, UnorderedEquals(v) ) +with expansion: + { } UnorderedEquals: { 1, 2, 3 } Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( permuted, UnorderedEquals(v) ) +with expansion: + { 1, 3 } UnorderedEquals: { 1, 2, 3 } Matchers.tests.cpp: - + +FAILED: + CHECK_THAT( permuted, UnorderedEquals(v) ) +with expansion: + { 3, 1 } UnorderedEquals: { 1, 2, 3 } Matchers.tests.cpp: +FAILED: unexpected exception Exception.tests.cpp: +FAILED: + CHECK( thisThrows() == 0 ) expected exception Exception.tests.cpp: +FAILED: + REQUIRE( thisThrows() == 0 ) expected exception Exception.tests.cpp: +FAILED: + CHECK( thisThrows() == 0 ) expected exception Exception.tests.cpp: +FAILED: unexpected exception Exception.tests.cpp: @@ -968,19 +1413,35 @@ Exception.tests.cpp: - + +FAILED: + CHECKED_ELSE( flag ) +with expansion: + false Misc.tests.cpp: - + +FAILED: + REQUIRE( testCheckedElse( false ) ) +with expansion: + false Misc.tests.cpp: - + +FAILED: + CHECKED_IF( flag ) +with expansion: + false Misc.tests.cpp: - + +FAILED: + REQUIRE( testCheckedIf( false ) ) +with expansion: + false Misc.tests.cpp: @@ -991,24 +1452,34 @@ Misc.tests.cpp: +FAILED: Previous info should not be seen Message.tests.cpp: +FAILED: previous unscoped info SHOULD not be seen Message.tests.cpp: - + +FAILED: + CHECK( b > a ) +with expansion: + 0 > 1 Misc.tests.cpp: - + +FAILED: + CHECK( b > a ) +with expansion: + 1 > 1 Misc.tests.cpp: @@ -1021,34 +1492,62 @@ Misc.tests.cpp: - + +FAILED: + CHECK( ( fib[i] % 2 ) == 0 ) +with expansion: + 1 == 0 Testing if fib[0] (1) is even Misc.tests.cpp: - + +FAILED: + CHECK( ( fib[i] % 2 ) == 0 ) +with expansion: + 1 == 0 Testing if fib[1] (1) is even Misc.tests.cpp: - + +FAILED: + CHECK( ( fib[i] % 2 ) == 0 ) +with expansion: + 1 == 0 Testing if fib[3] (3) is even Misc.tests.cpp: - + +FAILED: + CHECK( ( fib[i] % 2 ) == 0 ) +with expansion: + 1 == 0 Testing if fib[4] (5) is even Misc.tests.cpp: - + +FAILED: + CHECK( ( fib[i] % 2 ) == 0 ) +with expansion: + 1 == 0 Testing if fib[6] (13) is even Misc.tests.cpp: - + +FAILED: + CHECK( ( fib[i] % 2 ) == 0 ) +with expansion: + 1 == 0 Testing if fib[7] (21) is even Misc.tests.cpp: - + +FAILED: + REQUIRE( a == b ) +with expansion: + 1 == 2 Misc.tests.cpp: @@ -1061,6 +1560,8 @@ Misc.tests.cpp: +FAILED: + REQUIRE( false ) this SHOULD be seen Message.tests.cpp: @@ -1075,6 +1576,8 @@ Message.tests.cpp: +FAILED: + REQUIRE( false ) this SHOULD be seen this SHOULD also be seen Message.tests.cpp: @@ -1082,6 +1585,8 @@ Message.tests.cpp: +FAILED: + CHECK( false ) this SHOULD be seen only ONCE Message.tests.cpp: @@ -1097,12 +1602,16 @@ Message.tests.cpp: +FAILED: + REQUIRE( false ) 3 Misc.tests.cpp: +FAILED: + REQUIRE( false ) hi i := 7 Message.tests.cpp: @@ -1112,6 +1621,8 @@ Message.tests.cpp: +FAILED: + CHECK( false ) Count 1 to 3... 1 2 @@ -1119,6 +1630,8 @@ Count 1 to 3... Message.tests.cpp: +FAILED: + CHECK( false ) Count 4 to 6... 4 5 @@ -1136,7 +1649,11 @@ Message.tests.cpp: - + +FAILED: + REQUIRE( std::string( "first" ) == "second" ) +with expansion: + "first" == "second" Tricky.tests.cpp: @@ -1153,6 +1670,7 @@ Tricky.tests.cpp: +FAILED: Why would you throw a std::string? Exception.tests.cpp: