blob: f88b273d65e3a8f607a041757bc40ac2b7fc518c [file] [log] [blame]
package org.apache.maven.plugins.war;
/*
* 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.
*/
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.plugins.war.Overlay;
import org.apache.maven.plugins.war.WarMojo;
import org.apache.maven.plugins.war.overlay.DefaultOverlay;
import org.apache.maven.plugins.war.stub.MavenZipProject;
import org.apache.maven.plugins.war.stub.WarArtifactStub;
import org.apache.maven.plugins.war.stub.ZipArtifactStub;
import org.codehaus.plexus.util.FileUtils;
import java.io.File;
import java.util.LinkedList;
/**
* @author Olivier Lamy
* @version $Id$
* @since 7 Oct 07
*/
public class WarZipTest
extends AbstractWarMojoTest
{
WarMojo mojo;
private static File pomFile = new File( getBasedir(), "src/test/resources/unit/warziptest/war-with-zip.xml" );
protected File getTestDirectory()
{
return new File( getBasedir(), "target/test-classes/unit/warziptest" );
}
public void setUp()
throws Exception
{
super.setUp();
mojo = (WarMojo) lookupMojo( "war", pomFile );
}
private Artifact buildZipArtifact()
throws Exception
{
ArtifactHandler artifactHandler = (ArtifactHandler) lookup( ArtifactHandler.ROLE, "jar" );
File zipFile = new File( getTestDirectory(), "foobar.zip" );
return new ZipArtifactStub( "src/test/resources/unit/warziptest", artifactHandler, zipFile );
}
private File configureMojo( String testId )
throws Exception
{
MavenZipProject project = new MavenZipProject();
String outputDir = getTestDirectory().getAbsolutePath() + File.separatorChar + testId + "-output";
// clean up
File outputDirFile = new File( outputDir );
if ( outputDirFile.exists() )
{
FileUtils.deleteDirectory( outputDirFile );
}
File webAppDirectory = new File( getTestDirectory(), testId );
WarArtifactStub warArtifact = new WarArtifactStub( getBasedir() );
String warName = "simple";
File webAppSource = createWebAppSource( testId );
File classesDir = createClassesDir( testId, true );
File xmlSource = createXMLConfigDir( testId, new String[] { "web.xml" } );
project.setArtifact( warArtifact );
this.configureMojo( mojo, new LinkedList<String>(), classesDir, webAppSource, webAppDirectory, project );
setVariableValueToObject( mojo, "outputDirectory", outputDir );
setVariableValueToObject( mojo, "warName", warName );
setVariableValueToObject( mojo, "workDirectory", new File( getTestDirectory(), "work" ) );
mojo.setWebXml( new File( xmlSource, "web.xml" ) );
project.getArtifacts().add( buildZipArtifact() );
return webAppDirectory;
}
public void testOneZipWithNoSkip()
throws Exception
{
File webAppDirectory = configureMojo( "one-zip" );
Overlay overlay = new DefaultOverlay( buildZipArtifact() );
// overlay.setSkip( false );
overlay.setType( "zip" );
mojo.addOverlay( overlay );
mojo.execute();
File foo = new File( webAppDirectory, "foo.txt" );
assertTrue( "foo.txt not exists", foo.exists() );
assertTrue( "foo.txt not a file", foo.isFile() );
File barDirectory = new File( webAppDirectory, "bar" );
assertTrue( "bar directory not exists", barDirectory.exists() );
assertTrue( "bar not a directory", barDirectory.isDirectory() );
File bar = new File( barDirectory, "bar.txt" );
assertTrue( "bar/bar.txt not exists", bar.exists() );
assertTrue( "bar/bar.txt not a file", bar.isFile() );
}
public void testOneZipWithTargetPathOverlay()
throws Exception
{
File webAppDirectory = configureMojo( "one-zip-overlay-targetPath" );
Overlay overlay = new DefaultOverlay( buildZipArtifact() );
overlay.setSkip( false );
overlay.setType( "zip" );
overlay.setTargetPath( "overridePath" );
mojo.addOverlay( overlay );
mojo.execute();
File foo = new File( webAppDirectory.getPath() + File.separatorChar + "overridePath", "foo.txt" );
assertTrue( "foo.txt not exists", foo.exists() );
assertTrue( "foo.txt not a file", foo.isFile() );
File barDirectory = new File( webAppDirectory.getPath() + File.separatorChar + "overridePath", "bar" );
assertTrue( "bar directory not exists", barDirectory.exists() );
assertTrue( "bar not a directory", barDirectory.isDirectory() );
File bar = new File( barDirectory, "bar.txt" );
assertTrue( "bar/bar.txt not exists", bar.exists() );
assertTrue( "bar/bar.txt not a file", bar.isFile() );
}
public void testOneZipDefaultSkip()
throws Exception
{
File webAppDirectory = configureMojo( "one-zip-overlay-skip" );
mojo.execute();
assertZipContentNotHere( webAppDirectory );
}
public void testOneZipWithForceSkip()
throws Exception
{
File webAppDirectory = configureMojo( "one-zip-overlay-skip" );
Overlay overlay = new DefaultOverlay( buildZipArtifact() );
overlay.setSkip( true );
overlay.setType( "zip" );
mojo.addOverlay( overlay );
mojo.execute();
assertZipContentNotHere( webAppDirectory );
}
protected void assertZipContentNotHere( File webAppDirectory )
{
File foo = new File( webAppDirectory.getPath() + File.separatorChar + "overridePath", "foo.txt" );
assertFalse( "foo.txt exists", foo.exists() );
assertFalse( "foo.txt a file", foo.isFile() );
File barDirectory = new File( webAppDirectory.getPath() + File.separatorChar + "overridePath", "bar" );
assertFalse( "bar directory exists", barDirectory.exists() );
assertFalse( "bar is a directory", barDirectory.isDirectory() );
File bar = new File( barDirectory, "bar.txt" );
assertFalse( "bar/bar.txt exists", bar.exists() );
assertFalse( "bar/bar.txt is a file", bar.isFile() );
}
}