| 17019 | } |
| 17020 | |
| 17021 | void JunitReporter::writeAssertion( AssertionStats const& stats ) { |
| 17022 | AssertionResult const& result = stats.assertionResult; |
| 17023 | if( !result.isOk() ) { |
| 17024 | std::string elementName; |
| 17025 | switch( result.getResultType() ) { |
| 17026 | case ResultWas::ThrewException: |
| 17027 | case ResultWas::FatalErrorCondition: |
| 17028 | elementName = "error"; |
| 17029 | break; |
| 17030 | case ResultWas::ExplicitFailure: |
| 17031 | case ResultWas::ExpressionFailed: |
| 17032 | case ResultWas::DidntThrowException: |
| 17033 | elementName = "failure"; |
| 17034 | break; |
| 17035 | |
| 17036 | // We should never see these here: |
| 17037 | case ResultWas::Info: |
| 17038 | case ResultWas::Warning: |
| 17039 | case ResultWas::Ok: |
| 17040 | case ResultWas::Unknown: |
| 17041 | case ResultWas::FailureBit: |
| 17042 | case ResultWas::Exception: |
| 17043 | elementName = "internalError"; |
| 17044 | break; |
| 17045 | } |
| 17046 | |
| 17047 | XmlWriter::ScopedElement e = xml.scopedElement( elementName ); |
| 17048 | |
| 17049 | xml.writeAttribute( "message", result.getExpression() ); |
| 17050 | xml.writeAttribute( "type", result.getTestMacroName() ); |
| 17051 | |
| 17052 | ReusableStringStream rss; |
| 17053 | if (stats.totals.assertions.total() > 0) { |
| 17054 | rss << "FAILED" << ":\n"; |
| 17055 | if (result.hasExpression()) { |
| 17056 | rss << " "; |
| 17057 | rss << result.getExpressionInMacro(); |
| 17058 | rss << '\n'; |
| 17059 | } |
| 17060 | if (result.hasExpandedExpression()) { |
| 17061 | rss << "with expansion:\n"; |
| 17062 | rss << Column(result.getExpandedExpression()).indent(2) << '\n'; |
| 17063 | } |
| 17064 | } else { |
| 17065 | rss << '\n'; |
| 17066 | } |
| 17067 | |
| 17068 | if( !result.getMessage().empty() ) |
| 17069 | rss << result.getMessage() << '\n'; |
| 17070 | for( auto const& msg : stats.infoMessages ) |
| 17071 | if( msg.type == ResultWas::Info ) |
| 17072 | rss << msg.message << '\n'; |
| 17073 | |
| 17074 | rss << "at " << result.getSourceInfo(); |
| 17075 | xml.writeText( rss.str(), XmlFormatting::Newline ); |
| 17076 | } |
| 17077 | } |
| 17078 |
nothing calls this directly
no test coverage detected