1 package io.guixer.maven;
2
3 import java.io.File;
4
5 import org.apache.maven.plugin.AbstractMojo;
6 import org.apache.maven.plugin.MojoExecutionException;
7 import org.apache.maven.plugin.MojoFailureException;
8 import org.apache.maven.plugins.annotations.LifecyclePhase;
9 import org.apache.maven.plugins.annotations.Mojo;
10 import org.apache.maven.plugins.annotations.Parameter;
11 import org.apache.maven.project.MavenProject;
12
13 import net.avcompris.binding.dom.helper.DomBinderUtils;
14
15 @Mojo(name = "verify", defaultPhase = LifecyclePhase.VERIFY)
16 public class VerifySurefireReportsMojo extends AbstractMojo {
17
18 @Parameter(defaultValue = "${project}", required = true, readonly = true)
19 private MavenProject project;
20
21 @Override
22 public void execute() throws MojoExecutionException, MojoFailureException {
23
24
25
26 final MavenProject project = this.project;
27
28 final File targetDir = AbstractGuixerOutMojo.getTargetDir(project);
29
30 final File surefireReportsDir = new File(targetDir, "surefire-reports");
31
32 if (!surefireReportsDir.isDirectory()) {
33
34 throw new MojoExecutionException(
35 "Cannot find surefire-reports directory: " + surefireReportsDir.getAbsolutePath());
36 }
37
38 for (final File testReportXmlFile : surefireReportsDir.listFiles(file -> {
39
40 if (file.isFile()) {
41
42 final String fileName = file.getName();
43
44 if (fileName.startsWith("TEST-") && fileName.endsWith(".xml")) {
45
46 return true;
47 }
48 }
49
50 return false;
51
52 })) {
53
54 final SurefireTestReport testReport = DomBinderUtils.xmlContentToJava(testReportXmlFile,
55 SurefireTestReport.class);
56
57 if (testReport.getErrors() != 0 || testReport.getFailures() != 0) {
58
59 throw new MojoFailureException("There are test failures.");
60 }
61 }
62 }
63 }