blob: 959e5aec6240cea7b16cd549af11edc7f91328f0 [file] [log] [blame]
package org.apache.maven.plugin.assembly;
/*
* 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.
*/
import org.apache.maven.artifact.Artifact;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.Mojo;
import org.apache.maven.plugin.assembly.mojos.AssemblyMojo;
import org.apache.maven.plugin.assembly.stubs.ArchiverManagerStub;
import org.apache.maven.plugin.assembly.stubs.JarArchiverStub;
import org.apache.maven.plugin.assembly.stubs.ReactorMavenProjectStub;
import org.apache.maven.plugin.assembly.stubs.WarArchiverStub;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.archiver.jar.Manifest;
import org.codehaus.plexus.archiver.tar.TarArchiver;
import org.codehaus.plexus.archiver.tar.TarLongFileMode;
import org.codehaus.plexus.archiver.ArchiverException;
import org.codehaus.plexus.util.FileUtils;
import org.codehaus.plexus.util.StringUtils;
import org.codehaus.plexus.util.xml.Xpp3DomBuilder;
import java.io.File;
import java.io.FileReader;
import java.io.FilenameFilter;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author Edwin Punzalan
*/
public class AssemblyMojoTest
extends AbstractMojoTestCase
{
private String basedir = PlexusTestCase.getBasedir();
public void testMinConfiguration()
throws Exception
{
executeMojo( "min-plugin-config.xml" );
}
public void testProjectWithClassifier()
throws Exception
{
executeMojo( "classifier-plugin-config.xml" );
File assemblyJar = ArchiverManagerStub.archiverStub.getDestFile();
assertTrue( "Test if archive ends with the classifier", assemblyJar.getName().endsWith( "test-harness.zip" ) );
}
public void testDescriptorSourceDirectory()
throws Exception
{
executeMojo( "descriptorSourceDirectory-plugin-config.xml" );
}
public void testPackedDependencySet()
throws Exception
{
AssemblyMojo mojo = getMojo( "depSet-default-plugin-config.xml" );
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "executedProject" );
Set artifactSet = project.getArtifacts();
mojo.execute();
Map archiveMap = ArchiverManagerStub.archiverStub.getFiles();
Collection archivedFiles = archiveMap.keySet();
assertEquals( "Test number of files in archive", artifactSet.size() + 1, archivedFiles.size() );
for ( Iterator artifacts = artifactSet.iterator(); artifacts.hasNext(); )
{
Artifact expected = (Artifact) artifacts.next();
assertTrue( "Test expected dependency artifacts in archive", archivedFiles.contains( expected.getFile() ) );
assertTrue( "Test expected dependency is not unpacked", expected.getFile().getName().endsWith( ".jar" ) );
JarArchiverStub.ArchiverFile archiveFile =
(JarArchiverStub.ArchiverFile) archiveMap.get( expected.getFile() );
String archivePath = archiveFile.getOutputName();
assertTrue( "Test includeBaseDirectory", archivePath.startsWith( "assembly/" ) );
}
assertTrue( "Test project is in archive", archivedFiles.contains( project.getArtifact().getFile() ) );
assertTrue( "Test project is not unpacked", project.getArtifact().getFile().getName().endsWith( ".jar" ) );
JarArchiverStub.ArchiverFile archiveFile =
(JarArchiverStub.ArchiverFile) archiveMap.get( project.getArtifact().getFile() );
String archivePath = archiveFile.getOutputName();
assertTrue( "Test includeBaseDirectory", archivePath.startsWith( "assembly/" ) );
}
public void testPackedDependencySetWithFilenameMapping()
throws Exception
{
AssemblyMojo mojo = getMojo( "depSet-filename-mapping-plugin-config.xml" );
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "executedProject" );
Set artifactSet = project.getArtifacts();
mojo.execute();
Map archiveMap = ArchiverManagerStub.archiverStub.getFiles();
Collection archivedFiles = archiveMap.keySet();
assertEquals( "Test number of files in archive", artifactSet.size() + 1, archivedFiles.size() );
for ( Iterator artifacts = artifactSet.iterator(); artifacts.hasNext(); )
{
Artifact expected = (Artifact) artifacts.next();
assertTrue( "Test expected dependency artifacts in archive", archivedFiles.contains( expected.getFile() ) );
assertTrue( "Test expected dependency is not unpacked", expected.getFile().getName().endsWith( ".jar" ) );
JarArchiverStub.ArchiverFile archiveFile = (JarArchiverStub.ArchiverFile) archiveMap.get( expected.getFile() );
String archivePath = archiveFile.getOutputName();
String expectedName =
"libs/" + expected.getVersion() + "-" + expected.getArtifactId() + "-" + expected.getGroupId();
assertTrue( "Test filename mapping was used", archivePath.equals( expectedName ) );
assertFalse( "Test includeBaseDirectory", archivePath.startsWith( "assembly/" ) );
}
assertTrue( "Test project is in archive", archivedFiles.contains( project.getArtifact().getFile() ) );
assertTrue( "Test project is not unpacked", project.getArtifact().getFile().getName().endsWith( ".jar" ) );
JarArchiverStub.ArchiverFile archiveFile =
(JarArchiverStub.ArchiverFile) archiveMap.get( project.getArtifact().getFile() );
String archivePath = archiveFile.getOutputName();
assertFalse( "Test includeBaseDirectory", archivePath.startsWith( "assembly/" ) );
}
public void testPackedDependencySetWithFilenameMappingAndClassifier()
throws Exception
{
AssemblyMojo mojo = getMojo( "depSet-filename-mapping-and-classifier-plugin-config.xml" );
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "executedProject" );
Set artifactSet = project.getArtifacts();
mojo.execute();
Map archiveMap = ArchiverManagerStub.archiverStub.getFiles();
Collection archivedFiles = archiveMap.keySet();
assertEquals( "Test number of files in archive", artifactSet.size() + 1, archivedFiles.size() );
for ( Iterator artifacts = artifactSet.iterator(); artifacts.hasNext(); )
{
Artifact expected = (Artifact) artifacts.next();
assertTrue( "Test expected dependency artifacts in archive", archivedFiles.contains( expected.getFile() ) );
assertTrue( "Test expected dependency is not unpacked", expected.getFile().getName().endsWith( ".jar" ) );
JarArchiverStub.ArchiverFile archiveFile = (JarArchiverStub.ArchiverFile) archiveMap.get( expected.getFile() );
String archivePath = archiveFile.getOutputName();
String expectedName;
if ( StringUtils.isEmpty( expected.getClassifier() ) )
{
expectedName =
"libs/" + expected.getVersion() + "." + expected.getArtifactId() + "." +
expected.getGroupId();
}
else
{
expectedName =
"libs/" + expected.getVersion() + "." + expected.getArtifactId() +
"-classifier" + "." + expected.getGroupId();
}
assertEquals( "Test filename mapping was used", archivePath, expectedName );
assertFalse( "Test includeBaseDirectory", archivePath.startsWith( "assembly/" ) );
}
assertTrue( "Test project is in archive", archivedFiles.contains( project.getArtifact().getFile() ) );
assertTrue( "Test project is not unpacked", project.getArtifact().getFile().getName().endsWith( ".jar" ) );
JarArchiverStub.ArchiverFile archiveFile =
(JarArchiverStub.ArchiverFile) archiveMap.get( project.getArtifact().getFile() );
String archivePath = archiveFile.getOutputName();
assertFalse( "Test includeBaseDirectory", archivePath.startsWith( "assembly/" ) );
}
public void testPackedDependencySetWithScope()
throws Exception
{
AssemblyMojo mojo = getMojo( "depSet-scoped-plugin-config.xml" );
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "executedProject" );
Set artifactSet = project.getArtifacts();
mojo.execute();
Map archiveMap = ArchiverManagerStub.archiverStub.getFiles();
Collection archivedFiles = archiveMap.keySet();
for ( Iterator artifacts = artifactSet.iterator(); artifacts.hasNext(); )
{
Artifact expected = (Artifact) artifacts.next();
if ( !expected.getScope().equals( Artifact.SCOPE_TEST ) )
{
assertTrue( "Test expected dependency artifacts in archive",
archivedFiles.contains( expected.getFile() ) );
assertTrue( "Test expected dependency is not unpacked",
expected.getFile().getName().endsWith( ".jar" ) );
JarArchiverStub.ArchiverFile archiveFile =
(JarArchiverStub.ArchiverFile) archiveMap.get( expected.getFile() );
String archivePath = archiveFile.getOutputName();
assertTrue( "Test includeBaseDirectory", archivePath.startsWith( "assembly/" ) );
}
else
{
assertFalse( "Test unexpected dependency artifacts in archive",
archivedFiles.contains( expected.getFile() ) );
}
}
assertTrue( "Test project is in archive", archivedFiles.contains( project.getArtifact().getFile() ) );
assertTrue( "Test project is not unpacked", project.getArtifact().getFile().getName().endsWith( ".jar" ) );
JarArchiverStub.ArchiverFile archiveFile =
(JarArchiverStub.ArchiverFile) archiveMap.get( project.getArtifact().getFile() );
String archivePath = archiveFile.getOutputName();
assertTrue( "Test includeBaseDirectory", archivePath.startsWith( "assembly/" ) );
}
public void testPackedDependencySetIncludes()
throws Exception
{
AssemblyMojo mojo = getMojo( "depSet-includes-plugin-config.xml" );
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "executedProject" );
Set artifactSet = project.getArtifacts();
mojo.execute();
Map archiveMap = ArchiverManagerStub.archiverStub.getFiles();
Collection archivedFiles = archiveMap.keySet();
assertEquals( "Test number of files in archive", 1, archivedFiles.size() );
for ( Iterator artifacts = artifactSet.iterator(); artifacts.hasNext(); )
{
Artifact depArtifact = (Artifact) artifacts.next();
if ( depArtifact.getArtifactId().equals( "dependency-artifact1" ) )
{
assertTrue( "Test expected dependency artifacts in archive", archivedFiles.contains( depArtifact.getFile() ) );
assertTrue( "Test expected dependency is not unpacked", depArtifact.getFile().getName().endsWith( ".jar" ) );
JarArchiverStub.ArchiverFile archiveFile =
(JarArchiverStub.ArchiverFile) archiveMap.get( depArtifact.getFile() );
String archivePath = archiveFile.getOutputName();
assertTrue( "Test includeBaseDirectory", archivePath.startsWith( "assembly/" ) );
}
else
{
assertFalse( "Test dependency artifacts is NOT in archive", archivedFiles.contains( depArtifact.getFile() ) );
}
}
assertFalse( "Test project is NOT in archive", archivedFiles.contains( project.getArtifact().getFile() ) );
}
public void testPackedDependencySetExcludes()
throws Exception
{
AssemblyMojo mojo = getMojo( "depSet-excludes-plugin-config.xml" );
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "executedProject" );
Set artifactSet = project.getArtifacts();
mojo.execute();
Map archiveMap = ArchiverManagerStub.archiverStub.getFiles();
Collection archivedFiles = archiveMap.keySet();
assertEquals( "Test number of files in archive", artifactSet.size(), archivedFiles.size() );
for ( Iterator artifacts = artifactSet.iterator(); artifacts.hasNext(); )
{
Artifact depArtifact = (Artifact) artifacts.next();
if ( !depArtifact.getArtifactId().equals( "dependency-artifact1" ) )
{
assertTrue( "Test expected dependency artifacts in archive", archivedFiles.contains( depArtifact.getFile() ) );
assertTrue( "Test expected dependency is not unpacked", depArtifact.getFile().getName().endsWith( ".jar" ) );
JarArchiverStub.ArchiverFile archiveFile =
(JarArchiverStub.ArchiverFile) archiveMap.get( depArtifact.getFile() );
String archivePath = archiveFile.getOutputName();
assertTrue( "Test includeBaseDirectory", archivePath.startsWith( "assembly/" ) );
}
else
{
assertFalse( "Test dependency artifacts is NOT in archive", archivedFiles.contains( depArtifact.getFile() ) );
}
}
assertTrue( "Test project is in archive", archivedFiles.contains( project.getArtifact().getFile() ) );
assertTrue( "Test project is not unpacked", project.getArtifact().getFile().getName().endsWith( ".jar" ) );
JarArchiverStub.ArchiverFile archiveFile =
(JarArchiverStub.ArchiverFile) archiveMap.get( project.getArtifact().getFile() );
String archivePath = archiveFile.getOutputName();
assertTrue( "Test includeBaseDirectory", archivePath.startsWith( "assembly/" ) );
}
public void testUnpackedDependencySet()
throws Exception
{
AssemblyMojo mojo = getMojo( "depSet-unpack-plugin-config.xml" );
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "executedProject" );
Set artifactSet = project.getArtifacts();
File workDir = (File) getVariableValueFromObject( mojo, "workDirectory" );
mojo.execute();
Collection archivedFileSet = ArchiverManagerStub.archiverStub.getFiles().keySet();
assertEquals( "Test number of files in archive", artifactSet.size() + 1, archivedFileSet.size() );
for ( Iterator artifacts = artifactSet.iterator(); artifacts.hasNext(); )
{
Artifact dependency = (Artifact) artifacts.next();
String name = dependency.getArtifactId() + "-" + dependency.getVersion() + "." + dependency.getType();
File workPath = new File( workDir, name );
assertTrue( "Test if expected dependency is unpacked", workPath.exists() && workPath.isDirectory() );
assertTrue( "Test if expected dependency is in the archive", archivedFileSet.contains( workPath ) );
}
String name = project.getArtifact().getArtifactId() + "-" + project.getArtifact().getVersion() + "." +
project.getArtifact().getType();
File workPath = new File( workDir, name );
assertTrue( "Test if project is unpacked", workPath.exists() && workPath.isDirectory() );
assertTrue( "Test if project is in the archive", archivedFileSet.contains( workPath ) );
}
public void testFileSet()
throws Exception
{
generateTestFileSets( "\r\n" );
AssemblyMojo mojo = executeMojo( "fileSet-plugin-config.xml" );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
assertEquals( "Test archive adds", archiverFiles.size(), 1 );
File key = new File( basedir, "target/test-classes/fileSet" );
JarArchiverStub.ArchiverFile file = (JarArchiverStub.ArchiverFile) archiverFiles.get( key );
assertNotNull( "Test expected FileSet", file );
assertNull( "Test includes", file.getIncludes() );
assertTrue( "Test excludes",
assertEquals( FileUtils.getDefaultExcludesAsList().toArray( new String[0] ), file.getExcludes() ) );
}
public void testFileSetWithArchiveBaseDir()
throws Exception
{
generateTestFileSets( "\r\n" );
AssemblyMojo mojo = executeMojo( "fileSet-archiveBaseDir-plugin-config.xml" );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
assertEquals( "Test archive adds", archiverFiles.size(), 1 );
File key = new File( basedir, "target/test-classes/fileSet" );
JarArchiverStub.ArchiverFile file = (JarArchiverStub.ArchiverFile) archiverFiles.get( key );
assertNotNull( "Test expected FileSet", file );
assertNull( "Test includes", file.getIncludes() );
assertTrue( "Test excludes",
assertEquals( FileUtils.getDefaultExcludesAsList().toArray( new String[0] ), file.getExcludes() ) );
}
public void testFileSetIncludesExcludes()
throws Exception
{
generateTestFileSets( "\r\n" );
AssemblyMojo mojo = executeMojo( "fileSet-includes-excludes-plugin-config.xml" );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
assertEquals( "Test archive adds", archiverFiles.size(), 1 );
File key = new File( basedir, "target/test-classes/fileSet" );
JarArchiverStub.ArchiverFile file = (JarArchiverStub.ArchiverFile) archiverFiles.get( key );
assertNotNull( "Test expected FileSet", file );
assertTrue( "Test includes", assertEquals( new String[]{"**/*.txt"}, file.getIncludes() ) );
List excludesList = new ArrayList();
excludesList.add( "**/*.xml" );
excludesList.addAll( FileUtils.getDefaultExcludesAsList() );
assertTrue( "Test excludes", assertEquals( excludesList.toArray( new String[0] ), file.getExcludes() ) );
}
public void testFileSetUnixLineEndings()
throws Exception
{
generateTestFileSets( "\r\n" );
AssemblyMojo mojo = executeMojo( "fileSet-unix-lineEndings-plugin-config.xml" );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
assertEquals( "Test archive adds", archiverFiles.size(), 1 );
File key = new File( basedir, "target/test-classes/fileSet" );
JarArchiverStub.ArchiverFile file = (JarArchiverStub.ArchiverFile) archiverFiles.get( key );
assertNull( "Test original FileSet is not in archive", file );
File tempRoot = (File) getVariableValueFromObject( mojo, "tempRoot" );
File tempDir = (File) archiverFiles.keySet().iterator().next();
assertTrue( "Test if dir is in tempRoot", tempDir.getAbsolutePath().startsWith( tempRoot.getAbsolutePath() ) );
String newFile = tempDir.getAbsolutePath() + "/hibernate.hbm.xml";
String unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) < 0 );
newFile = tempDir.getAbsolutePath() + "/LICENSE.txt";
unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) < 0 );
newFile = tempDir.getAbsolutePath() + "/README.txt";
unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) < 0 );
newFile = tempDir.getAbsolutePath() + "/configs/config.txt";
unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) < 0 );
}
public void testFileSetLFLineEndings()
throws Exception
{
generateTestFileSets( "\r\n" );
AssemblyMojo mojo = executeMojo( "fileSet-lf-lineEndings-plugin-config.xml" );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
assertEquals( "Test archive adds", archiverFiles.size(), 1 );
File key = new File( basedir, "target/test-classes/fileSet" );
JarArchiverStub.ArchiverFile file = (JarArchiverStub.ArchiverFile) archiverFiles.get( key );
assertNull( "Test original FileSet is not in archive", file );
File tempRoot = (File) getVariableValueFromObject( mojo, "tempRoot" );
File tempDir = (File) archiverFiles.keySet().iterator().next();
assertTrue( "Test if dir is in tempRoot", tempDir.getAbsolutePath().startsWith( tempRoot.getAbsolutePath() ) );
String newFile = tempDir.getAbsolutePath() + "/hibernate.hbm.xml";
String unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) < 0 );
newFile = tempDir.getAbsolutePath() + "/LICENSE.txt";
unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) < 0 );
newFile = tempDir.getAbsolutePath() + "/README.txt";
unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) < 0 );
newFile = tempDir.getAbsolutePath() + "/configs/config.txt";
unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) < 0 );
}
public void testFileSetDOSLineEndings()
throws Exception
{
generateTestFileSets( "\n" );
AssemblyMojo mojo = executeMojo( "fileSet-dos-lineEndings-plugin-config.xml" );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
assertEquals( "Test archive adds", archiverFiles.size(), 1 );
File key = new File( basedir, "target/test-classes/fileSet" );
JarArchiverStub.ArchiverFile file = (JarArchiverStub.ArchiverFile) archiverFiles.get( key );
assertNull( "Test original FileSet is not in archive", file );
File tempRoot = (File) getVariableValueFromObject( mojo, "tempRoot" );
File tempDir = (File) archiverFiles.keySet().iterator().next();
assertTrue( "Test if dir is in tempRoot", tempDir.getAbsolutePath().startsWith( tempRoot.getAbsolutePath() ) );
String newFile = tempDir.getAbsolutePath() + "/hibernate.hbm.xml";
String unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) >= 0 );
newFile = tempDir.getAbsolutePath() + "/LICENSE.txt";
unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) >= 0 );
newFile = tempDir.getAbsolutePath() + "/README.txt";
unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) >= 0 );
newFile = tempDir.getAbsolutePath() + "/configs/config.txt";
unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) >= 0 );
}
public void testFileSetCRLFLineEndings()
throws Exception
{
generateTestFileSets( "\n" );
AssemblyMojo mojo = executeMojo( "fileSet-crlf-lineEndings-plugin-config.xml" );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
assertEquals( "Test archive adds", archiverFiles.size(), 1 );
File key = new File( basedir, "target/test-classes/fileSet" );
JarArchiverStub.ArchiverFile file = (JarArchiverStub.ArchiverFile) archiverFiles.get( key );
assertNull( "Test original FileSet is not in archive", file );
File tempRoot = (File) getVariableValueFromObject( mojo, "tempRoot" );
File tempDir = (File) archiverFiles.keySet().iterator().next();
assertTrue( "Test if dir is in tempRoot", tempDir.getAbsolutePath().startsWith( tempRoot.getAbsolutePath() ) );
String newFile = tempDir.getAbsolutePath() + "/hibernate.hbm.xml";
String unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) >= 0 );
newFile = tempDir.getAbsolutePath() + "/LICENSE.txt";
unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) >= 0 );
newFile = tempDir.getAbsolutePath() + "/README.txt";
unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) >= 0 );
newFile = tempDir.getAbsolutePath() + "/configs/config.txt";
unixContents = FileUtils.fileRead( newFile );
assertTrue( "Test if modified file exists in tempRoot", FileUtils.fileExists( newFile ) );
assertTrue( "Test if all \\r\\n are replaced", unixContents.indexOf( "\r\n" ) >= 0 );
}
public void testFileSetInvalidLineEndings()
throws Exception
{
try
{
executeMojo( "fileSet-lineEndings-exception-plugin-config.xml" );
fail( "Expected exception not thrown" );
}
catch ( MojoFailureException e )
{
// expected
}
}
public void testFileSetDirectoryDoesntExist()
throws Exception
{
executeMojo( "fileSet-doesnt-exist-plugin-config.xml" );
assertTrue( true );
}
public void testFileSetWithNoDirectoryInAssemblyXml()
throws Exception
{
AssemblyMojo mojo = executeMojo( "fileSet-no-directory-plugin-config.xml" );
File basedir = (File) getVariableValueFromObject( mojo, "basedir" );
Map archivedFiles = ArchiverManagerStub.archiverStub.getFiles();
assertNotNull( "Test if basedir is used when <fileSet><directory> is not given", archivedFiles.remove( basedir ) );
assertTrue( "Test that there are no other files added", archivedFiles.isEmpty() );
}
public void testFileItem()
throws Exception
{
generateTestFileSets( "\r\n" );
AssemblyMojo mojo = executeMojo( "fileItem-plugin-config.xml" );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
assertEquals( "Test archive files", 2, archiverFiles.size() );
Iterator files = archiverFiles.keySet().iterator();
File archivedFile = (File) files.next();
assertTrue( "Test if archived file exists", archivedFile.exists() );
if ( "README.txt".equals( archivedFile.getName() ) )
{
String contents = FileUtils.fileRead( archivedFile.getAbsolutePath() );
assertTrue( "Test if file filtering is disabled", contents.indexOf( "${project.artifactId}" ) >= 0 );
}
archivedFile = (File) files.next();
assertTrue( "Test if archived file exists", archivedFile.exists() );
if ( "README.txt".equals( archivedFile.getName() ) )
{
String contents = FileUtils.fileRead( archivedFile.getAbsolutePath() );
assertTrue( "Test if file filtering is disabled", contents.indexOf( "${project.artifactId}" ) >= 0 );
}
}
public void testFileItemWithOutputName()
throws Exception
{
generateTestFileSets( "\r\n" );
executeMojo( "fileItem-output-name-plugin-config.xml" );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
assertEquals( "Test archive files", 1, archiverFiles.size() );
File archivedFile = (File) archiverFiles.keySet().iterator().next();
JarArchiverStub.ArchiverFile file = (JarArchiverStub.ArchiverFile) archiverFiles.get( archivedFile );
assertEquals( "Test archive file path", "assembly/output/READTHIS.txt", file.getOutputName() );
assertTrue( "Test if archived file exists", archivedFile.exists() );
String contents = FileUtils.fileRead( archivedFile.getAbsolutePath() );
assertTrue( "Test if file filtering is disabled", contents.indexOf( "${project.artifactId}" ) >= 0 );
}
public void testFileItemWithFiltering()
throws Exception
{
generateTestFileSets( "\r\n" );
executeMojo( "fileItem-filtered-plugin-config.xml" );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
assertEquals( "Test archive files", 1, archiverFiles.size() );
File archivedFile = (File) archiverFiles.keySet().iterator().next();
assertTrue( "Test if archived file exists", archivedFile.exists() );
String contents = FileUtils.fileRead( archivedFile.getAbsolutePath() );
assertTrue( "Test if file filtering is enabled", contents.indexOf( "${project.artifactId}" ) < 0 );
}
public void testFileItemFilteringWithFilterFile()
throws Exception
{
generateTestFileSets( "\n" );
File filterFile = new File( basedir, "target/test-classes/fileSet/filterFile.properties" );
String fileContents = "sentence=This sentence came from a filter file.";
FileUtils.fileWrite( filterFile.getAbsolutePath(), fileContents );
executeMojo( "fileItem-filter-file-plugin-config.xml" );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
assertEquals( "Test archive files", 1, archiverFiles.size() );
File archivedFile = (File) archiverFiles.keySet().iterator().next();
assertTrue( "Test if archived file exists", archivedFile.exists() );
String contents = FileUtils.fileRead( archivedFile.getAbsolutePath() );
assertTrue( "Test if file filtering for ${project} is enabled", contents.indexOf( "${project.artifactId}" ) < 0 );
assertTrue( "Test if file filtering for ${sentence} is enabled", contents.indexOf( "${sentence}" ) < 0 );
}
public void testFileItemLineEndings()
throws Exception
{
generateTestFileSets( "\r\n" );
executeMojo( "fileItem-lineEndings-plugin-config.xml" );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
assertEquals( "Test archive files", 1, archiverFiles.size() );
File archivedFile = (File) archiverFiles.keySet().iterator().next();
assertTrue( "Test if archived file exists", archivedFile.exists() );
String contents = FileUtils.fileRead( archivedFile.getAbsolutePath() );
assertTrue( "Test file line endings", contents.indexOf( "\r\n" ) < 0 );
}
public void testFileItemFileMode()
throws Exception
{
generateTestFileSets( "\r\n" );
executeMojo( "fileItem-fileMode-plugin-config.xml" );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
assertEquals( "Test archive files", 1, archiverFiles.size() );
File archivedFile = (File) archiverFiles.keySet().iterator().next();
assertTrue( "Test if archived file exists", archivedFile.exists() );
JarArchiverStub.ArchiverFile file = (JarArchiverStub.ArchiverFile) archiverFiles.get( archivedFile );
assertEquals( "Test file mode", 777, file.getFileMode() );
}
public void testModuleSet()
throws Exception
{
AssemblyMojo mojo = getMojo( "moduleSet-plugin-config.xml" );
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "executedProject" );
List reactorProjectsList = (List) getVariableValueFromObject( mojo, "reactorProjects" );
for ( Iterator reactorProjects = reactorProjectsList.iterator(); reactorProjects.hasNext(); )
{
MavenProject reactorProject = (MavenProject) reactorProjects.next();
reactorProject.setParent( project );
}
mojo.execute();
assertTrue( "Test an archive was created", ArchiverManagerStub.archiverStub.getDestFile().exists() );
File workDir = (File) getVariableValueFromObject( mojo, "workDirectory" );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
for ( Iterator reactorProjects = reactorProjectsList.iterator(); reactorProjects.hasNext(); )
{
MavenProject reactorProject = (MavenProject) reactorProjects.next();
File unpacked = new File( workDir, reactorProject.getBuild().getFinalName() );
assertTrue( "Test if reactor project was unpacked in work directory", unpacked.exists() );
assertTrue( "Test if unpacked directory is in the archive", archiverFiles.containsKey( unpacked ) );
archiverFiles.remove( unpacked );
File metaInf = new File( unpacked, "META-INF" );
if ( metaInf.exists() && metaInf.listFiles().length > 0 )
{
testSignatureFiles( metaInf );
}
File srcDir = reactorProject.getBasedir();
assertTrue( "Test if reactor sources is in the archive", archiverFiles.containsKey( srcDir ) );
archiverFiles.remove( srcDir );
}
assertEquals( "Test that there are no other archive files added", 0, archiverFiles.size() );
}
public void testModuleSetIncludes()
throws Exception
{
ReactorMavenProjectStub.reactorProjects.clear();
AssemblyMojo mojo = getMojo( "moduleSet-includes-plugin-config.xml" );
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "executedProject" );
List reactorProjectsList = (List) getVariableValueFromObject( mojo, "reactorProjects" );
for ( Iterator reactorProjects = reactorProjectsList.iterator(); reactorProjects.hasNext(); )
{
MavenProject reactorProject = (MavenProject) reactorProjects.next();
reactorProject.setParent( project );
}
mojo.execute();
assertTrue( "Test an archive was created", ArchiverManagerStub.archiverStub.getDestFile().exists() );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
File workDir = (File) getVariableValueFromObject( mojo, "workDirectory" );
File unpacked = new File( workDir, "reactor-project-1-1.0.jar" );
assertTrue( "Test if reactor project was unpacked in work directory", unpacked.exists() );
assertTrue( "Test if unpacked directory is in the archive", archiverFiles.containsKey( unpacked ) );
archiverFiles.remove( unpacked );
File metaInf = new File( unpacked, "META-INF" );
if ( metaInf.exists() && metaInf.listFiles().length > 0 )
{
testSignatureFiles( metaInf );
}
File srcDir = new File( workDir.getParentFile(), "reactor-project-1" );
assertTrue( "Test if reactor project sources is in the archive", archiverFiles.containsKey( srcDir ) );
archiverFiles.remove( srcDir );
assertEquals( "Test that there are no other archive files added", 0, archiverFiles.size() );
}
public void testModuleSetExcludes()
throws Exception
{
ReactorMavenProjectStub.reactorProjects.clear();
AssemblyMojo mojo = getMojo( "moduleSet-excludes-plugin-config.xml" );
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "executedProject" );
List reactorProjectsList = (List) getVariableValueFromObject( mojo, "reactorProjects" );
for ( Iterator reactorProjects = reactorProjectsList.iterator(); reactorProjects.hasNext(); )
{
MavenProject reactorProject = (MavenProject) reactorProjects.next();
reactorProject.setParent( project );
}
mojo.execute();
assertTrue( "Test an archive was created", ArchiverManagerStub.archiverStub.getDestFile().exists() );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
File workDir = (File) getVariableValueFromObject( mojo, "workDirectory" );
File unpacked = new File( workDir, "reactor-project-2-1.0.jar" );
assertTrue( "Test if reactor project was unpacked in work directory", unpacked.exists() );
assertTrue( "Test if unpacked directory is in the archive", archiverFiles.containsKey( unpacked ) );
archiverFiles.remove( unpacked );
File metaInf = new File( unpacked, "META-INF" );
if ( metaInf.exists() && metaInf.listFiles().length > 0 )
{
testSignatureFiles( metaInf );
}
File srcDir = new File( workDir.getParentFile(), "reactor-project-2" );
assertTrue( "Test if reactor project sources is in the archive", archiverFiles.containsKey( srcDir ) );
archiverFiles.remove( srcDir );
assertEquals( "Test that there are no other archive files added", 0, archiverFiles.size() );
}
public void testModuleSetIncludeDependencies()
throws Exception
{
AssemblyMojo mojo = getMojo( "moduleSet-include-dependencies-plugin-config.xml" );
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "executedProject" );
List reactorProjectsList = (List) getVariableValueFromObject( mojo, "reactorProjects" );
for ( Iterator reactorProjects = reactorProjectsList.iterator(); reactorProjects.hasNext(); )
{
MavenProject reactorProject = (MavenProject) reactorProjects.next();
reactorProject.setParent( project );
}
mojo.execute();
assertTrue( "Test an archive was created", ArchiverManagerStub.archiverStub.getDestFile().exists() );
File workDir = (File) getVariableValueFromObject( mojo, "workDirectory" );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
for ( Iterator reactorProjects = reactorProjectsList.iterator(); reactorProjects.hasNext(); )
{
MavenProject reactorProject = (MavenProject) reactorProjects.next();
File unpacked = new File( workDir, reactorProject.getBuild().getFinalName() );
assertTrue( "Test if reactor project is unpacked in work directory", unpacked.exists() );
File dependency = new File( unpacked, "reactor-dependency-1.0.jar.extracted" );
assertTrue( "Test if reactor dependency is also unpacked", dependency.exists() );
assertTrue( "Test if unpacked directory is in the archive", archiverFiles.containsKey( unpacked ) );
archiverFiles.remove( unpacked );
File metaInf = new File( unpacked, "META-INF" );
if ( metaInf.exists() && metaInf.listFiles().length > 0 )
{
testSignatureFiles( metaInf );
}
File srcDir = reactorProject.getBasedir();
assertTrue( "Test if reactor sources is in the archive", archiverFiles.containsKey( srcDir ) );
archiverFiles.remove( srcDir );
}
assertEquals( "Test that there are no other archive files added", 0, archiverFiles.size() );
}
public void testModuleSetPacked()
throws Exception
{
ReactorMavenProjectStub.reactorProjects.clear();
AssemblyMojo mojo = getMojo( "moduleSet-packed-plugin-config.xml" );
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "executedProject" );
List reactorProjectsList = (List) getVariableValueFromObject( mojo, "reactorProjects" );
for ( Iterator reactorProjects = reactorProjectsList.iterator(); reactorProjects.hasNext(); )
{
MavenProject reactorProject = (MavenProject) reactorProjects.next();
reactorProject.setParent( project );
}
mojo.execute();
assertTrue( "Test an archive was created", ArchiverManagerStub.archiverStub.getDestFile().exists() );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
File workDir = (File) getVariableValueFromObject( mojo, "workDirectory" );
for ( Iterator reactorProjects = reactorProjectsList.iterator(); reactorProjects.hasNext(); )
{
MavenProject reactorProject = (MavenProject) reactorProjects.next();
assertFalse( "Test if work directory is used", workDir.exists() );
File reactorProjectFile = reactorProject.getArtifact().getFile();
assertNotNull( "Test if reactor project is in the archive", archiverFiles.remove( reactorProjectFile ) );
Artifact artifact = (Artifact) reactorProject.getArtifacts().iterator().next();
File depFile = artifact.getFile();
assertNull( "Test if reactor dependency is not in the archive", archiverFiles.remove( depFile ) );
}
assertTrue( "Test that there are no other archive files added", archiverFiles.isEmpty() );
}
public void testModuleSetPackedIncludingDependencies()
throws Exception
{
ReactorMavenProjectStub.reactorProjects.clear();
AssemblyMojo mojo = getMojo( "moduleSet-packed-including-dependencies-plugin-config.xml" );
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "executedProject" );
List reactorProjectsList = (List) getVariableValueFromObject( mojo, "reactorProjects" );
for ( Iterator reactorProjects = reactorProjectsList.iterator(); reactorProjects.hasNext(); )
{
MavenProject reactorProject = (MavenProject) reactorProjects.next();
reactorProject.setParent( project );
}
mojo.execute();
assertTrue( "Test an archive was created", ArchiverManagerStub.archiverStub.getDestFile().exists() );
Map archiverFiles = ArchiverManagerStub.archiverStub.getFiles();
File workDir = (File) getVariableValueFromObject( mojo, "workDirectory" );
for ( Iterator reactorProjects = reactorProjectsList.iterator(); reactorProjects.hasNext(); )
{
MavenProject reactorProject = (MavenProject) reactorProjects.next();
assertFalse( "Test if work directory is used", workDir.exists() );
File reactorProjectFile = reactorProject.getArtifact().getFile();
assertNotNull( "Test if reactor project is in the archive", archiverFiles.remove( reactorProjectFile ) );
Artifact artifact = (Artifact) reactorProject.getArtifacts().iterator().next();
File depFile = artifact.getFile();
assertNotNull( "Test if reactor dependency is also in the archive", archiverFiles.remove( depFile ) );
}
assertTrue( "Test that there are no other archive files added", archiverFiles.isEmpty() );
}
public void testRepository()
throws Exception
{
AssemblyMojo mojo = executeMojo( "repository-plugin-config.xml" );
File tempRoot = (File) getVariableValueFromObject( mojo, "tempRoot" );
File tmpRepositoryDir = new File( tempRoot, "repository" );
assertTrue( "Test if repository output directory is used", tmpRepositoryDir.exists() );
String repoPath = "assembly/dependency-artifact/1.0/dependency-artifact-1.0.";
File tmpArtifactJar = new File( tmpRepositoryDir, repoPath + "jar" );
assertTrue( "Test if dependency artifact is in repository", tmpArtifactJar.exists() );
assertTrue( "Test if md5 was generated", new File( tmpRepositoryDir, repoPath + "jar.md5" ).exists() );
assertTrue( "Test if sha1 was generated", new File( tmpRepositoryDir, repoPath + "jar.sha1" ).exists() );
File tmpArtifactPom = new File( tmpRepositoryDir, repoPath + "pom" );
assertTrue( "Test if dependency artifact is in repository", tmpArtifactPom.exists() );
assertTrue( "Test if md5 was generated", new File( tmpRepositoryDir, repoPath + "pom.md5" ).exists() );
assertTrue( "Test if sha1 was generated", new File( tmpRepositoryDir, repoPath + "pom.sha1" ).exists() );
}
public void testRepositoryWithMetadata()
throws Exception
{
AssemblyMojo mojo = executeMojo( "repository-with-metadata-plugin-config.xml" );
File tempRoot = (File) getVariableValueFromObject( mojo, "tempRoot" );
File tmpRepositoryDir = new File( tempRoot, "repository" );
assertTrue( "Test if repository output directory is used", tmpRepositoryDir.exists() );
String repoPath = "assembly/dependency-artifact/1.0/dependency-artifact-1.0.";
File tmpArtifactJar = new File( tmpRepositoryDir, repoPath + "jar" );
assertTrue( "Test if dependency artifact is in repository", tmpArtifactJar.exists() );
assertTrue( "Test if md5 was generated", new File( tmpRepositoryDir, repoPath + "jar.md5" ).exists() );
assertTrue( "Test if sha1 was generated", new File( tmpRepositoryDir, repoPath + "jar.sha1" ).exists() );
File tmpArtifactPom = new File( tmpRepositoryDir, repoPath + "pom" );
assertTrue( "Test if dependency artifact is in repository", tmpArtifactPom.exists() );
assertTrue( "Test if md5 was generated", new File( tmpRepositoryDir, repoPath + "pom.md5" ).exists() );
assertTrue( "Test if sha1 was generated", new File( tmpRepositoryDir, repoPath + "pom.sha1" ).exists() );
File tmpArtifactMetadatadir = new File( tmpRepositoryDir, "assembly/dependency-artifact" );
File metadataXml = new File( tmpArtifactMetadatadir, "maven-metadata.xml" );
assertTrue( "Test if metadata was created", metadataXml.exists() );
assertTrue( "Test if metadata md5 was generated", new File( tmpArtifactMetadatadir, "maven-metadata.xml.md5" ).exists() );
assertTrue( "Test if metadata md5 was generated", new File( tmpArtifactMetadatadir, "maven-metadata.xml.sha1" ).exists() );
metadataXml = new File( tmpArtifactMetadatadir, "maven-metadata-central.xml" );
assertTrue( "Test if metadata was created", metadataXml.exists() );
assertTrue( "Test if metadata md5 was generated", new File( tmpArtifactMetadatadir, "maven-metadata-central.xml.md5" ).exists() );
assertTrue( "Test if metadata md5 was generated", new File( tmpArtifactMetadatadir, "maven-metadata-central.xml.sha1" ).exists() );
}
public void testRepositoryGroupVersionAlignment()
throws Exception
{
AssemblyMojo mojo = executeMojo( "repository-groupVersionAlignment-plugin-config.xml" );
File tempRoot = (File) getVariableValueFromObject( mojo, "tempRoot" );
File tmpRepositoryDir = new File( tempRoot, "repository" );
assertTrue( "Test if repository output directory is used", tmpRepositoryDir.exists() );
String repoPath = "assembly/dependency-artifact/1.1/dependency-artifact-1.1.";
File tmpArtifactJar = new File( tmpRepositoryDir, repoPath + "jar" );
assertTrue( "Test if dependency artifact is in repository", tmpArtifactJar.exists() );
assertTrue( "Test if md5 was generated", new File( tmpRepositoryDir, repoPath + "jar.md5" ).exists() );
assertTrue( "Test if sha1 was generated", new File( tmpRepositoryDir, repoPath + "jar.sha1" ).exists() );
File tmpArtifactPom = new File( tmpRepositoryDir, repoPath + "pom" );
assertTrue( "Test if dependency artifact is in repository", tmpArtifactPom.exists() );
assertTrue( "Test if md5 was generated", new File( tmpRepositoryDir, repoPath + "pom.md5" ).exists() );
assertTrue( "Test if sha1 was generated", new File( tmpRepositoryDir, repoPath + "pom.sha1" ).exists() );
}
public void testRepositoryGroupVersionAlignmentExcludes()
throws Exception
{
AssemblyMojo mojo = executeMojo( "repository-groupVersionAlignment-excludes-plugin-config.xml" );
File tempRoot = (File) getVariableValueFromObject( mojo, "tempRoot" );
File tmpRepositoryDir = new File( tempRoot, "repository" );
assertTrue( "Test if repository output directory is used", tmpRepositoryDir.exists() );
String repoPath = "assembly/dependency-artifact/1.0/dependency-artifact-1.0.";
File tmpArtifactJar = new File( tmpRepositoryDir, repoPath + "jar" );
assertTrue( "Test if dependency artifact is in repository", tmpArtifactJar.exists() );
assertTrue( "Test if md5 was generated", new File( tmpRepositoryDir, repoPath + "jar.md5" ).exists() );
assertTrue( "Test if sha1 was generated", new File( tmpRepositoryDir, repoPath + "jar.sha1" ).exists() );
File tmpArtifactPom = new File( tmpRepositoryDir, repoPath + "pom" );
assertTrue( "Test if dependency artifact is in repository", tmpArtifactPom.exists() );
assertTrue( "Test if md5 was generated", new File( tmpRepositoryDir, repoPath + "pom.md5" ).exists() );
assertTrue( "Test if sha1 was generated", new File( tmpRepositoryDir, repoPath + "pom.sha1" ).exists() );
}
public void testMASSEMBLY98()
throws Exception
{
AssemblyMojo mojo = executeMojo( "MASSEMBLY-98-plugin-config.xml" );
File tempRoot = (File) getVariableValueFromObject( mojo, "tempRoot" );
File tmpRepositoryDir = new File( tempRoot, "repository" );
assertTrue( "Test if repository output directory is used", tmpRepositoryDir.exists() );
String repoPath = "assembly/dependency-artifact/1.1/dependency-artifact-1.1.";
File tmpArtifactJar = new File( tmpRepositoryDir, repoPath + "jar" );
assertTrue( "Test if dependency artifact is in repository", tmpArtifactJar.exists() );
assertTrue( "Test if md5 was generated", new File( tmpRepositoryDir, repoPath + "jar.md5" ).exists() );
assertTrue( "Test if sha1 was generated", new File( tmpRepositoryDir, repoPath + "jar.sha1" ).exists() );
File tmpArtifactPom = new File( tmpRepositoryDir, repoPath + "pom" );
assertTrue( "Test if dependency artifact is in repository", tmpArtifactPom.exists() );
assertTrue( "Test if md5 was generated", new File( tmpRepositoryDir, repoPath + "pom.md5" ).exists() );
assertTrue( "Test if sha1 was generated", new File( tmpRepositoryDir, repoPath + "pom.sha1" ).exists() );
}
public void testComponents()
throws Exception
{
AssemblyMojo mojo = executeMojo( "component-plugin-config.xml" );
Map archivedFiles = ArchiverManagerStub.archiverStub.getFiles();
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "project" );
assertNotNull( "Test if project jar is in archive", archivedFiles.remove( project.getArtifact().getFile() ) );
File fileSetDir = new File( PlexusTestCase.getBasedir(), "target/test-classes/fileSet" );
assertNotNull( "Test if FileSet is in the archive", archivedFiles.remove( fileSetDir ) );
File readme = new File( PlexusTestCase.getBasedir(), "target/test-classes/fileSet/README.txt" );
assertNotNull( "Test if FileItem README.txt is in the archive", archivedFiles.remove( readme ) );
File license = new File( PlexusTestCase.getBasedir(), "target/test-classes/fileSet/LICENSE.txt" );
assertNotNull( "Test if FileItem LICENSE.txt is in the archive", archivedFiles.remove( license ) );
assertTrue( "Test there are no more files in the archive", archivedFiles.isEmpty() );
}
public void testPlexusComponents()
throws Exception
{
File plexusDir = new File( basedir + "/target/test-classes/fileSet/META-INF/plexus" );
plexusDir.mkdirs();
String fileContents = "<component-set>\n <components>\n <component>\n <role>class.Role</role>" +
"\n <implementation>class.Implementation</implementation>\n </component>\n </components>" +
"\n</component-set>";
FileUtils.fileWrite( new File( plexusDir, "components.xml" ).getAbsolutePath(), fileContents );
AssemblyMojo mojo = executeMojo( "plexus-components-plugin-config.xml" );
Map files = ArchiverManagerStub.archiverStub.getFiles();
File fileSetDir = new File( PlexusTestCase.getBasedir() + "/target/test-classes/fileSet" );
assertNotNull( "Test if FileSet is in the archive", files.remove( fileSetDir ) );
File componentXml = (File) files.keySet().iterator().next();
files.remove( componentXml );
assertTrue( "Test if componentXml tmp file was created", componentXml.exists() );
FileReader fileReader = new FileReader( componentXml );
assertNotNull( "Test if componentXml is correctly created", Xpp3DomBuilder.build( fileReader ) );
assertTrue( "Test there are no more files in the archive", files.isEmpty() );
}
public void testIncludeSiteDirectory()
throws Exception
{
AssemblyMojo mojo = getMojo( "includeSite-plugin-config.xml" );
File siteDir = (File) getVariableValueFromObject( mojo, "siteDirectory" );
siteDir.mkdirs();
mojo.execute();
assertTrue( "Test an archive was created", ArchiverManagerStub.archiverStub.getDestFile().exists() );
Map files = ArchiverManagerStub.archiverStub.getFiles();
assertTrue( "Test if site directory was added", files.containsKey( siteDir ) );
}
public void testTarGzipArchive()
throws Exception
{
executeMojo( "tar-gz-plugin-config.xml" );
TarArchiver.TarCompressionMethod method = (TarArchiver.TarCompressionMethod) getVariableValueFromObject( ArchiverManagerStub.archiverStub, "tarCompressionMethod" );
assertEquals( "Test Tar compression method", "gzip", method.getValue() );
TarLongFileMode longFileMode = (TarLongFileMode) getVariableValueFromObject( ArchiverManagerStub.archiverStub, "longFileMode" );
assertTrue( "Test tar long file mode default", longFileMode.isWarnMode() );
}
public void testTgzArchive()
throws Exception
{
executeMojo( "tgz-plugin-config.xml" );
TarArchiver.TarCompressionMethod method = (TarArchiver.TarCompressionMethod) getVariableValueFromObject( ArchiverManagerStub.archiverStub, "tarCompressionMethod" );
assertEquals( "Test Tar compression method", "gzip", method.getValue() );
TarLongFileMode longFileMode = (TarLongFileMode) getVariableValueFromObject( ArchiverManagerStub.archiverStub, "longFileMode" );
assertTrue( "Test tar long file mode default", longFileMode.isWarnMode() );
}
public void testTarBzip2Archive()
throws Exception
{
executeMojo( "tar-bz2-plugin-config.xml" );
TarArchiver.TarCompressionMethod method = (TarArchiver.TarCompressionMethod) getVariableValueFromObject( ArchiverManagerStub.archiverStub, "tarCompressionMethod" );
assertEquals( "Test Tar compression method", "bzip2", method.getValue() );
TarLongFileMode longFileMode = (TarLongFileMode) getVariableValueFromObject( ArchiverManagerStub.archiverStub, "longFileMode" );
assertTrue( "Test tar long file mode default", longFileMode.isFailMode() );
}
public void testTbz2Archive()
throws Exception
{
executeMojo( "tbz2-plugin-config.xml" );
TarArchiver.TarCompressionMethod method = (TarArchiver.TarCompressionMethod) getVariableValueFromObject( ArchiverManagerStub.archiverStub, "tarCompressionMethod" );
assertEquals( "Test Tar compression method", "bzip2", method.getValue() );
TarLongFileMode longFileMode = (TarLongFileMode) getVariableValueFromObject( ArchiverManagerStub.archiverStub, "longFileMode" );
assertTrue( "Test tar long file mode default", longFileMode.isFailMode() );
}
public void testWarArchive()
throws Exception
{
executeMojo( "war-plugin-config.xml" );
WarArchiverStub archiver = (WarArchiverStub) ArchiverManagerStub.archiverStub;
assertFalse( "Test that web.xml is not ignored", archiver.getIgnoreWebxml() );
}
public void testManifestFile()
throws Exception
{
String contents = "Manifest-Version: 1.0\n" + "Archiver-Version: Plexus Archiver\n" +
"Created-By: Apache Maven\n" + "Built-By: User\n" + "Build-Jdk: 1.4.2_10\n" +
"Extension-Name: maven-assembly-plugin\n" + "Specification-Title: Maven Plugins\n" +
"Specification-Vendor: Apache Software Foundation\n" +
"Implementation-Vendor: Apache Software Foundation\n" + "Implementation-Title: maven-assembly-plugin\n" +
"Implementation-Version: 2.2-SNAPSHOT";
File manifestFile = new File( PlexusTestCase.getBasedir() + "/target/test-harness/assembly/manifestFile/test-manifest.file" );
manifestFile.getParentFile().mkdirs();
FileUtils.fileWrite( manifestFile.getAbsolutePath(), contents );
executeMojo( "manifestFile-plugin-config.xml" );
JarArchiverStub archiver = (JarArchiverStub) ArchiverManagerStub.archiverStub;
assertEquals( "Test if provided manifest is used", new Manifest( new FileReader( manifestFile ) ), archiver.getManifest() );
}
public void testManifest()
throws Exception
{
executeMojo( "manifest-plugin-config.xml" );
JarArchiverStub archiver = (JarArchiverStub) ArchiverManagerStub.archiverStub;
Manifest manifest = archiver.getManifest();
manifest.write( new PrintWriter( System.out ) );
}
public void testManifestFileNotFoundException()
throws Exception
{
try
{
executeMojo( "manifestFile-FileNotFoundException-plugin-config.xml" );
fail( "Expected exception not thrown" );
}
catch ( MojoFailureException e )
{
assertTrue( "Test for expected exception", e.getMessage().startsWith( "Manifest not found: " ) );
}
}
public void testNoSuchArchiverException()
throws Exception
{
try
{
executeMojo( "NoSuchArchiverException-plugin-config.xml" );
fail( "Expected exception not thrown" );
}
catch ( MojoFailureException e )
{
assertTrue( "Test for expected exception", e.getMessage().startsWith( "Unable to obtain archiver for extension" ) );
}
}
public void testArchiverExceptionOnAddDirectoryMethod()
throws Exception
{
generateTestFileSets( "\n" );
AssemblyMojo mojo = getMojo( "fileSet-plugin-config.xml" );
ArchiverManagerStub.archiverStub = new JarArchiverStub()
{
public void addDirectory( File file, String string, String[] includes, String[] excludes )
throws ArchiverException
{
throw new ArchiverException( "Intentional exception" );
}
};
try
{
mojo.execute();
fail( "Expected exception not thrown" );
}
catch ( MojoExecutionException e )
{
assertTrue( "Test thrown exception", e.getMessage().startsWith( "Error adding directory to archive: ") );
}
}
public void testArchiverExceptionInModuleSet()
throws Exception
{
AssemblyMojo mojo = getMojo( "moduleSet-plugin-config.xml" );
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "executedProject" );
List reactorProjectsList = (List) getVariableValueFromObject( mojo, "reactorProjects" );
for ( Iterator reactorProjects = reactorProjectsList.iterator(); reactorProjects.hasNext(); )
{
MavenProject reactorProject = (MavenProject) reactorProjects.next();
reactorProject.setParent( project );
}
ArchiverManagerStub.archiverStub = new JarArchiverStub()
{
public void addDirectory( File file, String string, String[] includes, String[] excludes )
throws ArchiverException
{
throw new ArchiverException( "Intentional exception" );
}
};
try
{
mojo.execute();
fail( "Expected exception not thrown" );
}
catch ( MojoExecutionException e )
{
assertTrue( "Test thrown exception", e.getMessage().startsWith( "Error adding directory to archive: ") );
}
}
public void testAttachedMojo()
throws Exception
{
Mojo mojo = lookupMojo( "attached", basedir + "/src/test/plugin-configs/attached/min-plugin-config.xml" );
mojo.execute();
assertTrue( "Test an archive was created", ArchiverManagerStub.archiverStub.getDestFile().exists() );
}
public void testAttachedMojoDependencySet()
throws Exception
{
Mojo mojo = lookupMojo( "attached", basedir + "/src/test/plugin-configs/attached/depSet-plugin-config.xml" );
mojo.execute();
MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "project" );
Set artifactSet = project.getArtifacts();
Map archiveMap = ArchiverManagerStub.archiverStub.getFiles();
Collection archivedFiles = archiveMap.keySet();
assertEquals( "Test number of files in archive", artifactSet.size() + 1, archivedFiles.size() );
for ( Iterator artifacts = artifactSet.iterator(); artifacts.hasNext(); )
{
Artifact expected = (Artifact) artifacts.next();
assertTrue( "Test expected dependency artifacts in archive", archivedFiles.contains( expected.getFile() ) );
assertTrue( "Test expected dependency is not unpacked", expected.getFile().getName().endsWith( ".jar" ) );
JarArchiverStub.ArchiverFile archiveFile =
(JarArchiverStub.ArchiverFile) archiveMap.get( expected.getFile() );
String archivePath = archiveFile.getOutputName();
assertTrue( "Test includeBaseDirectory", archivePath.startsWith( "assembly/" ) );
}
assertTrue( "Test project is in archive", archivedFiles.contains( project.getArtifact().getFile() ) );
assertTrue( "Test project is not unpacked", project.getArtifact().getFile().getName().endsWith( ".jar" ) );
JarArchiverStub.ArchiverFile archiveFile =
(JarArchiverStub.ArchiverFile) archiveMap.get( project.getArtifact().getFile() );
String archivePath = archiveFile.getOutputName();
assertTrue( "Test includeBaseDirectory", archivePath.startsWith( "assembly/" ) );
}
private AssemblyMojo getMojo( String pluginXml )
throws Exception
{
return (AssemblyMojo) lookupMojo( "assembly", basedir + "/src/test/plugin-configs/assembly/" + pluginXml );
}
private AssemblyMojo executeMojo( String pluginXml )
throws Exception
{
AssemblyMojo mojo = getMojo( pluginXml );
mojo.execute();
assertTrue( "Test an archive was created", ArchiverManagerStub.archiverStub.getDestFile().exists() );
return mojo;
}
private boolean assertEquals( Object[] obj1, Object[] obj2 )
{
boolean equal = false;
if ( obj1.length == obj2.length )
{
for ( int ctr = 0; ctr < obj1.length; ctr++ )
{
if ( !obj1[ctr].equals( obj2[ctr] ) )
{
break;
}
}
equal = true;
}
return equal;
}
private void generateTestFileSets( String lineEnding )
throws Exception
{
generateTestFileSets( basedir, lineEnding );
}
static void generateTestFileSets( String basedir, String lineEnding )
throws Exception
{
String fileSetDir = basedir + "/target/test-classes/fileSet";
/* ensure that we start with a fresh dir, else we get all manner of dross from other tests */
FileUtils.deleteDirectory(fileSetDir);
FileUtils.mkdir( fileSetDir + "/configs" );
String fileContents = "<hibernate>" + lineEnding + " <hibernate-mapping>" + lineEnding + " <class/>" +
lineEnding + " </hibernate-mapping>" + lineEnding + "</hibernate>";
FileUtils.fileWrite( fileSetDir + "/hibernate.hbm.xml", fileContents );
fileContents = "Copyright 2001-2006 The Apache Software Foundation." + lineEnding + lineEnding +
"Licensed under the Apache License, Version 2.0 (the \"License\");" + lineEnding +
"you may not use this file except in compliance with the License." + lineEnding +
"You may obtain a copy of the License at" + lineEnding + lineEnding +
" http://www.apache.org/licenses/LICENSE-2.0" + lineEnding + lineEnding +
"Unless required by applicable law or agreed to in writing, software" + lineEnding +
"distributed under the License is distributed on an \"AS IS\" BASIS," + lineEnding +
"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied." + lineEnding +
"See the License for the specific language governing permissions and" + lineEnding +
"limitations under the License.";
FileUtils.fileWrite( fileSetDir + "/LICENSE.txt", fileContents );
fileContents = "Readme file with only one line for ${project.artifactId}. ${sentence}";
FileUtils.fileWrite( fileSetDir + "/README.txt", fileContents );
fileContents = "sample configuration file line 1" + lineEnding + "sample configuration file line 2" +
lineEnding + "sample configuration file line 3" + lineEnding + "sample configuration file line 4";
FileUtils.fileWrite( fileSetDir + "/configs/config.txt", fileContents );
}
private void testSignatureFiles( File metaInf )
{
File[] metaInfFiles = metaInf.listFiles(
new FilenameFilter()
{
String[] signatureExt = { ".rsa", ".dsa", ".sf" };
public boolean accept( File dir, String name )
{
for ( int idx = 0; idx < signatureExt.length; idx++ )
{
if ( name.toLowerCase().endsWith( signatureExt[ idx ] ) )
{
return true;
}
}
return false;
}
}
);
assertEquals( "Test for signature files", 0, metaInfFiles.length );
}
}