in agent/src/jetbrains/buildServer/xmlReportPlugin/parsers/nUnit/NUnitXmlReportParser.java [157:199]
private XmlHandler failureAndReasonHandler(final String name, final boolean ignored, final boolean failed, final boolean failOnFailure) {
return elementsPatternPath(new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
final FailureDetails details = new FailureDetails();
return reader.visitChildren(
elementsPath(new TextHandler() {
public void setText(@NotNull final String text) {
details.message = text.trim();
}
}, "message"),
elementsPath(new TextHandler() {
@Override
public void setText(@NotNull final String text) {
details.stackTrace = text.trim();
}
}, "stack-trace")
).than(new XmlAction() {
@Override
public void apply() {
final String msg = getMessage();
if (ignored) {
myCallback.warning("suite " + name + " ignored" + msg);
} else if (failed) {
final String err = "suite " + name + " failure" + msg;
if (failOnFailure) {
myCallback.failure(err);
} else {
myCallback.warning(err);
}
} else if (isNotEmpty(msg)) {
myCallback.message("suite " + name + msg);
}
}
private String getMessage() {
if (isEmpty(details.message) && isEmpty(details.stackTrace)) return "";
return ": " + details.message + (isEmpty(details.stackTrace) ? "" : "\n" + details.stackTrace);
}
});
}
}, "failure|reason");
}