[jira] [Updated] (SUREFIRE-2232) StatelessXmlReporter fails to process failed result without a throwable

2024-06-05 Thread Michael Osipov (Jira)


 [ 
https://issues.apache.org/jira/browse/SUREFIRE-2232?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Osipov updated SUREFIRE-2232:
-
Fix Version/s: 3.3.0
   (was: waiting-for-feedback)

> 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.0.0-M6, 3.2.3
>Reporter: Artem Yak
>Priority: Minor
> Fix For: 3.3.0
>
>
>  
> 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.(ThreadedStreamConsumer.java:59)
>   at 
> org.apache.maven.plugin.surefire.booterclient.output.ThreadedStreamConsumer.(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 
> 

[jira] [Updated] (SUREFIRE-2232) StatelessXmlReporter fails to process failed result without a throwable

2024-01-09 Thread Michael Osipov (Jira)


 [ 
https://issues.apache.org/jira/browse/SUREFIRE-2232?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Osipov updated SUREFIRE-2232:
-
Fix Version/s: waiting-for-feedback
   (was: Backlog)

> 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.0.0-M6, 3.2.3
>Reporter: Artem Yak
>Priority: Minor
> Fix For: waiting-for-feedback
>
>
>  
> 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.(ThreadedStreamConsumer.java:59)
>   at 
> org.apache.maven.plugin.surefire.booterclient.output.ThreadedStreamConsumer.(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 
> 

[jira] [Updated] (SUREFIRE-2232) StatelessXmlReporter fails to process failed result without a throwable

2024-01-09 Thread Michael Osipov (Jira)


 [ 
https://issues.apache.org/jira/browse/SUREFIRE-2232?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Osipov updated SUREFIRE-2232:
-
Fix Version/s: Backlog

> 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.0.0-M6, 3.2.3
>Reporter: Artem Yak
>Priority: Minor
> Fix For: Backlog
>
>
>  
> 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.(ThreadedStreamConsumer.java:59)
>   at 
> org.apache.maven.plugin.surefire.booterclient.output.ThreadedStreamConsumer.(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 
>