public LocationImpl() { this(new StackTraceFilter()); }
@Override public boolean isIn(StackTraceElement e) { if (isFromMockitoRunner(e.getClassName()) || isFromMockitoRule(e.getClassName())) { return true; } else if (isMockDispatcher(e.getClassName()) || isFromMockito(e.getClassName())) { return false; } else { return true; } }
public MockitoAssertionError(String message) { super(message); unfilteredStackTrace = getStackTrace(); ConditionalStackTraceFilter filter = new ConditionalStackTraceFilter(); filter.filter(this); }
private boolean hasBeenCaughtByMockitoProxy() { StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace(); StackTraceFilter filter = new StackTraceFilter(); /* * We filter the stack-trace to check if "Mockito" exists as a stack trace element. (The filter method * remove all Mocktio stack trace elements). If the filtered stack trace length is not equal to the original stack trace length * this means that the call has been caught by Mockito. */ final StackTraceElement[] filteredStackTrace = filter.filter(stackTrace, true); return filteredStackTrace.length != stackTrace.length; }
@Override public String toString() { //TODO SF perhaps store the results after invocation? StackTraceElement[] filtered = stackTraceFilter.filter(stackTraceHolder.getStackTrace(), false); if (filtered.length == 0) { return "-> at <<unknown line>>"; } return "-> at " + filtered[0].toString(); }
public Object answer(InvocationOnMock invocation) throws Throwable { Throwable throwable = (Throwable) ObjenesisHelper.newInstance(throwableClass); throwable.fillInStackTrace(); filter.filter(throwable); throw throwable; }
private LocationImpl(StackTraceFilter stackTraceFilter, Throwable stackTraceHolder) { this.stackTraceFilter = stackTraceFilter; this.stackTraceHolder = stackTraceHolder; if (stackTraceHolder.getStackTrace() == null || stackTraceHolder.getStackTrace().length == 0) { //there are corner cases where exception can have a null or empty stack trace //for example, a custom exception can override getStackTrace() method this.sourceFile = "<unknown source file>"; } else { this.sourceFile = stackTraceFilter.findSourceFile(stackTraceHolder.getStackTrace(), "<unknown source file>"); } }
private void filterStackTrace() { unfilteredStackTrace = getStackTrace(); ConditionalStackTraceFilter filter = new ConditionalStackTraceFilter(); filter.filter(this); }
@Override public String toString() { StackTraceElement[] filtered = stackTraceFilter.filter(stackTraceHolder.getStackTrace(), false); if (filtered.length == 0) { return "-> at <<unknown line>>"; } return "-> at " + filtered[0].toString(); } }
public Object answer(InvocationOnMock invocation) throws Throwable { if (new MockUtil().isMock(throwable)) { throw throwable; } Throwable t = throwable.fillInStackTrace(); filter.filter(t); throw t; }
public ArgumentsAreDifferent(String message, String wanted, String actual) { super(message, wanted, actual); this.message = message; unfilteredStackTrace = getStackTrace(); ConditionalStackTraceFilter filter = new ConditionalStackTraceFilter(); filter.filter(this); }
public void filter(Throwable throwable) { if (!config.cleansStackTrace()) { return; } StackTraceElement[] filtered = filter.filter(throwable.getStackTrace(), true); throwable.setStackTrace(filtered); } }
private void filterStackTrace() { unfilteredStackTrace = super.getStackTrace(); ConditionalStackTraceFilter filter = new ConditionalStackTraceFilter(); filter.filter(this); }
public void filter(Throwable throwable) { if (!config.cleansStackTrace()) { return; } StackTraceElement[] filtered = filter.filter(throwable.getStackTrace(), true); throwable.setStackTrace(filtered); } }
@Override public Object invoke() throws Throwable { try { return behavior.call(); } catch (Throwable t) { new ConditionalStackTraceFilter().filter(t); throw t; } } }
public Object invoke(Object target, Object[] arguments) throws Throwable { try { return realMethod.invoke(target, arguments); } catch (Throwable t) { new ConditionalStackTraceFilter().filter(t); throw t; } }
public ArgumentsAreDifferent(String message, String wanted, String actual) { super(message, wanted, actual); this.message = message; unfilteredStackTrace = getStackTrace(); ConditionalStackTraceFilter filter = new ConditionalStackTraceFilter(); filter.filter(this); }
public MockitoAssertionError(String message) { super(message); unfilteredStackTrace = getStackTrace(); ConditionalStackTraceFilter filter = new ConditionalStackTraceFilter(); filter.filter(this); }
private void filterStackTrace() { unfilteredStackTrace = getStackTrace(); ConditionalStackTraceFilter filter = new ConditionalStackTraceFilter(); filter.filter(this); }
private static Object tryInvoke(Method origin, Object instance, Object[] arguments) throws Throwable { try { return origin.invoke(instance, arguments); } catch (InvocationTargetException exception) { Throwable cause = exception.getCause(); new ConditionalStackTraceFilter().filter(hideRecursiveCall(cause, new Throwable().getStackTrace().length, origin.getDeclaringClass())); throw cause; } }