Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.6
-
None
Description
After some tests of proper behavior, surefire stops logging the console output (stderr & stdout) to the files. For the first tests that are executed, the Xxxxx-output.txt files contain the correct console output. But from some test in the test suite, all those files are blank.
My environment: Mac with
Java(TM) SE Runtime Environment (build 1.6.0_20-b02-279-10M3065)
Java HotSpot(TM) 64-Bit Server VM (build 16.3-b01-279, mixed mode)
Apache Maven 2.2.0 (r788681; 2009-06-26 15:04:01+0200)
Java version: 1.6.0_20
Java home: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x" version: "10.6.4" arch: "x86_64" Family: "mac"
Using Surefire 2.6
I've done following observations:
- The exact test where the console capturing stops can vary a couple of tests, but it always happens. Could it be related to memory? Increasing from MAVEN_OPTS="-Xmx1024m -Xms512m" to MAVEN_OPTS="-Xmx2048m -Xms512m" didn't have an effect
- When debugging, as long as the output is ok, System.err.checkError() returns false. Once the output files get blank, System.err.checkError() returns true.
- The problem doesn't occur when running the same test suite in eclipse.
- When I didn't specify surefire version, I got 2.4.something. When I explicitely set the version to 2.6, then the test suite started failing half way with out of memory exceptions.
- Then I configured <forkMode>always</forkMode>. That made the whole test suite run fine (no memory exceptions and all log files being produced) but then it takes a very long time.
- I traced closing of the system err stream until SystemStreamCapturer
76 public void restoreStreams()
77Unknown macro: {78 // Note that the fields can be null if the test hasn't even started yet (an early error)79 if ( oldOut != null )80 { 81 System.setOut( oldOut ); 82 }83 if ( oldErr != null )84 { 85 System.setErr( oldErr ); 86 }87 88 IOUtil.close( newOut );89 IOUtil.close( newErr );90 }
But there I couldn't find how to trace it further and gave up.
To reproduce: (only tested on mac)
check out https://svn.codehaus.org/activiti/activiti/trunk and then on the root do
mvn clean install
only the first executed tests will contain properly captured output in modules/activiti-engine/target/surefire-reports/*-output.txt