in agent/src/jetbrains/buildServer/xmlReportPlugin/parsers/testng/TestNGXmlReportParser.java [39:199]
private Handler getSuiteHandler() {
return new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
return reader.visitChildren(
elementsPath(new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
final List<String> message = new ArrayList<String>();
return reader.visitChildren(
elementsPath(new TextHandler() {
@Override
public void setText(@NotNull final String text) {
message.add(text.trim());
}
}, "line")
).than(new XmlAction() {
@Override
public void apply() {
myCallback.suiteSystemOutFound("TestNG", StringUtil.join(message, "\n"));
}
});
}
}, "reporter-output"),
elementsPath(new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
final Suite suite = new Suite(reader.getAttribute("name"), SuiteSource.SUITE);
if (suite.isValid(SuiteSource.SUITE)) {
myCallback.suiteFound(suite.getName(SuiteSource.SUITE));
}
return reader.visitChildren(
elementsPath(new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
suite.set(reader.getAttribute("name"), SuiteSource.TEST);
if (suite.isValid(SuiteSource.TEST)) {
myCallback.suiteFound(suite.getName(SuiteSource.TEST));
}
return reader.visitChildren(
elementsPath(new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
final String className = reader.getAttribute("name");
suite.set(className, SuiteSource.CLASS);
if (suite.isValid(SuiteSource.CLASS)) {
myCallback.suiteFound(suite.getName(SuiteSource.CLASS));
}
return reader.visitChildren(
elementsPath(new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
final TestData testData = new TestData();
testData.setClassName(className);
testData.setMethodName(reader.getAttribute("name"));
testData.setDuration(myDurationParser.parseTestDuration(reader.getAttribute("duration-ms")));
testData.setStatus(reader.getAttribute("status"));
testData.setConfig(reader.getAttribute("is-config"));
return reader.visitChildren(
elementsPath(new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
return reader.visitChildren(
elementsPath(new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
final String index = reader.getAttribute("index");
return reader.visitChildren(
elementsPath(new TextHandler() {
@Override
public void setText(@NotNull final String text) {
testData.addParam(index, text.trim());
}
}, "value"));
}
}, "param"));
}
}, "params"),
elementsPath(new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
return reader.visitChildren(
elementsPath(new TextHandler() {
@Override
public void setText(@NotNull final String text) {
testData.appendMessageLine(text.trim());
}
}, "line")
);
}
}, "reporter-output"),
elementsPath(new Handler() {
@Override
public XmlReturn processElement(@NotNull final XmlElementInfo reader) {
testData.setFailureType(reader.getAttribute("class"));
return reader.visitChildren(
elementsPath(new TextHandler() {
@Override
public void setText(@NotNull final String text) {
testData.setFailureMessage(text.trim());
}
}, "message"),
elementsPath(new TextHandler() {
@Override
public void setText(@NotNull final String text) {
testData.setFailureStackTrace(text.trim());
}
}, "short-stacktrace"),
elementsPath(new TextHandler() {
@Override
public void setText(@NotNull final String text) {
testData.setFailureStackTrace(text.trim());
}
}, "full-stacktrace")
);
}
}, "exception")
).than(new XmlAction() {
@Override
public void apply() {
myCallback.testFound(testData);
}
});
}
}, "test-method")
).than(new XmlAction() {
@Override
public void apply() {
if (suite.isValid(SuiteSource.CLASS)) {
myCallback.suiteFinished(suite.remove(SuiteSource.CLASS));
}
}
});
}
}, "class")
).than(new XmlAction() {
@Override
public void apply() {
if (suite.isValid(SuiteSource.TEST)) {
myCallback.suiteFinished(suite.remove(SuiteSource.TEST));
}
}
});
}
}, "test")
).than(new XmlAction() {
@Override
public void apply() {
if (suite.isValid(SuiteSource.SUITE)) {
myCallback.suiteFinished(suite.remove(SuiteSource.SUITE));
}
}
});
}
}, "suite")
);
}
};
}