[ https://issues.apache.org/jira/browse/SUREFIRE-1821?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pavel Pustovoyt updated SUREFIRE-1821: -------------------------------------- Summary: Broken junit report when parallel and rerunFailingTestsCount configureation is used (was: Broken junit report when parallel and rerunFailingTestsCount is used) > 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: 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)