blob: 9bf71cd245c199ab011598e7f01e0ce17364d0bf [file] [log] [blame]
package org.eclipse.e4.languages.javascript.junit;
import java.util.ArrayList;
import java.util.List;
import junit.framework.AssertionFailedError;
import org.mozilla.javascript.EvaluatorException;
public class JavaScriptAssertionFailedError extends AssertionFailedError {
private static final long serialVersionUID = 8518724972493487259L;
public JavaScriptAssertionFailedError(AssertionFailedError e) {
super(e.getMessage());
initCause(e);
initStackTrace();
}
private void initStackTrace() {
EvaluatorException jsException = new EvaluatorException(null);
List<StackTraceElement> targetTrace = new ArrayList<StackTraceElement>();
StackTraceElement[] traceElements = jsException.getStackTrace();
for (int i = 0; i < traceElements.length; i++) {
StackTraceElement traceElement = traceElements[i];
if (!filter(traceElement))
targetTrace.add(new StackTraceElement("[JavaScript]", "", traceElement.getFileName(), traceElement.getLineNumber()));
}
setStackTrace((StackTraceElement[]) targetTrace.toArray(new StackTraceElement[targetTrace.size()]));
}
private boolean filter(StackTraceElement traceElement) {
if (!traceElement.getClassName().startsWith("org.mozilla.javascript"))
return true;
if (traceElement.getLineNumber() < 1)
return true;
if (traceElement.getFileName().endsWith(".java"))
return true;
if (traceElement.getFileName().startsWith("JavaScriptTestCase_"))
return true;
return false;
}
}