GitHub user michaeltandy opened a pull request:
https://github.com/apache/maven-surefire/pull/130
[SUREFIRE-1295] Attribute JVM crashes to tests
As explained in
[SUREFIRE-1295](https://issues.apache.org/jira/browse/SUREFIRE-1295) it's a
source of some inconvenience to me that, if a test crashes the forked JVM,
there isn't clear logging of which test, if any, was running at the time of the
crash.
This change makes JVM crash handling more like the handling of other
errors, adding the JVM-crashing test to the count of Errors and the list of
Tests in error.
Here's the log output before the patch, from version 2.19.1
```
[INFO] --- maven-surefire-plugin:2.19.1:test (default-test) @
crash-during-test ---
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running junit44.environment.BasicTest
Running junit44.environment.SomeOtherTest
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.027 sec -
in junit44.environment.SomeOtherTest
Results :
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO]
------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 2.149 s
[INFO] Finished at: 2016-10-26T23:12:07+01:00
[INFO] Final Memory: 19M/454M
[INFO]
------------------------------------------------------------------------
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-surefire-plugin:2.19.1:test (default-test) on
project crash-during-test: ExecutionException The forked VM terminated without
properly saying goodbye. VM crash or System.exit called?
[ERROR] Command was /bin/sh -c cd
/home/mtandy/Documents/surefire-vmcrash/maven-surefire/surefire-integration-tests/src/test/resources/crash-during-test
&& /usr/lib/jvm/java-8-oracle/jre/bin/java -jar
/home/mtandy/Documents/surefire-vmcrash/maven-surefire/surefire-integration-tests/src/test/resources/crash-during-test/target/surefire/surefirebooter1367113935938691280.jar
/home/mtandy/Documents/surefire-vmcrash/maven-surefire/surefire-integration-tests/src/test/resources/crash-during-test/target/surefire/surefire6487093419506274719tmp
/home/mtandy/Documents/surefire-vmcrash/maven-surefire/surefire-integration-tests/src/test/resources/crash-during-test/target/surefire/surefire_04459111308039624275tmp
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e
switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions,
please read the following articles:
[ERROR] [Help 1]
http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
```
Here is the log output for the same tests, after applying this patch:
```
[INFO] --- maven-surefire-plugin:2.19.2-SNAPSHOT:test (default-test) @
crash-during-test ---
[INFO]
[INFO] -------------------------------------------------------
[INFO] T E S T S
[INFO] -------------------------------------------------------
[INFO] Running junit44.environment.BasicTest
[WARNING] Missing goodbye handling engaged.
[ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed:
0.035 s <<< FAILURE! - in testCrashJvm(junit44.environment.BasicTest)
[ERROR] testCrashJvm(junit44.environment.BasicTest) Time elapsed: 0.018 s
<<< ERROR!
null
[ERROR] The forked VM terminated without properly saying goodbye. VM crash
or System.exit called?
Command was /bin/sh -c cd
/home/mtandy/Documents/surefire-vmcrash/maven-surefire/surefire-integration-tests/src/test/resources/crash-during-test
&& /usr/lib/jvm/java-8-oracle/jre/bin/java -jar
/home/mtandy/Documents/surefire-vmcrash/maven-surefire/surefire-integration-tests/src/test/resources/crash-during-test/target/surefire/surefirebooter4848491891931563261.jar
/home/mtandy/Documents/surefire-vmcrash/maven-surefire/surefire-integration-tests/src/test/resources/crash-during-test/target/surefire/surefire1002822166442627824tmp
/home/mtandy/Documents/surefire-vmcrash/maven-surefire/surefire-integration-tests/src/test/resources/crash-during-test/target/surefire/surefire_07708768178699511150tmp
Exit code was 66
Tests were running at the time.
[INFO] Running junit44.environment.SomeOtherTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed:
0.023 s - in junit44.environment.SomeOtherTest
[INFO]
[INFO] Results:
[INFO]
[ERROR] Tests in error:
[ERROR]
junit44.environment.BasicTest.testCrashJvm(junit44.environment.BasicTest)
[INFO]
[ERROR] Tests run: 2, Failures: 0, Errors: 1, Skipped: 0
[INFO]
[INFO]
------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO]
------------------------------------------------------------------------
[INFO] Total time: 1.699 s
[INFO] Finished at: 2016-10-26T23:15:11+01:00
[INFO] Final Memory: 19M/446M
[INFO]
------------------------------------------------------------------------
[ERROR] Failed to execute goal
org.apache.maven.plugins:maven-surefire-plugin:2.19.2-SNAPSHOT:test
(default-test) on project crash-during-test: There are test failures.
[ERROR]
[ERROR] Please refer to
/home/mtandy/Documents/surefire-vmcrash/maven-surefire/surefire-integration-tests/src/test/resources/crash-during-test/target/surefire-reports
for the individual test results.
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e
switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions,
please read the following articles:
[ERROR] [Help 1]
http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException
```
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/michaeltandy/maven-surefire
attribute-jvm-crashes-to-tests
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/maven-surefire/pull/130.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #130
----
commit bdfecaf38892b4b37b309f158e69e24a5e16d1cc
Author: mtandy <mtandy@mtandy-desktop>
Date: 2016-10-26T19:31:59Z
If the JVM crashes during a test, report which test was running at the time
of the failure.
commit af2504ff328b463ea2954bacbd0eeaa7a89c4a1b
Author: mtandy <mtandy@mtandy-desktop>
Date: 2016-10-26T20:48:40Z
Integration test for JVM crash attribution
commit 98493ae91beee948d8f5cb0326e6c3e22c3c5471
Author: mtandy <mtandy@mtandy-desktop>
Date: 2016-10-26T21:12:37Z
Remove commented out code, re-enable style checkers
commit 10ce092e1015486f7c838b2b320aaf3e5bde1edc
Author: mtandy <mtandy@mtandy-desktop>
Date: 2016-10-26T22:06:09Z
When forks aren't being reused, check other tests still run.
commit 93d96f769dca5e12c15bb9b75e7452372e38811e
Author: mtandy <mtandy@mtandy-desktop>
Date: 2016-10-26T22:08:00Z
Merge remote-tracking branch 'origin/master' into
attribute-jvm-crashes-to-tests
----
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]