maven-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pavel Pustovoyt (Jira)" <j...@apache.org>
Subject [jira] [Created] (SUREFIRE-1821) Broken junit report when parallel and rerunFailingTestsCount is used
Date Wed, 15 Jul 2020 12:40:00 GMT
Pavel Pustovoyt created SUREFIRE-1821:
-----------------------------------------

             Summary: Broken junit report when parallel and rerunFailingTestsCount 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: 3.0.0-M5, 2.22.2, 2.20.1
            Reporter: Pavel Pustovoyt


*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)

Mime
View raw message