1 | |
package org.jbehave.core.reporters; |
2 | |
|
3 | |
import static java.util.Arrays.asList; |
4 | |
|
5 | |
import java.io.ByteArrayOutputStream; |
6 | |
import java.io.PrintStream; |
7 | |
import java.util.List; |
8 | |
import java.util.Properties; |
9 | |
|
10 | |
import org.jbehave.core.configuration.Keywords; |
11 | |
|
12 | |
|
13 | |
|
14 | |
|
15 | |
|
16 | |
|
17 | |
public class IdeOnlyConsoleOutput extends TxtOutput { |
18 | |
|
19 | |
public IdeOnlyConsoleOutput() { |
20 | 1 | super(output()); |
21 | 1 | } |
22 | |
|
23 | |
public IdeOnlyConsoleOutput(Keywords keywords) { |
24 | 3 | super(output(), keywords); |
25 | 3 | } |
26 | |
|
27 | |
public IdeOnlyConsoleOutput(Properties outputPatterns, Keywords keywords, boolean reportErrors) { |
28 | 1 | super(output(), outputPatterns, keywords, reportErrors); |
29 | 1 | } |
30 | |
|
31 | |
static PrintStream output() { |
32 | 5 | if (inIDE()) { |
33 | 0 | return System.out; |
34 | |
} |
35 | 5 | return new PrintStream(new ByteArrayOutputStream()); |
36 | |
} |
37 | |
|
38 | |
static boolean inIDE() { |
39 | 5 | List<String> idePackages = asList("com.intellij", "org.eclipse"); |
40 | 183 | for (StackTraceElement ste : Thread.currentThread().getStackTrace()) { |
41 | 178 | for (String idePackage : idePackages) { |
42 | 356 | if (ste.getClassName().startsWith(idePackage)) { |
43 | 0 | return true; |
44 | |
} |
45 | |
} |
46 | |
} |
47 | 5 | return false; |
48 | |
} |
49 | |
} |