[
https://issues.apache.org/jira/browse/SUREFIRE-1821?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17324591#comment-17324591
]
Pavel Pustovoyt commented on SUREFIRE-1821:
-------------------------------------------
[~tibordigana]
StatelessXmlReporter doesn't throw the exception but dumps it into the file:
{code:java}
Created at 2021-04-18T22:14:19.101# Created at 2021-04-18T22:14:19.101When
writing xml report
stdout/stderrorg.apache.maven.surefire.api.report.ReporterException: When
writing xml report stdout/stderr at
org.apache.maven.plugin.surefire.report.StatelessXmlReporter.addOutputStreamElement(StatelessXmlReporter.java:508)
at
org.apache.maven.plugin.surefire.report.StatelessXmlReporter.createOutErrElements(StatelessXmlReporter.java:483)
at
org.apache.maven.plugin.surefire.report.StatelessXmlReporter.serializeTestClassWithRerun(StatelessXmlReporter.java:261)
at
org.apache.maven.plugin.surefire.report.StatelessXmlReporter.serializeTestClass(StatelessXmlReporter.java:207)
at
org.apache.maven.plugin.surefire.report.StatelessXmlReporter.testSetCompleted(StatelessXmlReporter.java:152)
at
org.apache.maven.plugin.surefire.report.StatelessXmlReporter.testSetCompleted(StatelessXmlReporter.java:51)
at
org.apache.maven.plugin.surefire.report.TestSetRunListener.testSetCompleted(TestSetRunListener.java:193)
at
org.apache.maven.plugin.surefire.booterclient.output.ForkClient$TestSetCompletedListener.handle(ForkClient.java:139)
at
org.apache.maven.plugin.surefire.booterclient.output.ForkClient$TestSetCompletedListener.handle(ForkClient.java:128)
at
org.apache.maven.plugin.surefire.booterclient.output.ForkedProcessEventNotifier.notifyEvent(ForkedProcessEventNotifier.java:232)
at
org.apache.maven.plugin.surefire.booterclient.output.ForkClient.handleEvent(ForkClient.java:361)
at
org.apache.maven.plugin.surefire.booterclient.output.ForkClient.handleEvent(ForkClient.java:57)
at
org.apache.maven.plugin.surefire.booterclient.output.ThreadedStreamConsumer$Pumper.run(ThreadedStreamConsumer.java:91)
at java.lang.Thread.run(Thread.java:748)Caused by:
java.io.FileNotFoundException:
/var/folders/wz/5hl931hj1ml_k_p4_f_x1hq1lwp2d4/T/stdout5335614658614860966deferred
(No such file or directory) at java.io.FileInputStream.open0(Native Method) at
java.io.FileInputStream.open(FileInputStream.java:195) at
java.io.FileInputStream.<init>(FileInputStream.java:138) at
org.apache.maven.surefire.shared.io.output.DeferredFileOutputStream.writeTo(DeferredFileOutputStream.java:321)
at
org.apache.maven.plugin.surefire.report.Utf8RecodingDeferredFileOutputStream.writeTo(Utf8RecodingDeferredFileOutputStream.java:85)
at
org.apache.maven.plugin.surefire.report.StatelessXmlReporter.addOutputStreamElement(StatelessXmlReporter.java:502)
... 13 more
{code}
> Broken junit report when parallel and rerunFailingTestsCount configureation
> is used
> -----------------------------------------------------------------------------------
>
> Key: SUREFIRE-1821
> URL: https://issues.apache.org/jira/browse/SUREFIRE-1821
> Project: Maven Surefire
> Issue Type: Bug
> Components: Junit 4.7+ (parallel) support, Maven Failsafe Plugin,
> Maven Surefire Plugin
> Affects Versions: 2.20.1, 2.22.2, 3.0.0-M5
> Reporter: Pavel Pustovoyt
> Priority: Major
>
> *Description:*
> When using *parallel* configuration with *rerunFailingTestsCount* bad xml
> report is generated for a failing test.
> *How to reproduce:*
> 1. Configure forkCount, parallel and rerun count:
> {code:java}
> <plugin>
> <groupId>org.apache.maven.plugins</groupId>
> <artifactId>maven-surefire-plugin</artifactId>
> <version>3.0.0-M5</version>
> <executions>
> <execution>
> <goals>
> <goal>test</goal>
> </goals>
> </execution>
> </executions>
> <configuration>
> <rerunFailingTestsCount>1</rerunFailingTestsCount>
> <forkCount>1</forkCount>
> <threadCount>1</threadCount>
> <parallel>all</parallel>
> <redirectTestOutputToFile>true</redirectTestOutputToFile>
> </configuration>
> </plugin>
> {code}
> 2. Create a failing test that outputs more than 1m characters:
> {code:java}
> public class AppTest {
> @Test
> public void testBug() {
> for(int i = 0; i < 100000; i++){
> System.out.println("Some output longer than 10 character");
> }
> throw new NullPointerException();
> }
> }
> {code}
> 3. Run the test and check the report - you will see unexpected end of xml
> file:
> {code:java}
> ...
> <property name="sun.io.unicode.encoding" value="UnicodeBig"/>
> <property name="java.class.version" value="52.0"/>
> </properties>
> <testcase name="testBug" classname="com.mycompany.app.AppTest" time="0.015">
> <error
> type="java.lang.NullPointerException"><![CDATA[java.lang.NullPointerException
> at com.mycompany.app.AppTest.testBug(AppTest.java:12)
> ]]></error>
> <system-out><![CDATA[ <-- EOF
> {code}
> *Possible cause:*
> It seems that Junit 4.7 Runner considers each rerun as a separate test set,
> so sends _testSetCompleted_ event each time, but after the first event
> _DeferredFileOutputStream_ and associated with it temp file gets
> freed(deleted), however _testSetCompleted_ event for rerun still tries to
> write something there. If temp file isn't yet created (still in memory) then
> there will be no bug and it gets created only after 1m characters were
> written to the stream. I wasn't able to understand wether multiple
> _testSetCompleted_ events is a bug here or a "rerun" trying to write to
> _DeferredFileOutputStream_ of initial test run.
>
> *Project to reproduce:*
> *[https://github.com/himos/surefire-report-bug]*
--
This message was sent by Atlassian Jira
(v8.3.4#803005)