Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
VerifyMojo |
|
| 11.0;11 |
1 | package org.apache.maven.plugin.invoker; | |
2 | ||
3 | /* | |
4 | * Licensed to the Apache Software Foundation (ASF) under one | |
5 | * or more contributor license agreements. See the NOTICE file | |
6 | * distributed with this work for additional information | |
7 | * regarding copyright ownership. The ASF licenses this file | |
8 | * to you under the Apache License, Version 2.0 (the | |
9 | * "License"); you may not use this file except in compliance | |
10 | * with the License. You may obtain a copy of the License at | |
11 | * | |
12 | * http://www.apache.org/licenses/LICENSE-2.0 | |
13 | * | |
14 | * Unless required by applicable law or agreed to in writing, | |
15 | * software distributed under the License is distributed on an | |
16 | * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
17 | * KIND, either express or implied. See the License for the | |
18 | * specific language governing permissions and limitations | |
19 | * under the License. | |
20 | */ | |
21 | ||
22 | import org.apache.maven.plugin.AbstractMojo; | |
23 | import org.apache.maven.plugin.MojoExecutionException; | |
24 | import org.apache.maven.plugin.MojoFailureException; | |
25 | import org.apache.maven.plugin.invoker.model.io.xpp3.BuildJobXpp3Reader; | |
26 | import org.codehaus.plexus.util.ReaderFactory; | |
27 | import org.codehaus.plexus.util.xml.pull.XmlPullParserException; | |
28 | ||
29 | import java.io.File; | |
30 | import java.io.IOException; | |
31 | ||
32 | /** | |
33 | * Checks the results of maven-invoker-plugin based integration tests and fails the build if any tests failed. | |
34 | * | |
35 | * @goal verify | |
36 | * @phase verify | |
37 | * @author <a href="mailto:olamy@apache.org">olamy</a> | |
38 | * @since 1.4 | |
39 | */ | |
40 | 0 | public class VerifyMojo extends AbstractMojo |
41 | { | |
42 | ||
43 | /** | |
44 | * Flag used to suppress certain invocations. This is useful in tailoring the build using profiles. | |
45 | * | |
46 | * @parameter expression="${invoker.skip}" default-value="false" | |
47 | * @since 1.1 | |
48 | */ | |
49 | private boolean skipInvocation; | |
50 | ||
51 | /** | |
52 | * Base directory where all build reports are read from. | |
53 | * | |
54 | * @parameter expression="${invoker.reportsDirectory}" default-value="${project.build.directory}/invoker-reports" | |
55 | * @since 1.4 | |
56 | */ | |
57 | private File reportsDirectory; | |
58 | ||
59 | /** | |
60 | * A flag controlling whether failures of the sub builds should fail the main build, too. If set to | |
61 | * <code>true</code>, the main build will proceed even if one or more sub builds failed. | |
62 | * | |
63 | * @parameter expression="${maven.test.failure.ignore}" default-value="false" | |
64 | * @since 1.3 | |
65 | */ | |
66 | private boolean ignoreFailures; | |
67 | ||
68 | /** | |
69 | * Flag used to suppress the summary output notifying of successes and failures. If set to <code>true</code>, the | |
70 | * only indication of the build's success or failure will be the effect it has on the main build (if it fails, the | |
71 | * main build should fail as well). | |
72 | * | |
73 | * @parameter default-value="false" | |
74 | */ | |
75 | private boolean suppressSummaries; | |
76 | ||
77 | /** | |
78 | * Invokes Maven on the configured test projects. | |
79 | * | |
80 | * @throws org.apache.maven.plugin.MojoExecutionException If the goal encountered severe errors. | |
81 | * @throws org.apache.maven.plugin.MojoFailureException If any of the Maven builds failed. | |
82 | */ | |
83 | public void execute() | |
84 | throws MojoExecutionException, MojoFailureException | |
85 | { | |
86 | 0 | if ( skipInvocation ) |
87 | { | |
88 | 0 | getLog().info( "Skipping invocation per configuration." |
89 | + " If this is incorrect, ensure the skipInvocation parameter is not set to true." ); | |
90 | 0 | return; |
91 | } | |
92 | ||
93 | 0 | File[] reportFiles = ReportUtils.getReportFiles( reportsDirectory ); |
94 | 0 | if ( reportFiles.length <= 0 ) |
95 | { | |
96 | 0 | getLog().info( "No invoker report files found, nothing to check." ); |
97 | 0 | return; |
98 | } | |
99 | ||
100 | 0 | InvokerSession invokerSession = new InvokerSession(); |
101 | 0 | for ( int i = 0, size = reportFiles.length; i < size; i++ ) |
102 | { | |
103 | 0 | File reportFile = reportFiles[i]; |
104 | try | |
105 | { | |
106 | 0 | BuildJobXpp3Reader reader = new BuildJobXpp3Reader(); |
107 | 0 | invokerSession.addJob( reader.read( ReaderFactory.newXmlReader( reportFile ) ) ); |
108 | } | |
109 | 0 | catch ( XmlPullParserException e ) |
110 | { | |
111 | 0 | throw new MojoExecutionException( "Failed to parse report file: " + reportFile, e ); |
112 | } | |
113 | 0 | catch ( IOException e ) |
114 | { | |
115 | 0 | throw new MojoExecutionException( "Failed to read report file: " + reportFile, e ); |
116 | 0 | } |
117 | } | |
118 | ||
119 | 0 | if ( !suppressSummaries ) |
120 | { | |
121 | 0 | invokerSession.logSummary( getLog(), ignoreFailures ); |
122 | } | |
123 | ||
124 | 0 | invokerSession.handleFailures( getLog(), ignoreFailures ); |
125 | 0 | } |
126 | ||
127 | } |