Artem Yak created SUREFIRE-2232:
-----------------------------------
Summary: StatelessXmlReporter fails to process failed result
without a throwable
Key: SUREFIRE-2232
URL: https://issues.apache.org/jira/browse/SUREFIRE-2232
Project: Maven Surefire
Issue Type: Bug
Components: Maven Surefire Plugin
Affects Versions: 3.2.3, 3.0.0-M6
Reporter: Artem Yak
A regression bug appeared in 3.0.0-M6:
A testNG test class has a listener which updates results from SUCCESS to
FAILURE:
{noformat}
@Override
public void onTestSuccess(ITestResult result) {
result.setStatus(ITestResult.FAILURE);
result.getTestContext().getPassedTests().removeResult(result);
result.getTestContext().getFailedTests().addResult(result);
}{noformat}
Surefire fails to process a failed test result without a throwable and reports
0 total tests.
{code:java}
ForkStarter IOException: java.util.NoSuchElementException.
org.apache.maven.plugin.surefire.booterclient.output.MultipleFailureException:
java.util.NoSuchElementException
at
org.apache.maven.plugin.surefire.booterclient.output.ThreadedStreamConsumer$Pumper.<init>(ThreadedStreamConsumer.java:59)
at
org.apache.maven.plugin.surefire.booterclient.output.ThreadedStreamConsumer.<init>(ThreadedStreamConsumer.java:107)
at
org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:546)
at
org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:285)
at
org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:250)
{code}
Reproducible unit test.
{code:java}
package org.apache.maven.plugin.surefire.report;
import java.io.File;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicInteger;
import junit.framework.TestCase;
import
org.apache.maven.plugin.surefire.booterclient.output.DeserializedStacktraceWriter;
import org.apache.maven.surefire.api.report.SimpleReportEntry;
import org.apache.maven.surefire.api.report.StackTraceWriter;
import static org.apache.maven.plugin.surefire.report.ReportEntryType.ERROR;
import static org.apache.maven.surefire.api.report.RunMode.NORMAL_RUN;
@SuppressWarnings({"ResultOfMethodCallIgnored", "checkstyle:magicnumber"})
public class StatelessXmlReporter2Test extends TestCase {
private static final String XSD =
"https://maven.apache.org/surefire/maven-surefire-plugin/xsd/surefire-test-report-3.0.xsd";
private static final AtomicInteger FOLDER_POSTFIX = new AtomicInteger();
private File reportDir;
@Override
protected void setUp() throws Exception {
File basedir = new File(".");
File target = new File(basedir.getCanonicalFile(), "target");
target.mkdir();
String reportRelDir = getClass().getSimpleName() + "-" +
FOLDER_POSTFIX.incrementAndGet();
reportDir = new File(target, reportRelDir);
reportDir.mkdir();
}
@Override
protected void tearDown() {
}
public void testOutputFailedTestWithoutThrowable() {
StackTraceWriter stackTraceWriterOne = new
DeserializedStacktraceWriter(null, null, "");
WrappedReportEntry testReport = new WrappedReportEntry(
new SimpleReportEntry(
NORMAL_RUN, 1L, getClass().getName(), null, "a test name",
null, stackTraceWriterOne, 5),
ERROR,
5,
null,
null);
TestSetStats testSetStats = new TestSetStats(false, false);
testSetStats.testError(testReport);
StatelessXmlReporter reporter = new StatelessXmlReporter(
reportDir, null, false, 1, new HashMap<>(), XSD, "3.0", false,
false, false, false);
reporter.testSetCompleted(testReport, testSetStats);
}
} {code}
{code:java}
java.util.NoSuchElementException
at java.base/java.util.StringTokenizer.nextToken(StringTokenizer.java:349)
at
org.apache.maven.plugin.surefire.report.StatelessXmlReporter.getTestProblems(StatelessXmlReporter.java:454)
at
org.apache.maven.plugin.surefire.report.StatelessXmlReporter.serializeTestClassWithRerun(StatelessXmlReporter.java:256)
at
org.apache.maven.plugin.surefire.report.StatelessXmlReporter.serializeTestClass(StatelessXmlReporter.java:207)
at
org.apache.maven.plugin.surefire.report.StatelessXmlReporter.testSetCompleted(StatelessXmlReporter.java:161)
at
org.apache.maven.plugin.surefire.report.StatelessXmlReporter2Test.testOutputFailedTestWithoutThrowable(StatelessXmlReporter2Test.java:72){code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)