/
ProgressFormatter.java
118 lines (96 loc) · 2.77 KB
/
ProgressFormatter.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package cucumber.formatter;
import gherkin.formatter.Formatter;
import gherkin.formatter.NiceAppendable;
import gherkin.formatter.Reporter;
import gherkin.formatter.ansi.AnsiEscapes;
import gherkin.formatter.model.Background;
import gherkin.formatter.model.Examples;
import gherkin.formatter.model.Feature;
import gherkin.formatter.model.Match;
import gherkin.formatter.model.Result;
import gherkin.formatter.model.Scenario;
import gherkin.formatter.model.ScenarioOutline;
import gherkin.formatter.model.Step;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class ProgressFormatter implements Formatter, Reporter, ColorAware {
private static final Map<String, Character> CHARS = new HashMap<String, Character>() {{
put("passed", '.');
put("undefined", 'U');
put("pending", 'P');
put("skipped", '-');
put("failed", 'F');
}};
private static final Map<String, AnsiEscapes> ANSI_ESCAPES = new HashMap<String, AnsiEscapes>() {{
put("passed", AnsiEscapes.GREEN);
put("undefined", AnsiEscapes.YELLOW);
put("pending", AnsiEscapes.YELLOW);
put("skipped", AnsiEscapes.CYAN);
put("failed", AnsiEscapes.RED);
}};
private final NiceAppendable out;
private boolean monochrome = false;
public ProgressFormatter(Appendable appendable) {
out = new NiceAppendable(appendable);
}
@Override
public void uri(String uri) {
}
@Override
public void feature(Feature feature) {
}
@Override
public void background(Background background) {
}
@Override
public void scenario(Scenario scenario) {
}
@Override
public void scenarioOutline(ScenarioOutline scenarioOutline) {
}
@Override
public void examples(Examples examples) {
}
@Override
public void step(Step step) {
}
@Override
public void eof() {
}
@Override
public void syntaxError(String state, String event, List<String> legalEvents, String uri, Integer line) {
}
@Override
public void done() {
out.println();
}
@Override
public void close() {
out.close();
}
@Override
public void result(Result result) {
if (!monochrome) {
ANSI_ESCAPES.get(result.getStatus()).appendTo(out);
}
out.append(CHARS.get(result.getStatus()));
if (!monochrome) {
AnsiEscapes.RESET.appendTo(out);
}
}
@Override
public void match(Match match) {
}
@Override
public void embedding(String mimeType, InputStream data) {
}
@Override
public void write(String text) {
}
@Override
public void setMonochrome(boolean monochrome) {
this.monochrome = monochrome;
}
}