code: private void emitSuiteEnd(AggregatedSuiteResultEvent e, int suitesCompleted) throws IOException {
      assert showSuiteSummary;
  
      final StringBuilder b = new StringBuilder();
      final int totalErrors = this.totalErrors.addAndGet(e.isSuccessful() ? 0 : 1);
      b.append(String.format(Locale.ROOT, "%sCompleted [%d/%d%s]%s in %.2fs, ",
          shortTimestamp(e.getStartTimestamp() + e.getExecutionTime()),
          suitesCompleted,
          totalSuites,
          totalErrors == 0 ? "" : " (" + totalErrors + "!)",
          e.getSlave().slaves > 1 ? " on J" + e.getSlave().id : "",
          e.getExecutionTime() / 1000.0d));
      b.append(e.getTests().size()).append(Pluralize.pluralize(e.getTests().size(), " test"));
  
      int failures = e.getFailureCount();
      if (failures > 0) {
        b.append(", ").append(failures).append(Pluralize.pluralize(failures, " failure"));
      }
  
      int errors = e.getErrorCount();
      if (errors > 0) {
        b.append(", ").append(errors).append(Pluralize.pluralize(errors, " error"));
      }
  
      int ignored = e.getIgnoredCount();
      if (ignored > 0) {
        b.append(", ").append(ignored).append(" skipped");
      }
  
      if (!e.isSuccessful()) {
        b.append(FAILURE_STRING);
      }
  
      b.append("\n");
      logShort(b, false);
    }
docs: Suite end.