View Javadoc
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  		// Ignore race issues
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  }