You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by vm...@apache.org on 2006/05/18 00:41:53 UTC

svn commit: r407392 - in /maven/plugins/trunk/maven-clover-plugin/src: it/multiproject/ it/multiproject/ear1/ it/multiproject/jar1/ it/multiproject/jar2/ it/multiproject/war1/ it/simple/ main/java/org/apache/maven/plugin/clover/ main/java/org/apache/ma...

Author: vmassol
Date: Wed May 17 15:41:52 2006
New Revision: 407392

URL: http://svn.apache.org/viewvc?rev=407392&view=rev
Log:
MCLOVER-39: clover:check and clover:log should ignore projects with no Clover database rather than error out

Modified:
    maven/plugins/trunk/maven-clover-plugin/src/it/multiproject/   (props changed)
    maven/plugins/trunk/maven-clover-plugin/src/it/multiproject/ear1/   (props changed)
    maven/plugins/trunk/maven-clover-plugin/src/it/multiproject/jar1/   (props changed)
    maven/plugins/trunk/maven-clover-plugin/src/it/multiproject/jar2/   (props changed)
    maven/plugins/trunk/maven-clover-plugin/src/it/multiproject/pom.xml
    maven/plugins/trunk/maven-clover-plugin/src/it/multiproject/war1/   (props changed)
    maven/plugins/trunk/maven-clover-plugin/src/it/simple/   (props changed)
    maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverAggregateMojo.java
    maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverCheckMojo.java
    maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/internal/AbstractCloverMojo.java

Propchange: maven/plugins/trunk/maven-clover-plugin/src/it/multiproject/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed May 17 15:41:52 2006
@@ -0,0 +1 @@
+target

Propchange: maven/plugins/trunk/maven-clover-plugin/src/it/multiproject/ear1/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed May 17 15:41:52 2006
@@ -0,0 +1 @@
+target

Propchange: maven/plugins/trunk/maven-clover-plugin/src/it/multiproject/jar1/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed May 17 15:41:52 2006
@@ -0,0 +1 @@
+target

Propchange: maven/plugins/trunk/maven-clover-plugin/src/it/multiproject/jar2/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed May 17 15:41:52 2006
@@ -0,0 +1 @@
+target

Modified: maven/plugins/trunk/maven-clover-plugin/src/it/multiproject/pom.xml
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-clover-plugin/src/it/multiproject/pom.xml?rev=407392&r1=407391&r2=407392&view=diff
==============================================================================
--- maven/plugins/trunk/maven-clover-plugin/src/it/multiproject/pom.xml (original)
+++ maven/plugins/trunk/maven-clover-plugin/src/it/multiproject/pom.xml Wed May 17 15:41:52 2006
@@ -29,9 +29,19 @@
         <configuration>
           <flushPolicy>threaded</flushPolicy>
           <flushInterval>100</flushInterval>
+          <targetPercentage>1%</targetPercentage>
         </configuration>
         <executions>
           <execution>
+            <id>main</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>instrument</goal>
+              <goal>check</goal>
+            </goals>
+          </execution>
+          <execution>
+            <id>site</id>
             <phase>pre-site</phase>
             <goals>
               <goal>instrument</goal>

Propchange: maven/plugins/trunk/maven-clover-plugin/src/it/multiproject/war1/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed May 17 15:41:52 2006
@@ -0,0 +1 @@
+target

Propchange: maven/plugins/trunk/maven-clover-plugin/src/it/simple/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed May 17 15:41:52 2006
@@ -0,0 +1 @@
+target

Modified: maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverAggregateMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverAggregateMojo.java?rev=407392&r1=407391&r2=407392&view=diff
==============================================================================
--- maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverAggregateMojo.java (original)
+++ maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverAggregateMojo.java Wed May 17 15:41:52 2006
@@ -22,14 +22,6 @@
 public class CloverAggregateMojo extends AbstractCloverMojo
 {
     /**
-     * The location of the merged clover database to create when running a report in a multimodule build.
-     *
-     * @parameter expression="${project.build.directory}/clover/cloverMerge.db"
-     * @required
-     */
-    private String cloverMergeDatabase;
-
-    /**
      * The projects in the reactor for aggregation report.
      *
      * @parameter expression="${reactorProjects}"
@@ -55,7 +47,7 @@
             if ( getChildrenCloverDatabases().size() > 0 )
             {
                 // Ensure the merged database output directory exists
-                new File( this.cloverMergeDatabase ).getParentFile().mkdirs();
+                new File( getCloverMergeDatabase() ).getParentFile().mkdirs();
 
                 // Merge the databases
                 mergeCloverDatabases();
@@ -104,7 +96,7 @@
         List parameters = new ArrayList();
 
         parameters.add( "-i" );
-        parameters.add( this.cloverMergeDatabase );
+        parameters.add( getCloverMergeDatabase() );
 
         if ( getLog().isDebugEnabled() )
         {

Modified: maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverCheckMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverCheckMojo.java?rev=407392&r1=407391&r2=407392&view=diff
==============================================================================
--- maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverCheckMojo.java (original)
+++ maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/CloverCheckMojo.java Wed May 17 15:41:52 2006
@@ -49,28 +49,41 @@
     {
         if ( !isInCloverForkedLifecycle() )
         {
-            super.execute();
-
-            AbstractCloverMojo.waitForFlush( getWaitForFlush(), getFlushInterval() );
-
-            Project antProject = registerCloverAntTasks();
+            if ( areCloverDatabasesAvailable() )
+            {
+                super.execute();
 
-            getLog().info( "Checking for coverage of " + targetPercentage);
+                AbstractCloverMojo.waitForFlush( getWaitForFlush(), getFlushInterval() );
 
-            CloverPassTask cloverPassTask = (CloverPassTask) antProject.createTask( "clover-check" );
-            cloverPassTask.setInitString( getCloverDatabase() );
-            cloverPassTask.setHaltOnFailure( true );
-            cloverPassTask.setTarget( new Percentage( this.targetPercentage ) );
-            cloverPassTask.setFailureProperty( "clovercheckproperty" );
-            try
-            {
-                cloverPassTask.execute();
+                check();
             }
-            catch ( BuildException e )
+            else
             {
-                getLog().error( antProject.getProperty( "clovercheckproperty" ) );
-                throw new MojoExecutionException( e.getMessage(), e );
+                getLog().info("No Clover database found, skipping test coverage verification");
             }
+        }
+    }
+
+    private void check() throws MojoExecutionException
+    {
+        Project antProject = registerCloverAntTasks();
+
+        getLog().info( "Checking for coverage of " + targetPercentage);
+
+        CloverPassTask cloverPassTask = (CloverPassTask) antProject.createTask( "clover-check" );
+        cloverPassTask.setInitString( getCloverDatabase() );
+        cloverPassTask.setHaltOnFailure( true );
+        cloverPassTask.setTarget( new Percentage( this.targetPercentage ) );
+        cloverPassTask.setFailureProperty( "clovercheckproperty" );
+
+        try
+        {
+            cloverPassTask.execute();
+        }
+        catch ( BuildException e )
+        {
+            getLog().error( antProject.getProperty( "clovercheckproperty" ) );
+            throw new MojoExecutionException( e.getMessage(), e );
         }
     }
 

Modified: maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/internal/AbstractCloverMojo.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/internal/AbstractCloverMojo.java?rev=407392&r1=407391&r2=407392&view=diff
==============================================================================
--- maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/internal/AbstractCloverMojo.java (original)
+++ maven/plugins/trunk/maven-clover-plugin/src/main/java/org/apache/maven/plugin/clover/internal/AbstractCloverMojo.java Wed May 17 15:41:52 2006
@@ -17,8 +17,6 @@
 
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.clover.internal.DefaultLocator;
-import org.apache.maven.plugin.clover.internal.Locator;
 import org.apache.maven.project.MavenProject;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.taskdefs.Taskdef;
@@ -35,6 +33,14 @@
     private String cloverDatabase;
 
     /**
+     * The location of the merged clover database to create when running a report in a multimodule build.
+     *
+     * @parameter expression="${project.build.directory}/clover/cloverMerge.db"
+     * @required
+     */
+    private String cloverMergeDatabase;
+
+    /**
      * A Clover license file to be used by the plugin. If not specified, the Clover plugin uses a default evaluation
      * license.
      *
@@ -200,6 +206,25 @@
         }
     }
 
+    /**
+     * Check if a Clover database exists (either a single module Clover database or an aggregated one).
+     * @return true if a Clover database exists.
+     */
+    protected boolean areCloverDatabasesAvailable()
+    {
+        boolean shouldRun = false;
+
+        File singleModuleCloverDatabase = new File( this.cloverDatabase );
+        File mergedCloverDatabase = new File ( this.cloverMergeDatabase );
+
+        if (singleModuleCloverDatabase.exists() || mergedCloverDatabase.exists() )
+        {
+            shouldRun = true;
+        }
+
+        return shouldRun;
+    }
+
     protected void setLicenseLocation(String licenseLocation)
     {
         this.licenseLocation = licenseLocation;
@@ -223,6 +248,11 @@
     protected String getCloverDatabase()
     {
         return this.cloverDatabase;
+    }
+
+    protected String getCloverMergeDatabase()
+    {
+        return this.cloverMergeDatabase;
     }
 
     protected int getFlushInterval()