1 package com.github.jlgrock.javascriptframework.closuretestingreport;
2
3 import java.io.File;
4 import java.util.Locale;
5 import java.util.Set;
6
7 import org.apache.log4j.Logger;
8 import org.apache.maven.doxia.siterenderer.Renderer;
9 import org.apache.maven.project.MavenProject;
10 import org.apache.maven.reporting.AbstractMavenReport;
11 import org.apache.maven.reporting.MavenReportException;
12 import org.openqa.selenium.WebDriver;
13 import org.openqa.selenium.htmlunit.HtmlUnitDriver;
14
15 import com.github.jlgrock.javascriptframework.closuretesting.resultparsing.ParseRunner;
16 import com.github.jlgrock.javascriptframework.closuretesting.resultparsing.testingcomponents.TestCase;
17 import com.github.jlgrock.javascriptframework.mavenutils.logging.MojoLogAppender;
18 import com.github.jlgrock.javascriptframework.mavenutils.pathing.FileListBuilder;
19
20
21
22
23
24
25
26
27
28 public class ClosureTestingReportMojo extends AbstractMavenReport {
29
30
31
32 private static final Logger LOGGER = Logger
33 .getLogger(ClosureTestingReportMojo.class);
34
35
36
37
38
39
40
41
42 private File frameworkTargetDirectory;
43
44
45
46
47
48
49
50
51 private String outputDirectory;
52
53
54
55
56
57
58 private MavenProject project;
59
60
61
62
63
64
65 private Renderer siteRenderer;
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82 public final String getDescription(final Locale locale) {
83 return "Report on Closure Unit Testing";
84 }
85
86 @Override
87 public final String getName(final Locale locale) {
88 return "Closure Unit Testing";
89 }
90
91 @Override
92 public final String getOutputName() {
93 return "closure-unit-testing-report";
94 }
95
96 @Override
97 protected final void executeReport(final Locale locale)
98 throws MavenReportException {
99 MojoLogAppender.beginLogging(this);
100 try {
101 Set<File> files = FileListBuilder.buildFilteredList(getFrameworkTargetDirectory(),
102 "html");
103 Set<TestCase> testCases = parseFiles(files);
104 ClosureTestingReportGenerator renderer = new ClosureTestingReportGenerator(
105 getSink(), testCases);
106 renderer.render();
107 } catch (Exception e) {
108 LOGGER.error(e.getMessage(), e);
109 throw new MavenReportException(e.getMessage());
110 } finally {
111 MojoLogAppender.endLogging();
112 }
113 }
114
115
116
117
118
119
120
121
122 private static Set<TestCase> parseFiles(final Set<File> files) {
123 WebDriver driver = new HtmlUnitDriver(true);
124 Set<TestCase> testCases = null;
125 try {
126 ParseRunner parseRunner = new ParseRunner(files, driver);
127 testCases = parseRunner.parseFiles();
128 } finally {
129 driver.close();
130 }
131 return testCases;
132 }
133
134 @Override
135 protected final String getOutputDirectory() {
136 return outputDirectory;
137 }
138
139 @Override
140 protected final MavenProject getProject() {
141 return project;
142 }
143
144 @Override
145 protected final Renderer getSiteRenderer() {
146 return siteRenderer;
147 }
148
149
150
151
152 protected final File getFrameworkTargetDirectory() {
153 return frameworkTargetDirectory;
154 }
155
156 }