String buildColoredMessage(Throwable t, String c1) { if(t == null) return "null"; if(!logExceptionClass || (!logAssert && (t instanceof AssertionError))) return t.getMessage(); StringBuilder b = new StringBuilder(); String cn = decodeName(t.getClass().getName()); int pos1 = cn.indexOf('$'); int pos2 = pos1 == -1 ? cn.lastIndexOf('.') : cn.lastIndexOf('.', pos1); if(pos2 == -1) b.append(c(cn, c1)); else { b.append(cn.substring(0, pos2)); b.append('.'); b.append(c(cn.substring(pos2+1), c1)); } b.append(": ").append(t.getMessage()); return b.toString(); }
@Override public String fullyQualifiedName() { return filterAnsi(ansiName); }
@Override public void testRunStarted(Description description) { debugOrInfo(c("Test run started", INFO)); }
void info(String s) { for(Logger l : loggers) if(settings.color && l.ansiCodesSupported()) l.info(s); else l.info(filterAnsi(s)); }
private String stackTraceElementToString(StackTraceElement e, String testClassName, String testFileName) { boolean highlight = settings.color && ( testClassName.equals(e.getClassName()) || (testFileName != null && testFileName.equals(e.getFileName())) ); StringBuilder b = new StringBuilder(); b.append(settings.decodeName(e.getClassName() + '.' + e.getMethodName())); b.append('('); if(e.isNativeMethod()) b.append(c("Native Method", highlight ? TESTFILE2 : null)); else if(e.getFileName() == null) b.append(c("Unknown Source", highlight ? TESTFILE2 : null)); else { b.append(c(e.getFileName(), highlight ? TESTFILE1 : null)); if(e.getLineNumber() >= 0) b.append(':').append(c(String.valueOf(e.getLineNumber()), highlight ? TESTFILE2 : null)); } return b.append(')').toString(); }
void debug(String s) { for(Logger l : loggers) if(settings.color && l.ansiCodesSupported()) l.debug(s); else l.debug(filterAnsi(s)); }
@Override public void testRunFinished(Result result) { debugOrInfo(c("Test run finished: ", INFO)+ c(result.getFailureCount()+" failed", result.getFailureCount() > 0 ? ERRCOUNT : INFO)+ c(", ", INFO)+ c(result.getIgnoreCount()+" ignored", result.getIgnoreCount() > 0 ? IGNCOUNT : INFO)+ c(", "+result.getRunCount()+" total, "+(result.getRunTime()/1000.0)+"s", INFO)); }
void error(String s) { for(Logger l : loggers) if(settings.color && l.ansiCodesSupported()) l.error(s); else l.error(filterAnsi(s)); }
private String buildColoredName(Description desc, String c1, String c2, String c3) { StringBuilder b = new StringBuilder(); String cn = decodeName(desc.getClassName()); int pos1 = cn.indexOf('$'); int pos2 = pos1 == -1 ? cn.lastIndexOf('.') : cn.lastIndexOf('.', pos1); if(pos2 == -1) b.append(c(cn, c1)); else { b.append(cn.substring(0, pos2)); b.append('.'); b.append(c(cn.substring(pos2+1), c1)); } String m = desc.getMethodName(); if(m != null) { b.append('.'); int mpos1 = m.lastIndexOf('['); int mpos2 = m.lastIndexOf(']'); if(mpos1 == -1 || mpos2 < mpos1) b.append(c(decodeName(m), c2)); else { b.append(c(decodeName(m.substring(0, mpos1)), c2)); b.append('['); b.append(c(m.substring(mpos1+1, mpos2), c3)); b.append(']'); } } return b.toString(); }
void warn(String s) { for(Logger l : loggers) if(settings.color && l.ansiCodesSupported()) l.warn(s); else l.warn(filterAnsi(s)); }
void testExecutionFailed(String testName, Throwable err) { post(new Event(Ansi.c(testName, Ansi.ERRMSG), settings.buildErrorMessage(err), Status.Error, 0l, err) { void logTo(RichLogger logger) { logger.error("Execution of test "+ansiName+" failed: "+ansiMsg, error); } }); }