Sebastian Schuth created SUREFIRE-962:
-----------------------------------------
Summary: SmartStackTraceParser cannot handle manipulated stack
traces gracefully
Key: SUREFIRE-962
URL: https://jira.codehaus.org/browse/SUREFIRE-962
Project: Maven Surefire
Issue Type: Bug
Environment: 2.13, 2.14-SNAPSHOT
Reporter: Sebastian Schuth
Following setup:
cucumber-jvm runs specs using a JUnit Test case.
In case of an error, surefire seems to try to be smart and parses the stack
trace cucumber-jvm has, well, somewhat manipulated.
As far as i can tell, {{SmartStackTraceParser}} is not able to handle
manipulated stack traces gracefully.
This leads to following maven output:
{code}
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-surefire-plugin:2.14-SNAPSHOT:test
(default-test) on project customer: Execution default-test of goal
org.apache.maven.plugins:maven-surefire-plugin:2.14-SNAPSHOT:test failed: There
was an error in the forked process
[ERROR] org.apache.maven.surefire.testset.TestSetFailedException:
java.lang.RuntimeException: java.lang.ClassNotFoundException: Scenario:
Destinations get exchanged; nested exception is java.lang.RuntimeException:
java.lang.ClassNotFoundException: Scenario: Destinations get exchanged
[ERROR] java.lang.RuntimeException: java.lang.ClassNotFoundException: Scenario:
Destinations get exchanged
[ERROR] at
org.apache.maven.surefire.report.SmartStackTraceParser.getClass(SmartStackTraceParser.java:67)
[ERROR] at
org.apache.maven.surefire.report.SmartStackTraceParser.<init>(SmartStackTraceParser.java:53)
[ERROR] at
org.apache.maven.surefire.common.junit4.JUnit4StackTraceWriter.smartTrimmedStackTrace(JUnit4StackTraceWriter.java:72)
[ERROR] at
org.apache.maven.surefire.booter.ForkingRunListener.encode(ForkingRunListener.java:329)
[ERROR] at
org.apache.maven.surefire.booter.ForkingRunListener.encode(ForkingRunListener.java:313)
[ERROR] at
org.apache.maven.surefire.booter.ForkingRunListener.toString(ForkingRunListener.java:259)
[ERROR] at
org.apache.maven.surefire.booter.ForkingRunListener.testFailed(ForkingRunListener.java:138)
[ERROR] at
org.apache.maven.surefire.common.junit4.JUnit4RunListener.testFailure(JUnit4RunListener.java:107)
[ERROR] at
org.junit.runner.notification.RunNotifier$4.notifyListener(RunNotifier.java:139)
[ERROR] at
org.junit.runner.notification.RunNotifier$SafeNotifier.run(RunNotifier.java:61)
[ERROR] at
org.junit.runner.notification.RunNotifier.fireTestFailures(RunNotifier.java:134)
[ERROR] at
org.junit.runner.notification.RunNotifier.fireTestFailure(RunNotifier.java:128)
[ERROR] at
org.junit.internal.runners.model.EachTestNotifier.addFailure(EachTestNotifier.java:23)
[ERROR] at cucumber.runtime.junit.JUnitReporter.result(JUnitReporter.java:83)
[ERROR] at cucumber.runtime.Runtime.runStep(Runtime.java:278)
[ERROR] at cucumber.runtime.model.StepContainer.runStep(StepContainer.java:45)
[ERROR] at cucumber.runtime.model.StepContainer.runSteps(StepContainer.java:40)
[ERROR] at cucumber.runtime.model.CucumberScenario.run(CucumberScenario.java:36)
[ERROR] at
cucumber.runtime.junit.ExecutionUnitRunner.run(ExecutionUnitRunner.java:83)
[ERROR] at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:63)
[ERROR] at cucumber.runtime.junit.FeatureRunner.runChild(FeatureRunner.java:18)
{code}
Version 2.12.3 can handle the manipulated stack trace.
To be clear: i am not really sure if this is an error within surefire or if
cucumber-jvm should just keep its hands off the stack trace it produces, but
the behavior of surefire changed between 2.12 and 2.13, so this may be worth
fixing.
If you are interested in fixing this, i will happily create a project for
reproducing the error.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://jira.codehaus.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira