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