Coverage Report - org.apache.maven.plugin.invoker.VerifyMojo
 
Classes in this File Line Coverage Branch Coverage Complexity
VerifyMojo
0%
0/22
0%
0/8
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  
 }