private static RunResult awaitResultsDone()

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;
    }