1 package org.apache.maven.plugin.surefire;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.plugin.surefire.report.ConsoleOutputFileReporter;
23 import org.apache.maven.plugin.surefire.report.DirectConsoleOutput;
24 import org.apache.maven.plugin.surefire.report.FileReporter;
25 import org.apache.maven.plugin.surefire.report.StatelessXmlReporter;
26 import org.apache.maven.plugin.surefire.report.TestcycleConsoleOutputReceiver;
27 import org.apache.maven.plugin.surefire.report.WrappedReportEntry;
28 import org.apache.maven.plugin.surefire.runorder.StatisticsReporter;
29
30 import javax.annotation.Nonnull;
31 import java.io.File;
32 import java.io.PrintStream;
33 import java.nio.charset.Charset;
34 import java.util.List;
35 import java.util.Map;
36 import java.util.concurrent.ConcurrentHashMap;
37
38 import static org.apache.maven.plugin.surefire.report.ConsoleReporter.BRIEF;
39 import static org.apache.maven.plugin.surefire.report.ConsoleReporter.PLAIN;
40 import static org.apache.commons.lang3.StringUtils.trimToNull;
41
42
43
44
45
46
47
48 public final class StartupReportConfiguration
49 {
50 public static final String BRIEF_REPORT_FORMAT = BRIEF;
51
52 public static final String PLAIN_REPORT_FORMAT = PLAIN;
53
54 private final PrintStream originalSystemOut;
55
56 private final PrintStream originalSystemErr;
57
58 private final boolean useFile;
59
60 private final boolean printSummary;
61
62 private final String reportFormat;
63
64 private final String reportNameSuffix;
65
66 private final File statisticsFile;
67
68 private final boolean requiresRunHistory;
69
70 private final boolean redirectTestOutputToFile;
71
72 private final boolean disableXmlReport;
73
74 private final File reportsDirectory;
75
76 private final boolean trimStackTrace;
77
78 private final int rerunFailingTestsCount;
79
80 private final String xsdSchemaLocation;
81
82 private final Map<String, Map<String, List<WrappedReportEntry>>> testClassMethodRunHistory
83 = new ConcurrentHashMap<String, Map<String, List<WrappedReportEntry>>>();
84
85 private final Charset encoding;
86
87 private StatisticsReporter statisticsReporter;
88
89 @SuppressWarnings( "checkstyle:parameternumber" )
90 public StartupReportConfiguration( boolean useFile, boolean printSummary, String reportFormat,
91 boolean redirectTestOutputToFile, boolean disableXmlReport,
92 @Nonnull File reportsDirectory, boolean trimStackTrace, String reportNameSuffix,
93 File statisticsFile, boolean requiresRunHistory,
94 int rerunFailingTestsCount, String xsdSchemaLocation, String encoding )
95 {
96 this.useFile = useFile;
97 this.printSummary = printSummary;
98 this.reportFormat = reportFormat;
99 this.redirectTestOutputToFile = redirectTestOutputToFile;
100 this.disableXmlReport = disableXmlReport;
101 this.reportsDirectory = reportsDirectory;
102 this.trimStackTrace = trimStackTrace;
103 this.reportNameSuffix = reportNameSuffix;
104 this.statisticsFile = statisticsFile;
105 this.requiresRunHistory = requiresRunHistory;
106 this.originalSystemOut = System.out;
107 this.originalSystemErr = System.err;
108 this.rerunFailingTestsCount = rerunFailingTestsCount;
109 this.xsdSchemaLocation = xsdSchemaLocation;
110 String charset = trimToNull( encoding );
111 this.encoding = charset == null ? Charset.defaultCharset() : Charset.forName( charset );
112 }
113
114 public boolean isUseFile()
115 {
116 return useFile;
117 }
118
119 public boolean isPrintSummary()
120 {
121 return printSummary;
122 }
123
124 public String getReportFormat()
125 {
126 return reportFormat;
127 }
128
129 public String getReportNameSuffix()
130 {
131 return reportNameSuffix;
132 }
133
134 public boolean isRedirectTestOutputToFile()
135 {
136 return redirectTestOutputToFile;
137 }
138
139 public boolean isDisableXmlReport()
140 {
141 return disableXmlReport;
142 }
143
144 public File getReportsDirectory()
145 {
146 return reportsDirectory;
147 }
148
149 public int getRerunFailingTestsCount()
150 {
151 return rerunFailingTestsCount;
152 }
153
154 public StatelessXmlReporter instantiateStatelessXmlReporter()
155 {
156 return isDisableXmlReport()
157 ? null
158 : new StatelessXmlReporter( reportsDirectory, reportNameSuffix, trimStackTrace, rerunFailingTestsCount,
159 testClassMethodRunHistory, xsdSchemaLocation );
160 }
161
162 public FileReporter instantiateFileReporter()
163 {
164 return isUseFile() && isBriefOrPlainFormat()
165 ? new FileReporter( reportsDirectory, getReportNameSuffix(), encoding )
166 : null;
167 }
168
169 public boolean isBriefOrPlainFormat()
170 {
171 String fmt = getReportFormat();
172 return BRIEF_REPORT_FORMAT.equals( fmt ) || PLAIN_REPORT_FORMAT.equals( fmt );
173 }
174
175 public TestcycleConsoleOutputReceiver instantiateConsoleOutputFileReporter()
176 {
177 return isRedirectTestOutputToFile()
178 ? new ConsoleOutputFileReporter( reportsDirectory, getReportNameSuffix() )
179 : new DirectConsoleOutput( originalSystemOut, originalSystemErr );
180 }
181
182 public synchronized StatisticsReporter getStatisticsReporter()
183 {
184 if ( statisticsReporter == null )
185 {
186 statisticsReporter = requiresRunHistory ? new StatisticsReporter( getStatisticsFile() ) : null;
187 }
188 return statisticsReporter;
189 }
190
191 public File getStatisticsFile()
192 {
193 return statisticsFile;
194 }
195
196 public boolean isTrimStackTrace()
197 {
198 return trimStackTrace;
199 }
200
201 public boolean isRequiresRunHistory()
202 {
203 return requiresRunHistory;
204 }
205
206 public PrintStream getOriginalSystemOut()
207 {
208 return originalSystemOut;
209 }
210
211 public String getXsdSchemaLocation()
212 {
213 return xsdSchemaLocation;
214 }
215
216 public Charset getEncoding()
217 {
218 return encoding;
219 }
220 }