1 package org.apache.maven.plugin.surefire.report;
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.surefire.report.ReportEntry;
23 import org.apache.maven.surefire.report.ReporterException;
24
25 import java.io.File;
26 import java.io.FileWriter;
27 import java.io.IOException;
28 import java.io.PrintWriter;
29 import java.util.List;
30
31 import static org.apache.maven.plugin.surefire.report.FileReporterUtils.stripIllegalFilenameChars;
32 import static org.apache.maven.surefire.util.internal.StringUtils.isNotBlank;
33
34
35
36
37
38
39
40 public class FileReporter
41 {
42 private final File reportsDirectory;
43
44 private final String reportNameSuffix;
45
46 public FileReporter( File reportsDirectory, String reportNameSuffix )
47 {
48 this.reportsDirectory = reportsDirectory;
49 this.reportNameSuffix = reportNameSuffix;
50 }
51
52 private PrintWriter testSetStarting( ReportEntry report )
53 {
54 File reportFile = getReportFile( reportsDirectory, report.getName(), reportNameSuffix, ".txt" );
55
56 File reportDir = reportFile.getParentFile();
57
58
59 reportDir.mkdirs();
60
61 try
62 {
63 PrintWriter writer = new PrintWriter( new FileWriter( reportFile ) );
64
65 writer.println( "-------------------------------------------------------------------------------" );
66
67 writer.println( "Test set: " + report.getName() );
68
69 writer.println( "-------------------------------------------------------------------------------" );
70
71 return writer;
72 }
73 catch ( IOException e )
74 {
75 throw new ReporterException( "Unable to create file for report: " + e.getMessage(), e );
76 }
77 }
78
79 public static File getReportFile( File reportsDirectory, String reportEntryName, String reportNameSuffix,
80 String fileExtension )
81 {
82 String fileName =
83 reportEntryName + ( isNotBlank( reportNameSuffix ) ? "-" + reportNameSuffix : "" ) + fileExtension;
84 return new File( reportsDirectory, stripIllegalFilenameChars( fileName ) );
85 }
86
87 public void testSetCompleted( WrappedReportEntry report, TestSetStats testSetStats, List<String> testResults )
88 {
89 PrintWriter writer = testSetStarting( report );
90 try
91 {
92 writer.println( testSetStats.getTestSetSummary( report ) );
93 for ( String testResult : testResults )
94 {
95 writer.println( testResult );
96 }
97 writer.flush();
98 }
99 finally
100 {
101 writer.close();
102 }
103 }
104 }