Author: dfabulich
Date: Tue Sep 16 18:26:14 2008
New Revision: 696123

URL: http://svn.apache.org/viewvc?rev=696123&view=rev
Log:
Added a unit test; allowed SimpleInvoker to be injected

Added:
    maven/plugins/trunk/maven-reactor-plugin/src/main/resources/
    maven/plugins/trunk/maven-reactor-plugin/src/main/resources/META-INF/
    maven/plugins/trunk/maven-reactor-plugin/src/main/resources/META-INF/plexus/
    
maven/plugins/trunk/maven-reactor-plugin/src/main/resources/META-INF/plexus/components.xml
    
maven/plugins/trunk/maven-reactor-plugin/src/test/java/org/apache/maven/plugin/reactor/MakeMojoTest.java
    
maven/plugins/trunk/maven-reactor-plugin/src/test/java/org/apache/maven/plugin/reactor/NoopScmManager.java
Modified:
    
maven/plugins/trunk/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeMojo.java
    
maven/plugins/trunk/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeScmChanges.java
    
maven/plugins/trunk/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/SimpleInvoker.java

Modified: 
maven/plugins/trunk/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeMojo.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeMojo.java?rev=696123&r1=696122&r2=696123&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeMojo.java
 (original)
+++ 
maven/plugins/trunk/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeMojo.java
 Tue Sep 16 18:26:14 2008
@@ -99,6 +99,11 @@
      */
     private boolean printOnly = false;
     
+    /**
+     * @component
+     */
+    SimpleInvoker simpleInvoker;
+    
     public void execute()
         throws MojoExecutionException, MojoFailureException
     {
@@ -150,7 +155,7 @@
             throw new MojoExecutionException( "Problem generating dependency 
tree", e );
         }
 
-        new SimpleInvoker().runReactor( reactorIncludes, Arrays.asList( 
goals.split( "," ) ), invoker, printOnly, getLog() );
+        simpleInvoker.runReactor( reactorIncludes, Arrays.asList( goals.split( 
"," ) ), invoker, printOnly, getLog() );
 
     }
 

Modified: 
maven/plugins/trunk/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeScmChanges.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeScmChanges.java?rev=696123&r1=696122&r2=696123&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeScmChanges.java
 (original)
+++ 
maven/plugins/trunk/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/MakeScmChanges.java
 Tue Sep 16 18:26:14 2008
@@ -52,7 +52,7 @@
      * @parameter expression="${make.scmConnection}" 
default-value="${project.scm.connection}"
      * @required
      */
-    private String scmConnection;
+    String scmConnection;
 
     /**
      * Ignore files in the "unknown" status (created but not added to source 
control)
@@ -64,7 +64,7 @@
     /**
      * @component
      */
-    private ScmManager scmManager;
+    ScmManager scmManager;
 
     public void execute()
         throws MojoExecutionException, MojoFailureException

Modified: 
maven/plugins/trunk/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/SimpleInvoker.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/SimpleInvoker.java?rev=696123&r1=696122&r2=696123&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/SimpleInvoker.java
 (original)
+++ 
maven/plugins/trunk/maven-reactor-plugin/src/main/java/org/apache/maven/plugin/reactor/SimpleInvoker.java
 Tue Sep 16 18:26:14 2008
@@ -35,7 +35,7 @@
  * @author <a href="mailto:[EMAIL PROTECTED]">Dan Fabulich</a>
  *
  */
-class SimpleInvoker
+public class SimpleInvoker
 {
     /** Runs a "mvn --reactor" build with the specified includes
      * 

Added: 
maven/plugins/trunk/maven-reactor-plugin/src/main/resources/META-INF/plexus/components.xml
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-reactor-plugin/src/main/resources/META-INF/plexus/components.xml?rev=696123&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-reactor-plugin/src/main/resources/META-INF/plexus/components.xml
 (added)
+++ 
maven/plugins/trunk/maven-reactor-plugin/src/main/resources/META-INF/plexus/components.xml
 Tue Sep 16 18:26:14 2008
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~   http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<component-set>
+  <components>
+    <component>
+      <role>org.apache.maven.plugin.reactor.SimpleInvoker</role>
+      <role-hint>default</role-hint>
+      
<implementation>org.apache.maven.plugin.reactor.SimpleInvoker</implementation>
+    </component>
+  </components>
+</component-set>
\ No newline at end of file

Added: 
maven/plugins/trunk/maven-reactor-plugin/src/test/java/org/apache/maven/plugin/reactor/MakeMojoTest.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-reactor-plugin/src/test/java/org/apache/maven/plugin/reactor/MakeMojoTest.java?rev=696123&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-reactor-plugin/src/test/java/org/apache/maven/plugin/reactor/MakeMojoTest.java
 (added)
+++ 
maven/plugins/trunk/maven-reactor-plugin/src/test/java/org/apache/maven/plugin/reactor/MakeMojoTest.java
 Tue Sep 16 18:26:14 2008
@@ -0,0 +1,149 @@
+package org.apache.maven.plugin.reactor;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.maven.model.Dependency;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFile;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmFileStatus;
+import org.apache.maven.scm.ScmResult;
+import org.apache.maven.scm.command.status.StatusScmResult;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.maven.shared.invoker.Invoker;
+import org.codehaus.plexus.util.FileUtils;
+import org.codehaus.plexus.util.StringUtils;
+
+
+public class MakeMojoTest extends TestCase
+{
+    MavenProject dataAccess = new MavenProject();
+    MavenProject businessLogic = new MavenProject();
+    MavenProject ui = new MavenProject();
+    List configuredProjects;
+    String ps = File.separator;
+    File baseDir;
+    
+    public void setUp() throws Exception {
+        File tempDir = new File(System.getProperty( "java.io.tmpdir" ));
+        baseDir = File.createTempFile( "makeMojoTest", "", tempDir );
+        baseDir.delete();
+        configureProject( dataAccess, "dataAccess", "reactortest", "1.0" );
+        configureProject( businessLogic, "businessLogic", "reactortest", "1.0" 
);
+        configureProject( ui, "ui", "reactortest", "1.0" );
+        
+        configuredProjects = Arrays.asList( new MavenProject[] { dataAccess, 
businessLogic, ui} );
+        
+        // ui depends on businessLogic
+        // businessLogic depends on dataAccess
+        createDependency(businessLogic, ui);
+        createDependency(dataAccess, businessLogic);
+    }
+    
+    public void tearDown() throws Exception
+    {
+        FileUtils.deleteDirectory( baseDir );
+    }
+
+    void configureProject(MavenProject p, String artifactId, String groupId, 
String version) throws IOException
+    {
+        p.setArtifactId( artifactId );
+        p.setGroupId( groupId );
+        p.setVersion( version );
+        File file = new File(baseDir, artifactId+"/pom.xml");
+        file.getParentFile().mkdirs();
+        file.createNewFile();
+        p.setFile( file.getAbsoluteFile() );
+    }
+    
+    void createDependency(MavenProject provider, MavenProject consumer)
+    {
+        Dependency d = new Dependency();
+        d.setArtifactId( provider.getArtifactId() );
+        d.setGroupId( provider.getGroupId() );
+        d.setVersion( provider.getVersion() );
+        consumer.getDependencies().add( d );
+    }
+    
+    public void testMake() throws MojoExecutionException, MojoFailureException 
{
+        MakeMojo m = new MakeMojo();
+        m.collectedProjects = configuredProjects;
+        m.artifactList = "reactortest:businessLogic";
+        m.baseDir = baseDir;
+        m.goals = "install";
+        FakeInvoker fi = new FakeInvoker();
+        m.simpleInvoker = fi;
+        m.execute();
+        assertEquals("dataAccess/pom.xml,businessLogic/pom.xml", 
fi.getIncludes());
+    }
+    
+    public void testMakeDependents() throws MojoExecutionException, 
MojoFailureException {
+        MakeDependentsMojo m = new MakeDependentsMojo();
+        m.collectedProjects = configuredProjects;
+        m.artifactList = "reactortest:businessLogic";
+        m.baseDir = baseDir;
+        m.goals = "install";
+        FakeInvoker fi = new FakeInvoker();
+        m.simpleInvoker = fi;
+        m.execute();
+        assertEquals("businessLogic/pom.xml,ui/pom.xml", fi.getIncludes());
+    }
+    
+    public void testMakeScmChanges() throws Exception {
+        MakeScmChanges m = new MakeScmChanges();
+        m.collectedProjects = configuredProjects;
+        m.baseDir = baseDir;
+        m.goals = "install";
+        FakeInvoker fi = new FakeInvoker();
+        m.simpleInvoker = fi;
+        
+        ScmFile sf = new ScmFile(businessLogic.getFile().getAbsolutePath(), 
ScmFileStatus.MODIFIED);
+        m.scmManager = new FakeScmManager(Arrays.asList(new ScmFile[] {sf} ));
+        m.scmConnection = "";
+        
+        m.execute();
+        assertEquals("businessLogic/pom.xml,ui/pom.xml", fi.getIncludes());
+    }
+    
+    class FakeInvoker extends SimpleInvoker {
+        String[] reactorIncludes;
+        List goalList;
+        
+        void runReactor( String[] reactorIncludes, List goalList, Invoker 
invoker, boolean printOnly, Log log )
+            throws InvokerExecutionException
+        {
+            this.reactorIncludes = reactorIncludes;
+            this.goalList = goalList;
+        }
+        
+        String getIncludes() {
+            String includes = StringUtils.join( reactorIncludes, "," );
+            includes = includes.replaceAll( "\\\\", "/" );
+            return includes;
+        }
+    }
+    
+    class FakeScmManager extends NoopScmManager {
+        List changedFiles;
+        public FakeScmManager(List changedFiles)
+        {
+            this.changedFiles = changedFiles;
+        }
+        
+        public StatusScmResult status( ScmRepository repository, ScmFileSet 
fileSet )
+            throws ScmException
+        {
+            return new StatusScmResult(changedFiles, new ScmResult(null, null, 
null, true));
+        }
+    }
+    
+}

Added: 
maven/plugins/trunk/maven-reactor-plugin/src/test/java/org/apache/maven/plugin/reactor/NoopScmManager.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-reactor-plugin/src/test/java/org/apache/maven/plugin/reactor/NoopScmManager.java?rev=696123&view=auto
==============================================================================
--- 
maven/plugins/trunk/maven-reactor-plugin/src/test/java/org/apache/maven/plugin/reactor/NoopScmManager.java
 (added)
+++ 
maven/plugins/trunk/maven-reactor-plugin/src/test/java/org/apache/maven/plugin/reactor/NoopScmManager.java
 Tue Sep 16 18:26:14 2008
@@ -0,0 +1,350 @@
+package org.apache.maven.plugin.reactor;
+
+import java.io.File;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.maven.scm.ScmBranch;
+import org.apache.maven.scm.ScmException;
+import org.apache.maven.scm.ScmFileSet;
+import org.apache.maven.scm.ScmVersion;
+import org.apache.maven.scm.command.add.AddScmResult;
+import org.apache.maven.scm.command.branch.BranchScmResult;
+import org.apache.maven.scm.command.changelog.ChangeLogScmResult;
+import org.apache.maven.scm.command.checkin.CheckInScmResult;
+import org.apache.maven.scm.command.checkout.CheckOutScmResult;
+import org.apache.maven.scm.command.diff.DiffScmResult;
+import org.apache.maven.scm.command.edit.EditScmResult;
+import org.apache.maven.scm.command.export.ExportScmResult;
+import org.apache.maven.scm.command.list.ListScmResult;
+import org.apache.maven.scm.command.remove.RemoveScmResult;
+import org.apache.maven.scm.command.status.StatusScmResult;
+import org.apache.maven.scm.command.tag.TagScmResult;
+import org.apache.maven.scm.command.unedit.UnEditScmResult;
+import org.apache.maven.scm.command.update.UpdateScmResult;
+import org.apache.maven.scm.manager.NoSuchScmProviderException;
+import org.apache.maven.scm.manager.ScmManager;
+import org.apache.maven.scm.provider.ScmProvider;
+import org.apache.maven.scm.repository.ScmRepository;
+import org.apache.maven.scm.repository.ScmRepositoryException;
+import org.apache.maven.scm.repository.UnknownRepositoryStructure;
+
+public class NoopScmManager
+    implements ScmManager
+{
+
+    public AddScmResult add( ScmRepository repository, ScmFileSet fileSet )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public AddScmResult add( ScmRepository repository, ScmFileSet fileSet, 
String message )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public BranchScmResult branch( ScmRepository repository, ScmFileSet 
fileSet, String branchName )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public BranchScmResult branch( ScmRepository repository, ScmFileSet 
fileSet, String branchName, String message )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet 
fileSet, ScmVersion startVersion,
+                                         ScmVersion endVersion )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet 
fileSet, ScmVersion startRevision,
+                                         ScmVersion endRevision, String 
datePattern )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet 
fileSet, Date startDate, Date endDate,
+                                         int numDays, ScmBranch branch )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public ChangeLogScmResult changeLog( ScmRepository repository, ScmFileSet 
fileSet, Date startDate, Date endDate,
+                                         int numDays, ScmBranch branch, String 
datePattern )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet 
fileSet, String message )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public CheckInScmResult checkIn( ScmRepository repository, ScmFileSet 
fileSet, ScmVersion revision, String message )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet 
fileSet )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public CheckOutScmResult checkOut( ScmRepository repository, ScmFileSet 
fileSet, ScmVersion version )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet 
scmFileSet, boolean recursive )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public CheckOutScmResult checkOut( ScmRepository scmRepository, ScmFileSet 
scmFileSet, ScmVersion version,
+                                       boolean recursive )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public DiffScmResult diff( ScmRepository scmRepository, ScmFileSet 
scmFileSet, ScmVersion startVersion,
+                               ScmVersion endVersion )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public EditScmResult edit( ScmRepository repository, ScmFileSet fileSet )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public ExportScmResult export( ScmRepository repository, ScmFileSet 
fileSet )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public ExportScmResult export( ScmRepository repository, ScmFileSet 
fileSet, ScmVersion version )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public ExportScmResult export( ScmRepository repository, ScmFileSet 
fileSet, String outputDirectory )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public ExportScmResult export( ScmRepository repository, ScmFileSet 
fileSet, ScmVersion version,
+                                   String outputDirectory )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public ScmProvider getProviderByRepository( ScmRepository repository )
+        throws NoSuchScmProviderException
+    {
+
+        return null;
+    }
+
+    public ScmProvider getProviderByType( String providerType )
+        throws NoSuchScmProviderException
+    {
+
+        return null;
+    }
+
+    public ScmProvider getProviderByUrl( String scmUrl )
+        throws ScmRepositoryException, NoSuchScmProviderException
+    {
+
+        return null;
+    }
+
+    public ListScmResult list( ScmRepository repository, ScmFileSet fileSet, 
boolean recursive, ScmVersion version )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public ScmRepository makeProviderScmRepository( String providerType, File 
path )
+        throws ScmRepositoryException, UnknownRepositoryStructure, 
NoSuchScmProviderException
+    {
+
+        return null;
+    }
+
+    public ScmRepository makeScmRepository( String scmUrl )
+        throws ScmRepositoryException, NoSuchScmProviderException
+    {
+
+        return null;
+    }
+
+    public RemoveScmResult remove( ScmRepository repository, ScmFileSet 
fileSet, String message )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public void setScmProvider( String providerType, ScmProvider provider )
+    {
+
+
+    }
+
+    public void setScmProviderImplementation( String providerType, String 
providerImplementation )
+    {
+
+
+    }
+
+    public StatusScmResult status( ScmRepository repository, ScmFileSet 
fileSet )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, 
String tagName )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public TagScmResult tag( ScmRepository repository, ScmFileSet fileSet, 
String tagName, String message )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public UnEditScmResult unedit( ScmRepository repository, ScmFileSet 
fileSet )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public UpdateScmResult update( ScmRepository repository, ScmFileSet 
fileSet )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public UpdateScmResult update( ScmRepository repository, ScmFileSet 
fileSet, ScmVersion version )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public UpdateScmResult update( ScmRepository repository, ScmFileSet 
fileSet, boolean runChangelog )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public UpdateScmResult update( ScmRepository repository, ScmFileSet 
fileSet, String datePattern )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public UpdateScmResult update( ScmRepository repository, ScmFileSet 
fileSet, Date lastUpdate )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public UpdateScmResult update( ScmRepository repository, ScmFileSet 
fileSet, ScmVersion version,
+                                   boolean runChangelog )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public UpdateScmResult update( ScmRepository repository, ScmFileSet 
fileSet, ScmVersion version, String datePattern )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public UpdateScmResult update( ScmRepository repository, ScmFileSet 
fileSet, ScmVersion version, Date lastUpdate )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public UpdateScmResult update( ScmRepository repository, ScmFileSet 
fileSet, Date lastUpdate, String datePattern )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public UpdateScmResult update( ScmRepository repository, ScmFileSet 
fileSet, ScmVersion version, Date lastUpdate,
+                                   String datePattern )
+        throws ScmException
+    {
+
+        return null;
+    }
+
+    public List validateScmRepository( String scmUrl )
+    {
+
+        return null;
+    }
+
+}


Reply via email to