in agent/src/jetbrains/buildServer/xmlReportPlugin/parsers/ctest/TestXmlReportParser.java [130:199]
private XmlHandler testResultsHandler(@NotNull final TestData testData) {
return elementsPath(new Handler() {
public XmlReturn processElement(@NotNull XmlElementInfo reader) {
return reader.visitChildren(
elementsPath(new Handler() {
public XmlReturn processElement(@NotNull XmlElementInfo reader) {
final String type = reader.getAttribute("type");
final String name = reader.getAttribute("name");
final String[] value = new String[1];
return reader.visitChildren(elementsPath(new TextHandler() {
public void setText(@NotNull String text) {
value[0] = text;
}
}, "Value")).than(new XmlAction() {
public void apply() {
if (name == null) return;
switch (name) {
case "Execution Time":
testData.setDuration(myDurationParser.parseTestDuration(value[0]));
break;
case "Exit Code":
testData.setExitCode(value[0]);
break;
case "Exit Value":
try {
testData.setExitValue(Integer.parseInt(value[0]));
} catch (NumberFormatException ignored) {
}
break;
case "Pass Reason":
case "Fail Reason":
testData.setReason(value[0]);
break;
case "Completion Status":
testData.setCompletionStatus(value[0]);
break;
case "Command Line":
// don't do anything since it should already be in the FullCommandLine
break;
default: // explicit measurement
testData.addNamedMeasurement(name, type == null ? "" : type, value[0]); // Just for logging other measurements
break;
}
}
});
}
}, "NamedMeasurement"),
elementsPath(new Handler() {
public XmlReturn processElement(@NotNull XmlElementInfo reader) {
final String[] compression = new String[1];
final String[] value = new String[1];
return reader.visitChildren(elementsPath(new Handler() {
public XmlReturn processElement(@NotNull XmlElementInfo reader) {
compression[0] = reader.getAttribute("compression");
return reader.visitText(new TextHandler() {
public void setText(@NotNull String text) {
value[0] = text;
}
});
}
}, "Value")).than(new XmlAction() {
public void apply() {
testData.setLog(value[0], compression[0]);
}
});
}
}, "Measurement"));
}
}, "Results");
}