1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.log4j.util;
19
20 import java.util.regex.Pattern;
21
22
23 public class JunitTestRunnerFilter implements Filter {
24
25 private static final String[] PATTERNS = {
26 "at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner",
27 "at org.apache.tools.ant",
28 "at junit.textui.TestRunner",
29 "at com.intellij.rt.execution.junit",
30 "at java.lang.reflect.Method.invoke",
31 "at org.apache.maven.",
32 "at org.codehaus.",
33 "at org.junit.internal.runners."
34 };
35 private final Pattern[] patterns;
36
37 public JunitTestRunnerFilter() {
38 patterns = new Pattern[PATTERNS.length];
39 for (int i = 0; i < PATTERNS.length; i++) {
40 patterns[i] = Pattern.compile(PATTERNS[i]);
41 }
42
43 }
44
45 /***
46 * Filter out stack trace lines coming from the various JUnit TestRunners.
47 */
48 public String filter(String in) {
49 if (in == null) {
50 return null;
51 }
52
53
54
55
56 if (in.indexOf("at junit.framework.TestCase.runTest") != -1) {
57 return "\tat java.lang.reflect.Method.invoke(X)\n" + in;
58 }
59
60 for (int i = 0; i < patterns.length; i++) {
61 if(patterns[i].matcher(in).find()) {
62 return null;
63 }
64 }
65 return in;
66 }
67 }