Fixed up xml reporter and rebased

This commit is contained in:
Phil Nash 2014-12-30 18:24:31 +00:00
parent 3e0c501812
commit 6817bb099d
7 changed files with 73 additions and 27 deletions

View File

@ -35,6 +35,9 @@ namespace Catch {
bool allPassed() const {
return failed == 0 && failedButOk == 0;
}
bool allOk() const {
return failed == 0;
}
std::size_t passed;
std::size_t failed;

View File

@ -99,7 +99,7 @@ namespace Catch {
if( assertionResult.hasExpression() ) {
m_xml.startElement( "Expression" )
.writeAttribute( "success", assertionResult.succeeded() )
.writeAttribute( "type", assertionResult.getTestMacroName() )
// .writeAttribute( "type", assertionResult.getTestMacroName() )
.writeAttribute( "filename", assertionResult.getSourceInfo().file )
.writeAttribute( "line", assertionResult.getSourceInfo().line );
@ -111,8 +111,6 @@ namespace Catch {
// And... Print a result applicable to each result type.
switch( assertionResult.getResultType() ) {
default:
break;
case ResultWas::ThrewException:
m_xml.scopedElement( "Exception" )
.writeAttribute( "filename", assertionResult.getSourceInfo().file )
@ -130,13 +128,14 @@ namespace Catch {
.writeText( assertionResult.getMessage() );
break;
case ResultWas::Warning:
m_xml.scopedElement( "Warning" )
.writeText( assertionResult.getMessage() );
// Warning will already have been written
break;
case ResultWas::ExplicitFailure:
m_xml.scopedElement( "Failure" )
.writeText( assertionResult.getMessage() );
break;
default:
break;
}
if( assertionResult.hasExpression() )
@ -163,7 +162,7 @@ namespace Catch {
virtual void testCaseEnded( TestCaseStats const& testCaseStats ) {
StreamingReporterBase::testCaseEnded( testCaseStats );
XmlWriter::ScopedElement e = m_xml.scopedElement( "OverallResult" );
e.writeAttribute( "success", testCaseStats.totals.assertions.allPassed() );
e.writeAttribute( "success", testCaseStats.totals.assertions.allOk() );
if ( m_config->showDurations() == ShowDurations::Always )
e.writeAttribute( "durationInSeconds", m_testCaseTimer.getElapsedSeconds() );

View File

@ -787,5 +787,5 @@ with expansion:
===============================================================================
test cases: 149 | 110 passed | 38 failed | 1 failed as expected
assertions: 751 | 659 passed | 79 failed | 13 failed as expected
assertions: 753 | 661 passed | 79 failed | 13 failed as expected

View File

@ -4632,6 +4632,25 @@ PASSED:
with expansion:
"abcdefcg" == "abcdefcg"
-------------------------------------------------------------------------------
replaceInPlace
escape '
-------------------------------------------------------------------------------
TestMain.cpp:<line number>
...............................................................................
TestMain.cpp:<line number>:
PASSED:
CHECK( replaceInPlace( s, "'", "|'" ) )
with expansion:
true
TestMain.cpp:<line number>:
PASSED:
CHECK( s == "didn|'t" )
with expansion:
"didn|'t" == "didn|'t"
hello
hello
-------------------------------------------------------------------------------
@ -7798,5 +7817,5 @@ with expansion:
===============================================================================
test cases: 149 | 94 passed | 54 failed | 1 failed as expected
assertions: 771 | 659 passed | 99 failed | 13 failed as expected
assertions: 773 | 661 passed | 99 failed | 13 failed as expected

View File

@ -1,5 +1,5 @@
<testsuites>
<testsuite name="all tests" errors="12" failures="87" tests="771" hostname="tbd" time="{duration}" timestamp="tbd">
<testsuite name="all tests" errors="12" failures="87" tests="773" hostname="tbd" time="{duration}" timestamp="tbd">
<testcase classname="global" name="toString(enum)" time="{duration}"/>
<testcase classname="global" name="toString(enum w/operator&lt;&lt;)" time="{duration}"/>
<testcase classname="global" name="toString(enum class)" time="{duration}"/>
@ -491,6 +491,7 @@ MiscTests.cpp:<line number>
<testcase classname="replaceInPlace" name="replace last char" time="{duration}"/>
<testcase classname="replaceInPlace" name="replace all chars" time="{duration}"/>
<testcase classname="replaceInPlace" name="replace no chars" time="{duration}"/>
<testcase classname="replaceInPlace" name="escape '" time="{duration}"/>
<testcase classname="global" name="Strings can be rendered with colour" time="{duration}">
<system-out>
hello

View File

@ -531,7 +531,7 @@
1.3 == Approx( 1.301 )
</Expanded>
</Expression>
<OverallResult success="false"/>
<OverallResult success="true"/>
</TestCase>
<TestCase name="Inequality checks that should succeed">
<Expression success="true" filename="projects/SelfTest/ConditionTests.cpp" >
@ -1541,7 +1541,7 @@
<OverallResult success="false"/>
</TestCase>
<TestCase name="When unchecked exceptions are thrown, but caught, they do not affect the test">
<OverallResult success="true"/>
<OverallResult success="false"/>
</TestCase>
<TestCase name="Unexpected custom exceptions can be translated">
<Exception filename="projects/SelfTest/ExceptionTests.cpp" >
@ -2775,7 +2775,7 @@
<Warning>
this is a warning
</Warning>
<OverallResult success="true"/>
<OverallResult success="false"/>
</TestCase>
<TestCase name="SUCCEED counts as a test pass">
<OverallResult success="true"/>
@ -2873,7 +2873,7 @@
<Section name="two">
<OverallResults successes="0" failures="1" expectedFailures="0"/>
</Section>
<OverallResult success="true"/>
<OverallResult success="false"/>
</TestCase>
<TestCase name="SCOPED_INFO is reset for each loop">
<Expression success="true" filename="projects/SelfTest/MessageTests.cpp" >
@ -2984,7 +2984,7 @@
<OverallResult success="false"/>
</TestCase>
<TestCase name="just info">
<OverallResult success="true"/>
<OverallResult success="false"/>
</TestCase>
<TestCase name="just failure">
<Failure>
@ -3016,7 +3016,7 @@
<Warning>
toString(p): 0x<hex digits>
</Warning>
<OverallResult success="true"/>
<OverallResult success="false"/>
</TestCase>
<TestCase name="random SECTION tests">
<Section name="s1" description="doesn't equal">
@ -3117,7 +3117,7 @@
<Section name="f (leaf)">
<OverallResults successes="0" failures="1" expectedFailures="0"/>
</Section>
<OverallResult success="true"/>
<OverallResult success="false"/>
</TestCase>
<TestCase name="looped SECTION tests">
<Section name="s1" description="b is currently: 0">
@ -3219,7 +3219,7 @@
<OverallResult success="false"/>
</TestCase>
<TestCase name="Sends stuff to stdout and stderr">
<OverallResult success="true"/>
<OverallResult success="false"/>
</TestCase>
<TestCase name="null strings">
<Expression success="true" filename="projects/SelfTest/MiscTests.cpp" >
@ -3323,7 +3323,7 @@
<Section name="encoded chars" description="these should all be encoded: &amp;&amp;&amp;&quot;&quot;&quot;&lt;&lt;&lt;&amp;&quot;&lt;&lt;&amp;&quot;">
<OverallResults successes="0" failures="1" expectedFailures="0"/>
</Section>
<OverallResult success="true"/>
<OverallResult success="false"/>
</TestCase>
<TestCase name="send a single char to INFO">
<Info>
@ -3525,19 +3525,19 @@
<OverallResult success="true"/>
</TestCase>
<TestCase name="An empty test with no assertions">
<OverallResult success="true"/>
<OverallResult success="false"/>
</TestCase>
<TestCase name="Nice descriptive name">
<Warning>
This one ran
</Warning>
<OverallResult success="true"/>
<OverallResult success="false"/>
</TestCase>
<TestCase name="first tag">
<OverallResult success="true"/>
<OverallResult success="false"/>
</TestCase>
<TestCase name="second tag">
<OverallResult success="true"/>
<OverallResult success="false"/>
</TestCase>
<TestCase name="vectors can be sized and resized">
<Expression success="true" filename="projects/SelfTest/MiscTests.cpp" >
@ -4829,10 +4829,29 @@ four&quot;
</Expression>
<OverallResults successes="2" failures="0" expectedFailures="0"/>
</Section>
<Section name="escape '">
<Expression success="true" filename="projects/SelfTest/TestMain.cpp" >
<Original>
replaceInPlace( s, &quot;'&quot;, &quot;|'&quot; )
</Original>
<Expanded>
true
</Expanded>
</Expression>
<Expression success="true" filename="projects/SelfTest/TestMain.cpp" >
<Original>
s == &quot;didn|'t&quot;
</Original>
<Expanded>
&quot;didn|'t&quot; == &quot;didn|'t&quot;
</Expanded>
</Expression>
<OverallResults successes="2" failures="0" expectedFailures="0"/>
</Section>
<OverallResult success="true"/>
</TestCase>
<TestCase name="Strings can be rendered with colour">
<OverallResult success="true"/>
<OverallResult success="false"/>
</TestCase>
<TestCase name="Text can be formatted using the Text class">
<Expression success="true" filename="projects/SelfTest/TestMain.cpp" >
@ -5883,13 +5902,13 @@ there&quot;
<Warning>
Uncomment the code in this test to check that it gives a sensible compiler error
</Warning>
<OverallResult success="true"/>
<OverallResult success="false"/>
</TestCase>
<TestCase name="Where the LHS is not a simple value">
<Warning>
Uncomment the code in this test to check that it gives a sensible compiler error
</Warning>
<OverallResult success="true"/>
<OverallResult success="false"/>
</TestCase>
<TestCase name="A failing expression with a non streamable type is still captured">
<Expression success="false" filename="projects/SelfTest/TrickyTests.cpp" >
@ -8067,7 +8086,7 @@ there&quot;
</Section>
<OverallResult success="true"/>
</TestCase>
<OverallResults successes="659" failures="99" expectedFailures="13"/>
<OverallResults successes="661" failures="99" expectedFailures="13"/>
</Group>
<OverallResults successes="659" failures="99" expectedFailures="13"/>
<OverallResults successes="661" failures="99" expectedFailures="13"/>
</Catch>

View File

@ -374,6 +374,11 @@ TEST_CASE( "replaceInPlace", "" ) {
CHECK_FALSE( replaceInPlace( letters, "x", "z" ) );
CHECK( letters == letters );
}
SECTION( "escape '" ) {
std::string s = "didn't";
CHECK( replaceInPlace( s, "'", "|'" ) );
CHECK( s == "didn|'t" );
}
}
// !TBD: This will be folded into Text class