1 package org.apache.maven.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
27
28
29
30
31
32 public abstract class AbstractFileReporter
33 extends AbstractTextReporter
34 {
35 private final File reportsDirectory;
36
37 private final boolean deleteOnStarting;
38
39 AbstractFileReporter( ReporterConfiguration reporterConfiguration, String format )
40 {
41 super( reporterConfiguration, format );
42
43 this.reportsDirectory = reporterConfiguration.getReportsDirectory();
44
45 this.deleteOnStarting = reporterConfiguration.isForkWithTimeout();
46 }
47
48
49 public void testSetStarting( ReportEntry report )
50 throws ReporterException
51 {
52 super.testSetStarting( report );
53
54 File reportFile = getReportFile( report );
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 setWriter( writer );
78 }
79 catch ( IOException e )
80 {
81 throw new ReporterException( "Unable to create file for report: " + e.getMessage(), e );
82 }
83 }
84
85 private File getReportFile( ReportEntry report )
86 {
87 return new File( reportsDirectory, report.getName() + ".txt" );
88 }
89
90 public void testSetCompleted( ReportEntry report )
91 throws ReporterException
92 {
93 super.testSetCompleted( report );
94
95 writer.flush();
96
97 writer.close();
98
99 writer = null;
100
101 if ( isTimedOut() )
102 {
103 deleteIfExisting( getReportFile( report ) );
104 }
105 }
106 }