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; + } + +}