Author: jdcasey Date: Mon May 1 13:40:08 2006 New Revision: 398682 URL: http://svn.apache.org/viewcvs?rev=398682&view=rev Log: [MASSEMBLY-89] Adding unit tests. Cannot reproduce error (yet).
Added: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/BasicAbstractAssemblyMojoFeaturesTest.java (with props) maven/plugins/trunk/maven-assembly-plugin/src/test/plugin-configs/basicAbstractAssemblyMojoFeaturesTest/ maven/plugins/trunk/maven-assembly-plugin/src/test/plugin-configs/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping-pluginConfig.xml (with props) maven/plugins/trunk/maven-assembly-plugin/src/test/plugin-configs/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMappingWithTwoDependencySets-pluginConfig.xml (with props) maven/plugins/trunk/maven-assembly-plugin/src/test/resources/ maven/plugins/trunk/maven-assembly-plugin/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/ maven/plugins/trunk/maven-assembly-plugin/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping-assemblyDescriptor.xml (with props) maven/plugins/trunk/maven-assembly-plugin/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMappingWithTwoDependencySets-assemblyDescriptor.xml (with props) Modified: maven/plugins/trunk/maven-assembly-plugin/pom.xml Modified: maven/plugins/trunk/maven-assembly-plugin/pom.xml URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/pom.xml?rev=398682&r1=398681&r2=398682&view=diff ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/pom.xml (original) +++ maven/plugins/trunk/maven-assembly-plugin/pom.xml Mon May 1 13:40:08 2006 @@ -10,6 +10,11 @@ <name>Maven Assembly Plugin</name> <version>2.1-SNAPSHOT</version> <build> + <testResources> + <testResource> + <directory>src/test/plugin-configs</directory> + </testResource> + </testResources> <plugins> <plugin> <groupId>org.codehaus.modello</groupId> Added: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/BasicAbstractAssemblyMojoFeaturesTest.java URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/BasicAbstractAssemblyMojoFeaturesTest.java?rev=398682&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/BasicAbstractAssemblyMojoFeaturesTest.java (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/BasicAbstractAssemblyMojoFeaturesTest.java Mon May 1 13:40:08 2006 @@ -0,0 +1,249 @@ +package org.apache.maven.plugin.assembly; + +import org.apache.maven.artifact.Artifact; +import org.apache.maven.artifact.handler.ArtifactHandler; +import org.apache.maven.model.Model; +import org.apache.maven.plugin.assembly.stubs.ArchiverManagerStub; +import org.apache.maven.plugin.assembly.stubs.ArchiverStub; +import org.apache.maven.plugin.assembly.stubs.ArtifactStub; +import org.apache.maven.plugin.assembly.stubs.ReactorMavenProjectStub; +import org.apache.maven.plugin.testing.AbstractMojoTestCase; +import org.apache.maven.plugin.testing.stubs.MavenProjectStub; +import org.codehaus.plexus.archiver.Archiver; +import org.codehaus.plexus.archiver.ArchiverException; +import org.codehaus.plexus.archiver.manager.ArchiverManager; +import org.codehaus.plexus.archiver.manager.NoSuchArchiverException; + +import java.io.File; +import java.net.URL; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Properties; +import java.util.Set; + +/** + * Test common features of all assembly mojos. + * + * @todo Switch to use test-only mojos, once we can generate descriptors for those... + */ +public class BasicAbstractAssemblyMojoFeaturesTest + extends AbstractMojoTestCase +{ + + public void testOutputFileNameMapping() throws Exception + { + String pluginConfig = "outputFileNameMapping-pluginConfig.xml"; + + List requiredDependencies = new ArrayList(); + + requiredDependencies.add( "dependencies/test.jar" ); + requiredDependencies.add( "dependencies/test2.jar" ); + + testDependencyMapping( pluginConfig, requiredDependencies ); + } + + public void testOutputFileNameMappingWithTwoDependencySets() throws Exception + { + String pluginConfig = "outputFileNameMappingWithTwoDependencySets-pluginConfig.xml"; + + List requiredDependencies = new ArrayList(); + + requiredDependencies.add( "dependencies/test.jar" ); + requiredDependencies.add( "dependencies/test2.jar" ); + requiredDependencies.add( "dependencies/test3-3.jar" ); + requiredDependencies.add( "dependencies/test4-4.jar" ); + + testDependencyMapping( pluginConfig, requiredDependencies ); + } + + private void testDependencyMapping( String pluginConfig, List requiredDependencies ) throws Exception + { + ClassLoader cloader = Thread.currentThread().getContextClassLoader(); + + String pluginConfigResource = "basicAbstractAssemblyMojoFeaturesTest/" + pluginConfig; + + URL resource = cloader.getResource( pluginConfigResource ); + + assertNotNull( "Cannot find plugin-configuration: \'" + pluginConfigResource + "\' in context-classloader\'s classpath.", resource ); + + // TODO: Need to replace this with test-only mojos... + DirectoryMojo mojo = (DirectoryMojo) lookupMojo( "directory", resource.getPath() ); + + FileLoggingArchiverManagerStub archiverManager = (FileLoggingArchiverManagerStub) getVariableValueFromObject( mojo, "archiverManager" ); + archiverManager.clearArchiver(); + + mojo.execute(); + + FileLoggingArchiverStub archiver = (FileLoggingArchiverStub) archiverManager.getArchiver( null ); + + Set addedFiles = archiver.getAddedFiles(); + + System.out.println( "The following files were added to the test assembly:\n" + addedFiles.toString().replace(',', '\n' ) ); + + for ( Iterator it = requiredDependencies.iterator(); it.hasNext(); ) + { + String targetPath = (String) it.next(); + + assertTrue( "Required dependency path missing: \'" + targetPath + "\'", addedFiles.contains( targetPath ) ); + } + } + + public static final class FileLoggingArchiverManagerStub + extends ArchiverManagerStub + { + private FileLoggingArchiverStub archiverStub; + + public Archiver getArchiver( String string ) throws NoSuchArchiverException + { + if ( archiverStub == null ) + { + archiverStub = new FileLoggingArchiverStub(); + } + + return archiverStub; + } + + void clearArchiver() + { + archiverStub = null; + } + } + + public static final class FileLoggingArchiverStub + extends ArchiverStub + { + + private Set files = new LinkedHashSet(); + + public void addFile( File file, String targetPath, int mode ) throws ArchiverException + { + files.add( targetPath ); + } + + public void addFile( File file, String targetPath ) throws ArchiverException + { + files.add( targetPath ); + } + + public Set getAddedFiles() + { + return files; + } + + } + + public static final class TwoDependencyReactorProjectStub + extends MavenProjectStub + { + private String groupId = "org.test.project"; + private String artifactId = "test-project"; + private String version = "1"; + private String packaging = "jar"; + private String scope = "compile"; + + private String depOneArtifactId; + private String depOneGroupId; + private String depOneVersion; + private String depOneType = "jar"; + private String depOneScope = "compile"; + + private String depTwoArtifactId; + private String depTwoGroupId; + private String depTwoVersion; + private String depTwoType = "jar"; + private String depTwoScope = "compile"; + + public Set getArtifacts() + { + Set artifacts = new LinkedHashSet(); + + artifacts.add( new HandlerEquippedArtifactStub( depOneGroupId, depOneArtifactId, depOneVersion, depOneType, depOneScope ) ); + artifacts.add( new HandlerEquippedArtifactStub( depTwoGroupId, depTwoArtifactId, depTwoVersion, depTwoType, depTwoScope ) ); + + return artifacts; + } + + public Artifact getArtifact() + { + return new HandlerEquippedArtifactStub( groupId, artifactId, version, packaging, scope ); + } + + public TwoDependencyReactorProjectStub() + { + Model model = getModel(); + if( model == null ) + { + model = new Model(); + setModel( model ); + } + + Properties props = model.getProperties(); + if ( props == null ) + { + props = new Properties(); + model.setProperties( props ); + } + } + } + + public static final class HandlerEquippedArtifactStub extends ArtifactStub + { + + private final String type; + + public HandlerEquippedArtifactStub( String groupId, String artifactId, String version, String type, String scope ) + { + super( groupId, artifactId, version, type, scope ); + this.type = type; + } + + public ArtifactHandler getArtifactHandler() + { + ArtifactHandler handler = new ArtifactHandler() + { + + public String getClassifier() + { + return null; + } + + public String getDirectory() + { + return null; + } + + public String getExtension() + { + return type; + } + + public String getLanguage() + { + return null; + } + + public String getPackaging() + { + return type; + } + + public boolean isAddedToClasspath() + { + return true; + } + + public boolean isIncludesDependencies() + { + return true; + } + + }; + + return handler; + } + } +} \ No newline at end of file Propchange: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/BasicAbstractAssemblyMojoFeaturesTest.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/plugins/trunk/maven-assembly-plugin/src/test/java/org/apache/maven/plugin/assembly/BasicAbstractAssemblyMojoFeaturesTest.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/plugins/trunk/maven-assembly-plugin/src/test/plugin-configs/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping-pluginConfig.xml URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/test/plugin-configs/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping-pluginConfig.xml?rev=398682&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/test/plugin-configs/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping-pluginConfig.xml (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/test/plugin-configs/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping-pluginConfig.xml Mon May 1 13:40:08 2006 @@ -0,0 +1,55 @@ +<!-- + ~ Copyright 2001-2006 The Apache Software Foundation. + ~ + ~ Licensed 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. + --> +<project> + <build> + <plugins> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <basedir>${basedir}</basedir> + <project implementation="org.apache.maven.plugin.assembly.BasicAbstractAssemblyMojoFeaturesTest$TwoDependencyReactorProjectStub"> + <depOneArtifactId>test</depOneArtifactId> + <depOneGroupId>org.test</depOneGroupId> + <depOneVersion>1</depOneVersion> + <depTwoArtifactId>test2</depTwoArtifactId> + <depTwoGroupId>org.test.2</depTwoGroupId> + <depTwoVersion>2</depTwoVersion> + </project> + <descriptors> + <descriptor>${basedir}/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping-assemblyDescriptor.xml</descriptor> + </descriptors> + <outputDirectory>${project.build.directory}/test-harness/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping/target</outputDirectory> + <finalName>basicAbstractAssemblyMojoFeaturesTest-ouputFileNameMapping</finalName> + <projectModulesOnly>false</projectModulesOnly> + <workDirectory>${project.build.directory}/test-harness/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping/work</workDirectory> + <archiverManager implementation="org.apache.maven.plugin.assembly.BasicAbstractAssemblyMojoFeaturesTest$FileLoggingArchiverManagerStub" /> + <localRepository>${localRepository}</localRepository> + <reactorProjects> + <reactorProject implementation="org.apache.maven.plugin.assembly.BasicAbstractAssemblyMojoFeaturesTest$TwoDependencyReactorProjectStub"> + <depOneArtifactId>test</depOneArtifactId> + <depOneGroupId>org.test</depOneGroupId> + <depOneVersion>1</depOneVersion> + <depTwoArtifactId>test2</depTwoArtifactId> + <depTwoGroupId>org.test.2</depTwoGroupId> + <depTwoVersion>2</depTwoVersion> + </reactorProject> + </reactorProjects> + <classifier></classifier> + </configuration> + </plugin> + </plugins> + </build> +</project> \ No newline at end of file Propchange: maven/plugins/trunk/maven-assembly-plugin/src/test/plugin-configs/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping-pluginConfig.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/plugins/trunk/maven-assembly-plugin/src/test/plugin-configs/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping-pluginConfig.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/plugins/trunk/maven-assembly-plugin/src/test/plugin-configs/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMappingWithTwoDependencySets-pluginConfig.xml URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/test/plugin-configs/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMappingWithTwoDependencySets-pluginConfig.xml?rev=398682&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/test/plugin-configs/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMappingWithTwoDependencySets-pluginConfig.xml (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/test/plugin-configs/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMappingWithTwoDependencySets-pluginConfig.xml Mon May 1 13:40:08 2006 @@ -0,0 +1,69 @@ +<!-- + ~ Copyright 2001-2006 The Apache Software Foundation. + ~ + ~ Licensed 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. + --> +<project> + <build> + <plugins> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <configuration> + <basedir>${basedir}</basedir> + <project implementation="org.apache.maven.plugin.assembly.BasicAbstractAssemblyMojoFeaturesTest$TwoDependencyReactorProjectStub"> + <groupId>first</groupId> + <artifactId>first</artifactId> + <depOneArtifactId>test</depOneArtifactId> + <depOneGroupId>org.test</depOneGroupId> + <depOneVersion>1</depOneVersion> + <depTwoArtifactId>test2</depTwoArtifactId> + <depTwoGroupId>org.test.2</depTwoGroupId> + <depTwoVersion>2</depTwoVersion> + </project> + <descriptors> + <descriptor>${basedir}/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMappingWithTwoDependencySets-assemblyDescriptor.xml</descriptor> + </descriptors> + <outputDirectory>${project.build.directory}/test-harness/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping/target</outputDirectory> + <finalName>basicAbstractAssemblyMojoFeaturesTest-ouputFileNameMapping</finalName> + <projectModulesOnly>false</projectModulesOnly> + <workDirectory>${project.build.directory}/test-harness/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping/work</workDirectory> + <archiverManager implementation="org.apache.maven.plugin.assembly.BasicAbstractAssemblyMojoFeaturesTest$FileLoggingArchiverManagerStub" /> + <localRepository>${localRepository}</localRepository> + <reactorProjects> + <reactorProject implementation="org.apache.maven.plugin.assembly.BasicAbstractAssemblyMojoFeaturesTest$TwoDependencyReactorProjectStub"> + <groupId>first</groupId> + <artifactId>first</artifactId> + <depOneArtifactId>test</depOneArtifactId> + <depOneGroupId>org.test</depOneGroupId> + <depOneVersion>1</depOneVersion> + <depTwoArtifactId>test2</depTwoArtifactId> + <depTwoGroupId>org.test.2</depTwoGroupId> + <depTwoVersion>2</depTwoVersion> + </reactorProject> + <reactorProject implementation="org.apache.maven.plugin.assembly.BasicAbstractAssemblyMojoFeaturesTest$TwoDependencyReactorProjectStub"> + <groupId>second</groupId> + <artifactId>second</artifactId> + <depOneArtifactId>test3</depOneArtifactId> + <depOneGroupId>org.test.3</depOneGroupId> + <depOneVersion>3</depOneVersion> + <depTwoArtifactId>test4</depTwoArtifactId> + <depTwoGroupId>org.test.4</depTwoGroupId> + <depTwoVersion>4</depTwoVersion> + </reactorProject> + </reactorProjects> + <classifier></classifier> + </configuration> + </plugin> + </plugins> + </build> +</project> \ No newline at end of file Propchange: maven/plugins/trunk/maven-assembly-plugin/src/test/plugin-configs/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMappingWithTwoDependencySets-pluginConfig.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/plugins/trunk/maven-assembly-plugin/src/test/plugin-configs/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMappingWithTwoDependencySets-pluginConfig.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/plugins/trunk/maven-assembly-plugin/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping-assemblyDescriptor.xml URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping-assemblyDescriptor.xml?rev=398682&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping-assemblyDescriptor.xml (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping-assemblyDescriptor.xml Mon May 1 13:40:08 2006 @@ -0,0 +1,13 @@ +<assembly> + <id>outputFileNameMapping</id> + <formats> + <format>dir</format> + </formats> + <includeBaseDirectory>false</includeBaseDirectory> + <dependencySets> + <dependencySet> + <outputDirectory>/dependencies/</outputDirectory> + <outputFileNameMapping>${artifactId}.${extension}</outputFileNameMapping> + </dependencySet> + </dependencySets> +</assembly> \ No newline at end of file Propchange: maven/plugins/trunk/maven-assembly-plugin/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping-assemblyDescriptor.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/plugins/trunk/maven-assembly-plugin/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMapping-assemblyDescriptor.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/plugins/trunk/maven-assembly-plugin/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMappingWithTwoDependencySets-assemblyDescriptor.xml URL: http://svn.apache.org/viewcvs/maven/plugins/trunk/maven-assembly-plugin/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMappingWithTwoDependencySets-assemblyDescriptor.xml?rev=398682&view=auto ============================================================================== --- maven/plugins/trunk/maven-assembly-plugin/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMappingWithTwoDependencySets-assemblyDescriptor.xml (added) +++ maven/plugins/trunk/maven-assembly-plugin/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMappingWithTwoDependencySets-assemblyDescriptor.xml Mon May 1 13:40:08 2006 @@ -0,0 +1,27 @@ +<assembly> + <id>outputFileNameMapping</id> + <formats> + <format>dir</format> + </formats> + <includeBaseDirectory>false</includeBaseDirectory> + <dependencySets> + <dependencySet> + <excludes> + <exclude>second:second</exclude> + <exclude>org.test.3:test3</exclude> + <exclude>org.test.4:test4</exclude> + </excludes> + <outputDirectory>/dependencies/</outputDirectory> + <outputFileNameMapping>${artifactId}.${extension}</outputFileNameMapping> + </dependencySet> + <dependencySet> + <excludes> + <exclude>first:first</exclude> + <exclude>org.test:test</exclude> + <exclude>org.test.2:test2</exclude> + </excludes> + <outputDirectory>/dependencies/</outputDirectory> + <outputFileNameMapping>${artifactId}-${version}.${extension}</outputFileNameMapping> + </dependencySet> + </dependencySets> +</assembly> \ No newline at end of file Propchange: maven/plugins/trunk/maven-assembly-plugin/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMappingWithTwoDependencySets-assemblyDescriptor.xml ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/plugins/trunk/maven-assembly-plugin/src/test/resources/basicAbstractAssemblyMojoFeaturesTest/outputFileNameMappingWithTwoDependencySets-assemblyDescriptor.xml ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision"