[ 
https://issues.apache.org/jira/browse/SUREFIRE-1614?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17098079#comment-17098079
 ] 

Tibor Digana commented on SUREFIRE-1614:
----------------------------------------

[~kriegaex]
You said you do not understand why the real fix gets too long. Simply saying, 
it's because we had to step into intermediate release as we reworked the 
internal code the way it won't break the plugin. The SUREFIRE-1658 has finaly 
made the fix but you have to enable the TCP channel. Maybe you don't understand 
why TCP. So far the plugin and Maven communicated via system output channel. 
The same native channel was used by the JVM and GC, and sometimes the Java 
Agent, LOG4J and the Arquillian. Leaving the system output is the way and we 
had to find another channel. So we have chosen the TCP channels. The same fix 
is also a feature because we received such a requirement where the Surefire JVM 
runs remotely.

> JUnit Runner that writes to System.out corrupts Surefire's STDOUT when using 
> JUnit's Vintage Engine
> ---------------------------------------------------------------------------------------------------
>
>                 Key: SUREFIRE-1614
>                 URL: https://issues.apache.org/jira/browse/SUREFIRE-1614
>             Project: Maven Surefire
>          Issue Type: Bug
>          Components: JUnit 5.x support
>    Affects Versions: 2.22.1, 3.0.0-M2
>            Reporter: Andy Wilkinson
>            Assignee: Christian Stein
>            Priority: Major
>             Fix For: 2.22.2, 3.0.0-M3
>
>         Attachments: surefire-stream-corruption-bug.zip
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> When JUnit Jupiter's Vintage Engine is used to run tests written using the 
> JUnit 4 API, output to the console from a {{TestRunner}} results in 
> Surefire's STDOUT being corrupted:
> {noformat}
> [WARNING] Corrupted STDOUT by directly writing to native stream in forked JVM 
> 1. See FAQ web page and the dump file […]{noformat}
> Note that the test runner is simply calling {{System.out}}. This is to 
> simulate the real world setup where the runner performs some logging that 
> ultimately results in a console appender calling {{System.out}}. The same 
> arrangement does not cause a problem when run using JUnit 4. An initial 
> investigation suggests that the Vintage Engine calls the custom 
> {{TestRunner}} earlier and, it would appear, at a time when Surefire cannot 
> tolerate output to {{System.out}}.
> I have attached a minimal project that reproduces the problem. Running 
> {{./mvnw -Pjunit5 test}} will reproduce the corruption. Running {{./mvnw 
> -Pjunit4 test}} will not.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to