void error(String s, Throwable t) { error(s); if(t != null && (settings.logAssert || !(t instanceof AssertionError))) logStackTrace(t); }
private void logStackTrace(Throwable t) { StackTraceElement[] trace = t.getStackTrace(); String testClassName = currentTestClassName.peek(); String testFileName = settings.color ? findTestFileName(trace, testClassName) : null; logStackTracePart(trace, trace.length-1, 0, t, testClassName, testFileName); }
for(int i=top; i<=m; i++) error(" at " + stackTraceElementToString(trace[i], testClassName, testFileName)); if(m0 != m) error(" ..."); error(" ... " + framesInCommon + " more"); logStackTraceAsCause(trace, t.getCause(), testClassName, testFileName);
private void logStackTraceAsCause(StackTraceElement[] causedTrace, Throwable t, String testClassName, String testFileName) { if(t == null) return; StackTraceElement[] trace = t.getStackTrace(); int m = trace.length - 1, n = causedTrace.length - 1; while(m >= 0 && n >= 0 && trace[m].equals(causedTrace[n])) { m--; n--; } error("Caused by: " + t); logStackTracePart(trace, m, trace.length-1-m, t, testClassName, testFileName); }
void logTo(RichLogger logger) { logger.error("Execution of test "+ansiName+" failed: "+ansiMsg, error); } });
void logTo(RichLogger logger) { logger.info("Test "+ansiName+" ignored"); } });
void logTo(RichLogger logger) { logger.debug("Test "+ansiName+" finished" + durationSuffix()); } });
@Override public void testFinished(Description desc) { uncapture(false); postIfFirst(new InfoEvent(desc, Status.Success) { void logTo(RichLogger logger) { logger.debug("Test "+ansiName+" finished" + durationSuffix()); } }); logger.popCurrentTestClassName(); }
RichLogger logger = new RichLogger(loggers, settings, testClassName); EventDispatcher ed = new EventDispatcher(logger, eventHandler, settings, fingerprint); JUnitCore ju = new JUnitCore();
@Override public void testStarted(Description description) { recordStartTime(description); logger.pushCurrentTestClassName(description.getClassName()); debugOrInfo("Test " + settings.buildInfoName(description) + " started"); capture(); }
void logTo(RichLogger logger) { logger.error("Test "+ansiName+" failed: "+ansiMsg + durationSuffix(), error); } });
void uncapture(boolean replay) { if(settings.quiet && capture != null) { capture.stop(); if(replay) { try { capture.replay(); } catch(IOException ex) { logger.error("Error replaying captured stdio", ex); } } capture = null; } }