Allow tests to System.exit() by default

Otherwise the ApplicationContext stays alive and if it's a
server app the JVM does not exit at the end of "spring test".
User can override with "spring test foo.groovy --nohup"
(which we have to do in our unit tests).
This commit is contained in:
Dave Syer
2014-05-28 15:47:55 +01:00
parent 7fd26a556d
commit 8436627598
4 changed files with 16 additions and 1 deletions

View File

@@ -50,6 +50,7 @@ public class SpringCli {
int exitCode = runner.runAndHandleErrors(args);
if (exitCode != 0) {
// If successful, leave it to run in case it's a server app
System.exit(exitCode);
}
}

View File

@@ -17,6 +17,7 @@
package org.springframework.boot.cli.command.test;
import joptsimple.OptionSet;
import joptsimple.OptionSpec;
import org.springframework.boot.cli.command.Command;
import org.springframework.boot.cli.command.OptionParsingCommand;
@@ -45,6 +46,12 @@ public class TestCommand extends OptionParsingCommand {
private TestRunner runner;
@Override
protected void doOptions() {
option("nohup",
"Flag to indicate that the JVM should not exit when tests are finished");
}
@Override
protected void run(OptionSet options) throws Exception {
SourceOptions sourceOptions = new SourceOptions(options);
@@ -53,6 +60,9 @@ public class TestCommand extends OptionParsingCommand {
this.runner = new TestRunner(configuration, sourceOptions.getSourcesArray(),
sourceOptions.getArgsArray());
this.runner.compileAndRunTests();
if (!options.has("nohup")) {
System.exit(0); // TODO: non-zero if test fails?
}
}
/**