[SUREFIRE-2095] Fork crash doesn't fail build with -Dmaven.test.failure.ignore=true when run with failsafe #545
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When
maven.test.failure.ignore
is enabled, a test that crashes the JVM (e.g. that causes an OOM, with-XX:+CrashOnOutOfMemoryError
) currently does not cause a build failure. This is perhaps the right behavior but is an issue in a CI setting because the following:Because of that, in a Jenkins setting, the Jenkins Junit plugin does not identify any test failures and the build is marked successful instead of unstable. The forked process crash is only identified in the failsafe-summary XML (in the failureMessage) which AFAIK the Junit plugin does not parse to drive the build status.
This PR ensures that whether test failures are configured to be ignored or not, such a crash in the forked process by the failsafe plugin will always fail the build, to match the new behavior for the surefire plugin in SUREFIRE-1426.
This PR updates the VerifyMojo to pass a SurefireBooterForkException (deserialized from the failureMessage output to the summary XML from the IntegrationTestMojo run prior) to reportExecution so the build is terminated with a MojoExecutionException the same way as it is when tests are run by the surefire plugin (AbstractSurefireMojo).
See 6e60b03 for the corresponding fix for the surefire plugin (SUREFIRE-1426), that this leverages.
Following this checklist to help us incorporate your
contribution quickly and easily:
for the change (usually before you start working on it). Trivial changes like typos do not
require a JIRA issue. Your pull request should address just this issue, without
pulling in other changes.
[SUREFIRE-XXX] - Fixes bug in ApproximateQuantiles
,where you replace
SUREFIRE-XXX
with the appropriate JIRA issue. Best practiceis to use the JIRA issue title in the pull request title and in the first line of the
commit message.
mvn clean install
to make sure basic checks pass. A more thorough check willbe performed on your pull request automatically.
mvn -Prun-its clean install
).If your pull request is about ~20 lines of code you don't need to sign an
Individual Contributor License Agreement if you are unsure
please ask on the developers list.
To make clear that you license your contribution under
the Apache License Version 2.0, January 2004
you have to acknowledge this by using the following check-box.
I hereby declare this contribution to be licenced under the Apache License Version 2.0, January 2004
In any other case, please file an Apache Individual Contributor License Agreement.