[
http://jira.codehaus.org/browse/SUREFIRE-432?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Benjamin Bentmann updated SUREFIRE-432:
---------------------------------------
Attachment: testng-execute-error.patch
Fixed test, the requirement on TestSuite.txt was too much. All that matters is
the TestSuite-output.txt with the stack trace.
> 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
> Attachments: 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