in maven-surefire-common/src/main/java/org/apache/maven/plugin/surefire/booterclient/ForkStarter.java [426:466]
private static RunResult awaitResultsDone(Collection<Future<RunResult>> results, ExecutorService executorService)
throws SurefireBooterForkException {
RunResult globalResult = new RunResult(0, 0, 0, 0);
SurefireBooterForkException exception = null;
for (Future<RunResult> result : results) {
try {
RunResult cur = result.get();
if (cur != null) {
globalResult = globalResult.aggregate(cur);
} else {
throw new SurefireBooterForkException("No results for " + result.toString());
}
} catch (InterruptedException e) {
executorService.shutdownNow();
currentThread().interrupt();
throw new SurefireBooterForkException("Interrupted", e);
} catch (ExecutionException e) {
Throwable realException = e.getCause();
if (realException == null) {
if (exception == null) {
exception = new SurefireBooterForkException(EXECUTION_EXCEPTION);
}
} else {
String previousError = "";
if (exception != null
&& !EXECUTION_EXCEPTION.equals(
exception.getLocalizedMessage().trim())) {
previousError = exception.getLocalizedMessage() + "\n";
}
String error = previousError + EXECUTION_EXCEPTION + " " + realException.getLocalizedMessage();
exception = new SurefireBooterForkException(error, realException);
}
}
}
if (exception != null) {
throw exception;
}
return globalResult;
}