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

Alexander Kriegisch commented on SUREFIRE-1614:
-----------------------------------------------

For me this is not fixed, I also tried 3.0.0-M4 in Failsafe. Besides, I am not 
using JUnit 5 Jupiter but plain old JUnit 4.

My situation is that I use a Java agent via

{code:xml}
<reuseForks>false</reuseForks>
<argLine>-javaagent:path/to/my-agent.jar</argLine>
{code}

where the agent prints to `System.out` because instrumenting agents should not 
pull a lot of dependencies before maybe wishing to instrument their bytecode 
later. But still they want to print some diagnostic output for debugging 
purposes or because of error conditions. This has been bugging me for a long 
time. I cannot understand why this does not get fixed.

> 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