in agent/src/jetbrains/buildServer/xmlReportPlugin/parsers/antJUnit/AntJUnitXmlReportParser.java [46:161]
private Handler getSuiteHandler() {
return new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
final String name = reader.getAttribute("name");
final String pack = reader.getAttribute("package");
final String suiteName = (pack == null || name != null && name.startsWith(pack) ? "" : pack + ".") + name;
myCallback.suiteFound(suiteName);
return reader.visitChildren(
elementsPath(new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
final String type = reader.getAttribute("type");
final String message = reader.getAttribute("message");
return reader.visitText(new TextHandler() {
public void setText(@NotNull final String text) {
myCallback.suiteFailureFound(suiteName, type, message, text.trim());
}
});
}
}, "failure"),
elementsPath(new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
final String type = reader.getAttribute("type");
final String message = reader.getAttribute("message");
return reader.visitText(new TextHandler() {
public void setText(@NotNull final String text) {
myCallback.suiteErrorFound(suiteName, type, message, text.trim());
}
});
}
}, "error"),
elementsPath(new TextHandler() {
@Override
public void setText(@NotNull final String text) {
myCallback.suiteSystemOutFound(suiteName, text.trim());
}
}, "system-out"),
elementsPath(new TextHandler() {
@Override
public void setText(@NotNull final String text) {
myCallback.suiteSystemErrFound(suiteName, text.trim());
}
}, "system-err"),
elementsPath(new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
final String name = reader.getAttribute("name");
final String className = reader.getAttribute("classname");
final TestData testData = new TestData();
testData.setName((className == null || name != null && name.startsWith(className) ? "" : className + ".") + name);
testData.setDuration(myDurationParser.parseTestDuration(reader.getAttribute("time")));
testData.setExecuted(isExecuted(reader));
return reader.visitChildren(
elementsPath(new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
testData.setExecuted(true);
return processTestFailure(reader, testData);
}
}, "failure"),
elementsPath(new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
return processTestFailure(reader, testData);
}
}, "error"),
elementsPath(new TextHandler() {
@Override
public void setText(@NotNull final String text) {
testData.setStdOut(text.trim());
}
}, "system-out"),
elementsPath(new TextHandler() {
public void setText(@NotNull final String text) {
testData.setStdErr(text.trim());
}
}, "system-err"),
elementsPath(new Handler() {
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
testData.setExecuted(false);
return reader.noDeep();
}
}, "skipped"),
elementsPath(new TextHandler() {
@Override
public void setText(@NotNull final String text) {
testData.setDuration(myDurationParser.parseTestDuration(text.trim()));
}
}, "time")
).than(new XmlAction() {
@Override
public void apply() {
myCallback.testFound(testData);
}
});
}
}, "testcase"),
elementsPath(getSuiteHandler(), "testsuite")
).than(new XmlAction() {
@Override
public void apply() {
myCallback.suiteFinished(suiteName);
}
});
}
};
}