private String calcMessage()

in src/main/java/org/jetbrains/jetCheck/PropertyFalsified.java [28:72]


  private String calcMessage() {
    StringBuilder traceBuilder = new StringBuilder();

    String exampleString = valueToString(failure.getMinimalCounterexample(), traceBuilder);

    Throwable failureReason = failure.getMinimalCounterexample().getExceptionCause();
    Throwable rootCause = failureReason == null ? null : getRootCause(failureReason);
    String msg = rootCause != null && !rootCause.toString().contains("ComparisonFailure") // otherwise IDEA replaces the whole message (including example and rechecking information) with a diff
                 ? "Failed with " + rootCause + "\nOn " + exampleString 
                 : "Falsified on " + exampleString;

    if (!failure.reproducible) {
      msg += "\n\n" + NOT_REPRODUCIBLE;
    }

    msg += "\n" +
           getShrinkingStats() +
           "\n" + failure.iteration.printToReproduce(failureReason, failure.getMinimalCounterexample()) + "\n";

    if (failureReason != null) {
      appendTrace(traceBuilder, 
                  rootCause == failureReason ? "Property failure reason: " : "Property failure reason, innermost exception (see full trace below): ", 
                  rootCause);
    }

    if (failure.getStoppingReason() != null) {
      msg += "\n Shrinking stopped prematurely, see the reason below.";
      appendTrace(traceBuilder, "An unexpected exception happened during shrinking: ", failure.getStoppingReason());
    }
    
    Throwable first = failure.getFirstCounterExample().getExceptionCause();
    if (exceptionsDiffer(first, failure.getMinimalCounterexample().getExceptionCause())) {
      msg += "\n " + FAILURE_REASON_HAS_CHANGED_DURING_SHRINKING;
      StringBuilder secondaryTrace = new StringBuilder();
      traceBuilder.append("\n Initial value: ").append(valueToString(failure.getFirstCounterExample(), secondaryTrace));
      if (first == null) {
        traceBuilder.append("\n Initially property was falsified without exceptions");
        traceBuilder.append(secondaryTrace);
      } else {
        traceBuilder.append(secondaryTrace);
        appendTrace(traceBuilder, "Initially failed because of ", first);
      }
    }
    return msg + traceBuilder;
  }