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.util.List;
34 import java.util.Map;
35 import java.util.concurrent.ConcurrentHashMap;
36
37 import static org.apache.maven.plugin.surefire.report.ConsoleReporter.BRIEF;
38 import static org.apache.maven.plugin.surefire.report.ConsoleReporter.PLAIN;
39
40
41
42
43
44
45
46 public final class StartupReportConfiguration
47 {
48 public static final String BRIEF_REPORT_FORMAT = BRIEF;
49
50 public static final String PLAIN_REPORT_FORMAT = PLAIN;
51
52 private final PrintStream originalSystemOut;
53
54 private final PrintStream originalSystemErr;
55
56 private final boolean useFile;
57
58 private final boolean printSummary;
59
60 private final String reportFormat;
61
62 private final String reportNameSuffix;
63
64 private final File statisticsFile;
65
66 private final boolean requiresRunHistory;
67
68 private final boolean redirectTestOutputToFile;
69
70 private final boolean disableXmlReport;
71
72 private final File reportsDirectory;
73
74 private final boolean trimStackTrace;
75
76 private final int rerunFailingTestsCount;
77
78 private final String xsdSchemaLocation;
79
80 private final Map<String, Map<String, List<WrappedReportEntry>>> testClassMethodRunHistory
81 = new ConcurrentHashMap<String, Map<String, List<WrappedReportEntry>>>();
82
83 private StatisticsReporter statisticsReporter;
84
85 @SuppressWarnings( "checkstyle:parameternumber" )
86 public StartupReportConfiguration( boolean useFile, boolean printSummary, String reportFormat,
87 boolean redirectTestOutputToFile, boolean disableXmlReport,
88 @Nonnull File reportsDirectory, boolean trimStackTrace, String reportNameSuffix,
89 File statisticsFile, boolean requiresRunHistory,
90 int rerunFailingTestsCount, String xsdSchemaLocation )
91 {
92 this.useFile = useFile;
93 this.printSummary = printSummary;
94 this.reportFormat = reportFormat;
95 this.redirectTestOutputToFile = redirectTestOutputToFile;
96 this.disableXmlReport = disableXmlReport;
97 this.reportsDirectory = reportsDirectory;
98 this.trimStackTrace = trimStackTrace;
99 this.reportNameSuffix = reportNameSuffix;
100 this.statisticsFile = statisticsFile;
101 this.requiresRunHistory = requiresRunHistory;
102 this.originalSystemOut = System.out;
103 this.originalSystemErr = System.err;
104 this.rerunFailingTestsCount = rerunFailingTestsCount;
105 this.xsdSchemaLocation = xsdSchemaLocation;
106 }
107
108
109
110
111
112
113 public static StartupReportConfiguration defaultValue()
114 {
115 File target = new File( "./target" );
116 File statisticsFile = new File( target, "TESTHASH" );
117 return new StartupReportConfiguration( true, true, "PLAIN", false, false, target, false, null, statisticsFile,
118 false, 0, null );
119 }
120
121
122
123
124
125
126 public static StartupReportConfiguration defaultNoXml()
127 {
128 File target = new File( "./target" );
129 File statisticsFile = new File( target, "TESTHASHxXML" );
130 return new StartupReportConfiguration( true, true, "PLAIN", false, true, target, false, null, statisticsFile,
131 false, 0, null );
132 }
133
134 public boolean isUseFile()
135 {
136 return useFile;
137 }
138
139 public boolean isPrintSummary()
140 {
141 return printSummary;
142 }
143
144 public String getReportFormat()
145 {
146 return reportFormat;
147 }
148
149 public String getReportNameSuffix()
150 {
151 return reportNameSuffix;
152 }
153
154 public boolean isRedirectTestOutputToFile()
155 {
156 return redirectTestOutputToFile;
157 }
158
159 public boolean isDisableXmlReport()
160 {
161 return disableXmlReport;
162 }
163
164 public File getReportsDirectory()
165 {
166 return reportsDirectory;
167 }
168
169 public int getRerunFailingTestsCount()
170 {
171 return rerunFailingTestsCount;
172 }
173
174 public StatelessXmlReporter instantiateStatelessXmlReporter()
175 {
176 return isDisableXmlReport()
177 ? null
178 : new StatelessXmlReporter( reportsDirectory, reportNameSuffix, trimStackTrace, rerunFailingTestsCount,
179 testClassMethodRunHistory, xsdSchemaLocation );
180 }
181
182 public FileReporter instantiateFileReporter()
183 {
184 return isUseFile() && isBriefOrPlainFormat()
185 ? new FileReporter( reportsDirectory, getReportNameSuffix() )
186 : null;
187 }
188
189 public boolean isBriefOrPlainFormat()
190 {
191 String fmt = getReportFormat();
192 return BRIEF_REPORT_FORMAT.equals( fmt ) || PLAIN_REPORT_FORMAT.equals( fmt );
193 }
194
195 public TestcycleConsoleOutputReceiver instantiateConsoleOutputFileReporter()
196 {
197 return isRedirectTestOutputToFile()
198 ? new ConsoleOutputFileReporter( reportsDirectory, getReportNameSuffix() )
199 : new DirectConsoleOutput( originalSystemOut, originalSystemErr );
200 }
201
202 public synchronized StatisticsReporter getStatisticsReporter()
203 {
204 if ( statisticsReporter == null )
205 {
206 statisticsReporter = requiresRunHistory ? new StatisticsReporter( getStatisticsFile() ) : null;
207 }
208 return statisticsReporter;
209 }
210
211 public File getStatisticsFile()
212 {
213 return statisticsFile;
214 }
215
216 public boolean isTrimStackTrace()
217 {
218 return trimStackTrace;
219 }
220
221 public boolean isRequiresRunHistory()
222 {
223 return requiresRunHistory;
224 }
225
226 public PrintStream getOriginalSystemOut()
227 {
228 return originalSystemOut;
229 }
230
231 public String getXsdSchemaLocation()
232 {
233 return xsdSchemaLocation;
234 }
235 }