diff --git a/include/reporters/catch_reporter_junit.cpp b/include/reporters/catch_reporter_junit.cpp
index 7416a523..31f0802f 100644
--- a/include/reporters/catch_reporter_junit.cpp
+++ b/include/reporters/catch_reporter_junit.cpp
@@ -193,6 +193,11 @@ namespace Catch {
xml.writeAttribute( "name", name );
}
xml.writeAttribute( "time", ::Catch::Detail::stringify( sectionNode.stats.durationInSeconds ) );
+ // This is not ideal, but it should be enough to mimic gtest's
+ // junit output.
+ // Ideally the JUnit reporter would also handle `skipTest`
+ // events and write those out appropriately.
+ xml.writeAttribute( "status", "run" );
writeAssertions( sectionNode );
diff --git a/projects/SelfTest/Baselines/junit.sw.approved.txt b/projects/SelfTest/Baselines/junit.sw.approved.txt
index 603e4d0b..57237c15 100644
--- a/projects/SelfTest/Baselines/junit.sw.approved.txt
+++ b/projects/SelfTest/Baselines/junit.sw.approved.txt
@@ -6,17 +6,17 @@
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
FAILED:
1514
@@ -29,11 +29,11 @@ This would not be caught previously
Nor would this
-
-
-
-
-
+
+
+
+
+
FAILED:
expected exception
@@ -41,7 +41,7 @@ answer := 42
Exception.tests.cpp:
-
+
FAILED:
REQUIRE_NOTHROW( thisThrows() )
@@ -50,10 +50,10 @@ answer := 42
Exception.tests.cpp:
-
-
-
-
+
+
+
+
FAILED:
CHECK( f() == 0 )
@@ -62,13 +62,13 @@ with expansion:
Misc.tests.cpp:
-
-
-
-
-
-
-
+
+
+
+
+
+
+
FAILED:
CHECK( false != false )
@@ -120,14 +120,14 @@ FAILED:
Condition.tests.cpp:
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
FAILED:
REQUIRE( s == "world" )
@@ -136,8 +136,8 @@ with expansion:
Class.tests.cpp:
-
-
+
+
FAILED:
REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )
@@ -146,7 +146,7 @@ with expansion:
Class.tests.cpp:
-
+
FAILED:
REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )
@@ -155,7 +155,7 @@ with expansion:
Class.tests.cpp:
-
+
FAILED:
REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )
@@ -164,7 +164,7 @@ with expansion:
Class.tests.cpp:
-
+
FAILED:
REQUIRE( Template_Fixture_2<TestType>::m_a.size() == 1 )
@@ -173,11 +173,11 @@ with expansion:
Class.tests.cpp:
-
-
-
-
-
+
+
+
+
+
FAILED:
REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )
@@ -186,7 +186,7 @@ with expansion:
Class.tests.cpp:
-
+
FAILED:
REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )
@@ -195,7 +195,7 @@ with expansion:
Class.tests.cpp:
-
+
FAILED:
REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )
@@ -204,7 +204,7 @@ with expansion:
Class.tests.cpp:
-
+
FAILED:
REQUIRE( Template_Fixture_2<TestType>{}.m_a.size() < 2 )
@@ -213,11 +213,11 @@ with expansion:
Class.tests.cpp:
-
-
-
-
-
+
+
+
+
+
FAILED:
REQUIRE( Template_Fixture<TestType>::m_a == 2 )
@@ -226,7 +226,7 @@ with expansion:
Class.tests.cpp:
-
+
FAILED:
REQUIRE( Template_Fixture<TestType>::m_a == 2 )
@@ -235,7 +235,7 @@ with expansion:
Class.tests.cpp:
-
+
FAILED:
REQUIRE( Template_Fixture<TestType>::m_a == 2 )
@@ -244,10 +244,10 @@ with expansion:
Class.tests.cpp:
-
-
-
-
+
+
+
+
FAILED:
REQUIRE( Nttp_Fixture<V>::value == 0 )
@@ -256,7 +256,7 @@ with expansion:
Class.tests.cpp:
-
+
FAILED:
REQUIRE( Nttp_Fixture<V>::value == 0 )
@@ -265,7 +265,7 @@ with expansion:
Class.tests.cpp:
-
+
FAILED:
REQUIRE( Nttp_Fixture<V>::value == 0 )
@@ -274,10 +274,10 @@ with expansion:
Class.tests.cpp:
-
-
-
-
+
+
+
+
FAILED:
REQUIRE( m_a == 2 )
@@ -286,25 +286,25 @@ with expansion:
Class.tests.cpp:
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
FAILED:
to infinity and beyond
Misc.tests.cpp:
-
-
+
+
FAILED:
CHECK( &o1 == &o2 )
@@ -320,9 +320,9 @@ with expansion:
Tricky.tests.cpp:
-
-
-
+
+
+
FAILED:
{Unknown expression after the reported line}
@@ -330,38 +330,38 @@ unexpected exception
Exception.tests.cpp:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
FAILED:
CHECK_THAT( testStringForMatching(), Contains("not there", Catch::CaseSensitive::No) )
@@ -378,10 +378,10 @@ with expansion:
Matchers.tests.cpp:
-
-
-
-
+
+
+
+
FAILED:
REQUIRE_NOTHROW( throwCustom() )
@@ -389,7 +389,7 @@ custom exception - not std
Exception.tests.cpp:
-
+
FAILED:
REQUIRE_THROWS_AS( throwCustom(), std::exception )
@@ -397,16 +397,16 @@ custom exception - not std
Exception.tests.cpp:
-
+
FAILED:
custom std exception
Exception.tests.cpp:
-
-
-
+
+
+
FAILED:
CHECK_THAT( testStringForMatching(), EndsWith("Substring") )
@@ -423,10 +423,10 @@ with expansion:
Matchers.tests.cpp:
-
-
-
-
+
+
+
+
FAILED:
CHECK( data.int_seven == 6 )
@@ -519,9 +519,9 @@ with expansion:
Condition.tests.cpp:
-
-
-
+
+
+
FAILED:
CHECK_THAT( testStringForMatching(), Equals("this string contains 'ABC' as a substring") )
@@ -539,8 +539,8 @@ with expansion:
Matchers.tests.cpp:
-
-
+
+
FAILED:
CHECK_THROWS_MATCHES( doesNotThrow(), SpecialException, ExceptionMatcher{1} )
@@ -552,7 +552,7 @@ FAILED:
Matchers.tests.cpp:
-
+
FAILED:
CHECK_THROWS_MATCHES( throwsAsInt(1), SpecialException, ExceptionMatcher{1} )
@@ -566,7 +566,7 @@ Unknown exception
Matchers.tests.cpp:
-
+
FAILED:
CHECK_THROWS_MATCHES( throwsSpecialException(3), SpecialException, ExceptionMatcher{1} )
@@ -582,12 +582,12 @@ with expansion:
Matchers.tests.cpp:
-
-
-
-
-
-
+
+
+
+
+
+
FAILED:
CHECK_THROWS_AS( thisThrows(), std::string )
@@ -606,77 +606,77 @@ 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:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
FAILED:
REQUIRE( a == 1 )
@@ -687,7 +687,7 @@ so should this
Message.tests.cpp:
-
+
FAILED:
CHECK( a == 1 )
@@ -708,7 +708,7 @@ and this, but later
Message.tests.cpp:
-
+
FAILED:
REQUIRE( i < 10 )
@@ -719,7 +719,7 @@ i := 10
Message.tests.cpp:
-
+
FAILED:
CHECK( data.int_seven != 7 )
@@ -756,14 +756,14 @@ with expansion:
Condition.tests.cpp:
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
FAILED:
CHECK_THAT( testStringForMatching(), (Contains("string") || Contains("different")) && Contains("random") )
@@ -773,8 +773,8 @@ with expansion:
Matchers.tests.cpp:
-
-
+
+
FAILED:
CHECK_THAT( testStringForMatching(), !Contains("substring") )
@@ -783,7 +783,7 @@ with expansion:
Matchers.tests.cpp:
-
+
FAILED:
REQUIRE_THROWS_WITH( thisThrows(), "should fail" )
@@ -792,18 +792,18 @@ with expansion:
Exception.tests.cpp:
-
-
-
+
+
+
FAILED:
custom exception
Exception.tests.cpp:
-
-
-
+
+
+
FAILED:
CHECK( data.int_seven > 7 )
@@ -938,98 +938,98 @@ with expansion:
Condition.tests.cpp:
-
-
-
-
+
+
+
+
FAILED:
Message from section one
Message.tests.cpp:
-
+
FAILED:
Message from section two
Message.tests.cpp:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
FAILED:
CHECK( truthy(false) )
@@ -1038,7 +1038,7 @@ with expansion:
Decomposition.tests.cpp:
-
+
FAILED:
CHECK_THAT( testStringForMatching(), Matches("this STRING contains 'abc' as a substring") )
@@ -1064,19 +1064,19 @@ with expansion:
Matchers.tests.cpp:
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
A string sent directly to stdout
@@ -1085,14 +1085,14 @@ A string sent directly to stderr
A string sent to stderr via clog
-
-
+
+
Message from section one
Message from section two
-
+
FAILED:
CHECK_THAT( testStringForMatching(), StartsWith("This String") )
@@ -1109,31 +1109,31 @@ with expansion:
Matchers.tests.cpp:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
FAILED:
CHECK( s1 == s2 )
@@ -1149,103 +1149,103 @@ with expansion:
Misc.tests.cpp:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
FAILED:
For some reason someone is throwing a string literal!
Exception.tests.cpp:
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
FAILED:
3.14
Exception.tests.cpp:
-
-
-
-
-
-
-
+
+
+
+
+
+
+
FAILED:
CHECK_THAT( empty, Approx(t1) )
@@ -1254,7 +1254,7 @@ with expansion:
Matchers.tests.cpp:
-
+
FAILED:
CHECK_THAT( v1, Approx(v2) )
@@ -1263,12 +1263,12 @@ with expansion:
Matchers.tests.cpp:
-
-
-
-
-
-
+
+
+
+
+
+
FAILED:
CHECK_THAT( v, VectorContains(-1) )
@@ -1284,7 +1284,7 @@ with expansion:
Matchers.tests.cpp:
-
+
FAILED:
CHECK_THAT( empty, Contains(v) )
@@ -1300,7 +1300,7 @@ with expansion:
Matchers.tests.cpp:
-
+
FAILED:
CHECK_THAT( v, Equals(v2) )
@@ -1330,7 +1330,7 @@ with expansion:
Matchers.tests.cpp:
-
+
FAILED:
CHECK_THAT( v, UnorderedEquals(empty) )
@@ -1360,15 +1360,15 @@ with expansion:
Matchers.tests.cpp:
-
-
+
+
FAILED:
unexpected exception
Exception.tests.cpp:
-
+
FAILED:
CHECK( thisThrows() == 0 )
@@ -1376,7 +1376,7 @@ expected exception
Exception.tests.cpp:
-
+
FAILED:
REQUIRE( thisThrows() == 0 )
@@ -1384,7 +1384,7 @@ expected exception
Exception.tests.cpp:
-
+
FAILED:
CHECK( thisThrows() == 0 )
@@ -1392,33 +1392,33 @@ expected exception
Exception.tests.cpp:
-
+
FAILED:
unexpected exception
Exception.tests.cpp:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
FAILED:
CHECKED_ELSE( flag )
@@ -1434,8 +1434,8 @@ with expansion:
Misc.tests.cpp:
-
-
+
+
FAILED:
CHECKED_IF( flag )
@@ -1451,27 +1451,27 @@ with expansion:
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 )
@@ -1480,7 +1480,7 @@ with expansion:
Misc.tests.cpp:
-
+
FAILED:
CHECK( b > a )
@@ -1489,15 +1489,15 @@ with expansion:
Misc.tests.cpp:
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
FAILED:
CHECK( ( fib[i] % 2 ) == 0 )
@@ -1547,8 +1547,8 @@ Testing if fib[7] (21) is even
Misc.tests.cpp:
-
-
+
+
FAILED:
REQUIRE( a == b )
@@ -1557,14 +1557,14 @@ with expansion:
Misc.tests.cpp:
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
FAILED:
REQUIRE( false )
@@ -1572,15 +1572,15 @@ this SHOULD be seen
Message.tests.cpp:
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
FAILED:
REQUIRE( false )
@@ -1589,7 +1589,7 @@ this SHOULD also be seen
Message.tests.cpp:
-
+
FAILED:
CHECK( false )
@@ -1597,16 +1597,16 @@ this SHOULD be seen only ONCE
Message.tests.cpp:
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
FAILED:
REQUIRE( false )
@@ -1614,7 +1614,7 @@ FAILED:
Misc.tests.cpp:
-
+
FAILED:
REQUIRE( false )
@@ -1623,9 +1623,9 @@ i := 7
Message.tests.cpp:
-
-
-
+
+
+
FAILED:
CHECK( false )
@@ -1645,16 +1645,16 @@ Count 4 to 6...
Message.tests.cpp:
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
FAILED:
REQUIRE( std::string( "first" ) == "second" )
@@ -1663,51 +1663,51 @@ with expansion:
Tricky.tests.cpp:
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
FAILED:
Why would you throw a std::string?
Exception.tests.cpp:
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
This would not be caught previously
A string sent directly to stdout