in agent/src/jetbrains/buildServer/xmlReportPlugin/parsers/antJUnit/AntJUnitReportParser.java [47:179]
public boolean parse(@NotNull final File file, @Nullable final ParsingResult prevResult) throws ParsingException {
if (prevResult != null) {
myTestsToSkip = ((TestParsingResult) prevResult).getTests();
}
try {
new AntJUnitXmlReportParser(new AntJUnitXmlReportParser.Callback() {
@Override
public void suiteFound(@Nullable final String suiteName) {
if (suiteName == null) {
myTestReporter.warning(TestMessages.getFileContainsUnnamedMessage(file, "suite"));
return;
}
myTestReporter.openTestSuite(suiteName);
++myLoggedSuites;
mySuites.push(suiteName);
}
@Override
public void suiteFailureFound(@Nullable final String suiteName,
@Nullable final String type,
@Nullable final String message,
@Nullable final String trace) {
if (mySuites.isEmpty() || !mySuites.peek().equals(suiteName)) {
LOG.warn(TestMessages.getFailedToLogSuiteMessage("failure", suiteName));
return;
}
myTestReporter.error(TestMessages.getOutFromSuiteMessage("Failure", suiteName, type, message, trace));
}
@Override
public void suiteErrorFound(@Nullable final String suiteName,
@Nullable final String type,
@Nullable final String message,
@Nullable final String trace) {
if (mySuites.isEmpty() || !mySuites.peek().equals(suiteName)) {
LOG.warn(TestMessages.getFailedToLogSuiteMessage("error", suiteName));
return;
}
myTestReporter.error(TestMessages.getOutFromSuiteMessage("Error", suiteName, type, message, trace));
}
@Override
public void suiteSystemOutFound(@Nullable final String suiteName, @Nullable final String message) {
if (mySuites.isEmpty() || !mySuites.peek().equals(suiteName)) {
LOG.warn(TestMessages.getFailedToLogSuiteMessage("system out", suiteName));
return;
}
if (message != null && message.length() > 0) {
myTestReporter.info(TestMessages.getOutFromSuiteMessage("System out", suiteName, message));
}
}
@Override
public void suiteSystemErrFound(@Nullable final String suiteName, @Nullable final String message) {
if (mySuites.isEmpty() || !mySuites.peek().equals(suiteName)) {
LOG.warn(TestMessages.getFailedToLogSuiteMessage("system err", suiteName));
return;
}
if (message != null && message.length() > 0) {
final String msg = TestMessages.getOutFromSuiteMessage("System error", suiteName, message);
if (myLogInternalSystemError) {
myTestReporter.info(msg);
} else {
myTestReporter.warning(msg);
}
}
}
@Override
public void suiteFinished(@Nullable final String suiteName) {
if (mySuites.isEmpty() || !mySuites.peek().equals(suiteName)) {
LOG.warn(TestMessages.getFailedToLogSuiteMessage("finish", suiteName));
return;
}
myTestReporter.closeTestSuite();
mySuites.pop();
}
@Override
public void testFound(@NotNull TestData testData) {
try {
if (testSkipped()) return;
final String testName = testData.getName();
if (testName == null) {
myTestReporter.warning(TestMessages.getFileContainsUnnamedMessage(file, "test"));
return;
}
myTestReporter.openTest(testName);
if (!testData.isExecuted()) myTestReporter.testIgnored("");
if (testData.getStdOut() != null && testData.getStdOut().length() > 0) {
myTestReporter.testStdOutput(testData.getStdOut());
}
if (testData.getStdErr() != null && testData.getStdErr().length() > 0) {
if (myLogInternalSystemError) {
myTestReporter.info(testData.getStdErr());
} else {
myTestReporter.testErrOutput(testData.getStdErr());
}
}
if (testData.getFailureType() != null || testData.getFailureMessage() != null || testData.getFailureStackTrace() != null) {
myTestReporter
.testFail(TestMessages.getFailureMessage(testData.getFailureType(), testData.getFailureMessage()), testData.getFailureStackTrace());
}
myTestReporter.closeTest(testData.getDuration());
} finally {
++myLoggedTests;
}
}
@Override
public void unexpectedFormat(@NotNull final String msg) {
myTestReporter.error(TestMessages.getFileExpectedFormatMessage(file, msg, "Ant JUnit Task"));
}
}, myDurationParser).parse(file);
return true;
} catch (IOException e) {
myParsingException = new ParsingException(e);
while (!mySuites.isEmpty()) {
myTestReporter.closeTestSuite();
mySuites.pop();
}
LOG.debug(TestMessages.getCouldNotCompletelyParseMessage(file, e, myLoggedTests));
}
return false;
}