[ http://jira.codehaus.org/browse/SUREFIRE-432?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Dan Fabulich closed SUREFIRE-432. --------------------------------- Resolution: Fixed Fix Version/s: 2.4.1 submitted revision 615379. > Surefire swallows redirected test output if uncaught exceptions occur in > forked SurefireBooter > ---------------------------------------------------------------------------------------------- > > Key: SUREFIRE-432 > URL: http://jira.codehaus.org/browse/SUREFIRE-432 > Project: Maven Surefire > Issue Type: Bug > Components: process forking > Affects Versions: 2.4 > Environment: Maven 2.0.8, JDK 1.5.0_12, WinXP > Reporter: Benjamin Bentmann > Fix For: 2.4.1 > > Attachments: file-output-consumer-proxy-close.patch, > testng-execute-error.patch, testng-execute-error.patch, > testng-execute-error.patch > > > If Surefire > - forks a test and > - is configured to redirect test output to a file and > - encounters an uncaught exception in its internals > the tests fail (as expected) but the user does not get any information about > the error, i.e. the txt files under target/surefire-reports are of zero > length. This can be quite fustrating. > Attached is an integration test which produces the following exception: > {noformat} > java.lang.reflect.InvocationTargetException > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:585) > at > org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:334) > at > org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:980) > Caused by: org.testng.TestNGException: > Cyclic graph of methods > at org.testng.internal.Graph.topologicalSort(Graph.java:117) > at > org.testng.internal.MethodHelper.topologicalSort(MethodHelper.java:494) > at org.testng.internal.MethodHelper.sortMethods(MethodHelper.java:544) > at > org.testng.internal.MethodHelper.internalCollectAndOrderMethods(MethodHelper.java:77) > at > org.testng.internal.MethodHelper.collectAndOrderMethods(MethodHelper.java:49) > at org.testng.TestRunner.initMethods(TestRunner.java:337) > at org.testng.TestRunner.init(TestRunner.java:216) > at org.testng.TestRunner.init(TestRunner.java:178) > at org.testng.TestRunner.<init>(TestRunner.java:127) > at > org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:454) > at org.testng.SuiteRunner.privateRun(SuiteRunner.java:235) > at org.testng.SuiteRunner.run(SuiteRunner.java:191) > at org.testng.TestNG.createAndRunSuiteRunners(TestNG.java:808) > at org.testng.TestNG.runSuitesLocally(TestNG.java:776) > at org.testng.TestNG.run(TestNG.java:701) > at > org.apache.maven.surefire.testng.TestNGExecutor.run(TestNGExecutor.java:64) > at > org.apache.maven.surefire.testng.TestNGDirectoryTestSuite.execute(TestNGDirectoryTestSuite.java:136) > at org.apache.maven.surefire.Surefire.run(Surefire.java:177) > ... 6 more > {noformat} > This uncaught exception causes abnormal completion of Surefire.run() such > that reporterManager.runCompleted() never gets called. Without the call the > runCompleted(), Reporter.writeFooter() gets never called, too. This means > ForkingStreamConsumer.consumeLine() will never call > OutputConsumer.testSetCompleted(). However, the later call would be required > to properly flush the FileWriter employed by FileOutputConsumerProxy. > I think what is needed is a means in SurefireBooter.fork() to flush/close the > StreamConsumers after the call to CommandLineUtils.executeCommandLine() > returned. -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira