blob: 57de2856a05d0925cbf90161496a6b2e44ac17b8 [file] [log] [blame]
package org.apache.maven.doxia.tools;
/*
* 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 java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
import org.apache.maven.doxia.site.decoration.DecorationModel;
import org.apache.maven.doxia.site.decoration.Skin;
import org.apache.maven.doxia.tools.stubs.SiteToolMavenProjectStub;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.PlexusTestCase;
/**
* @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
* @version $Id$
*/
public class SiteToolTest
extends PlexusTestCase
{
/**
* @return the repo.
*
* @throws Exception
*/
protected ArtifactRepository getLocalRepo()
throws Exception
{
String updatePolicyFlag = ArtifactRepositoryPolicy.UPDATE_POLICY_ALWAYS;
String checksumPolicyFlag = ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN;
ArtifactRepositoryPolicy snapshotsPolicy = new ArtifactRepositoryPolicy( true, updatePolicyFlag,
checksumPolicyFlag );
ArtifactRepositoryPolicy releasesPolicy = new ArtifactRepositoryPolicy( true, updatePolicyFlag,
checksumPolicyFlag );
ArtifactRepositoryFactory artifactRepositoryFactory = (ArtifactRepositoryFactory) lookup( ArtifactRepositoryFactory.ROLE );
ArtifactRepositoryLayout defaultArtifactRepositoryLayout = (ArtifactRepositoryLayout) lookup(
ArtifactRepositoryLayout.ROLE,
"default" );
return artifactRepositoryFactory.createArtifactRepository( "local", getTestFile( "target/local-repo" ).toURI().toURL()
.toString(), defaultArtifactRepositoryLayout, snapshotsPolicy, releasesPolicy );
}
/**
* @return the local repo directory.
*
* @throws Exception
*/
protected File getLocalRepoDir()
throws Exception
{
return new File( getLocalRepo().getBasedir() );
}
/**
* @throws Exception
*/
public void testGetDefaultSkinArtifact()
throws Exception
{
SiteTool tool = (SiteTool) lookup( SiteTool.ROLE );
assertNotNull( tool );
SiteToolMavenProjectStub project = new SiteToolMavenProjectStub( "site-tool-test" );
assertNotNull( tool.getDefaultSkinArtifact( getLocalRepo(), project.getRemoteArtifactRepositories() ) );
}
/**
* @throws Exception
*/
public void testGetSkinArtifactFromRepository()
throws Exception
{
SiteTool tool = (SiteTool) lookup( SiteTool.ROLE );
assertNotNull( tool );
SiteToolMavenProjectStub project = new SiteToolMavenProjectStub( "site-tool-test" );
DecorationModel decorationModel = new DecorationModel();
Skin skin = new Skin();
skin.setGroupId( "org.apache.maven.skins" );
skin.setArtifactId( "maven-stylus-skin" );
decorationModel.setSkin( skin );
assertNotNull( tool.getSkinArtifactFromRepository( getLocalRepo(), project.getRemoteArtifactRepositories(),
decorationModel ) );
}
/**
* @throws Exception
*/
public void testGetRelativePath()
throws Exception
{
SiteTool tool = (SiteTool) lookup( SiteTool.ROLE );
assertNotNull( tool );
String to = "http://maven.apache.org";
String from = "http://maven.apache.org";
assertEquals( tool.getRelativePath( to, from ), "" );
to = "http://maven.apache.org";
from = "http://maven.apache.org/";
assertEquals( tool.getRelativePath( to, from ), "" );
to = "http://maven.apache.org/";
from = "http://maven.apache.org";
assertEquals( tool.getRelativePath( to, from ), "" );
to = "http://maven.apache.org/";
from = "http://maven.apache.org/";
assertEquals( tool.getRelativePath( to, from ), "" );
to = "http://maven.apache.org/";
from = "http://maven.apache.org/plugins/maven-site-plugin";
assertEquals( tool.getRelativePath( to, from ), ".." + File.separator + ".." );
to = "http://maven.apache.org";
from = "http://maven.apache.org/plugins/maven-site-plugin/";
assertEquals( tool.getRelativePath( to, from ), ".." + File.separator + ".." );
to = "http://maven.apache.org/";
from = "http://maven.apache.org/plugins/maven-site-plugin/";
assertEquals( tool.getRelativePath( to, from ), ".." + File.separator + ".." );
to = "http://maven.apache.org";
from = "http://maven.apache.org/plugins/maven-site-plugin";
assertEquals( tool.getRelativePath( to, from ), ".." + File.separator + ".." );
to = "http://maven.apache.org/downloads.html";
from = "http://maven.apache.org/index.html";
// FIXME! assertEquals( "downloads.html", tool.getRelativePath( to, from ) );
// MSITE-600, MSHARED-203
to = "file:///tmp/bloop";
from = "scp://localhost:/tmp/blop";
// FIXME! assertEquals( tool.getRelativePath( to, from ), to );
// note: 'tmp' is the host here which is probably not the intention, but at least the result is correct
to = "file://tmp/bloop";
from = "scp://localhost:/tmp/blop";
assertEquals( tool.getRelativePath( to, from ), to );
to = "http://maven.apache.org/plugins/maven-site-plugin/";
from = "http://maven.apache.org";
assertEquals( tool.getRelativePath( to, from ), "plugins" + File.separator + "maven-site-plugin" );
to = "http://maven.apache.org/plugins/maven-site-plugin/";
from = "http://maven.apache.org/";
assertEquals( tool.getRelativePath( to, from ), "plugins" + File.separator + "maven-site-plugin" );
to = "http://maven.apache.org/plugins/maven-site-plugin";
from = "http://maven.apache.org";
assertEquals( tool.getRelativePath( to, from ), "plugins" + File.separator + "maven-site-plugin" );
to = "http://maven.apache.org/plugins/maven-site-plugin";
from = "http://maven.apache.org/";
assertEquals( tool.getRelativePath( to, from ), "plugins" + File.separator + "maven-site-plugin" );
// Tests between files as described in MIDEA-102
to = "C:/dev/voca/gateway/parser/gateway-parser.iml";
from = "C:/dev/voca/gateway/";
assertEquals( "Child file using Windows drive letter",
"parser" + File.separator + "gateway-parser.iml", tool.getRelativePath( to, from ) );
to = "C:/foo/child";
from = "C:/foo/master";
assertEquals( "Sibling directory using Windows drive letter",
".." + File.separator + "child", tool.getRelativePath( to, from ) );
to = "/myproject/myproject-module1";
from = "/myproject/myproject";
assertEquals( "Sibling directory with similar name",
".." + File.separator + "myproject-module1", tool.getRelativePath( to, from ) );
// Normalized paths as described in MSITE-284
assertEquals( ".." + File.separator + "project-module-1" + File.separator + "src" + File.separator + "site",
tool.getRelativePath( "Z:\\dir\\project\\project-module-1\\src\\site",
"Z:\\dir\\project\\project-module-1\\..\\project-parent" ) );
assertEquals( ".." + File.separator + ".." + File.separator + ".." + File.separator + "project-parent",
tool.getRelativePath( "Z:\\dir\\project\\project-module-1\\..\\project-parent",
"Z:\\dir\\project\\project-module-1\\src\\site" ) );
assertEquals( ".." + File.separator + "foo", tool.getRelativePath( "../../foo/foo", "../../foo/bar" ) );
}
/**
* @throws Exception
*/
public void testGetSiteDescriptorFromBasedir()
throws Exception
{
SiteTool tool = (SiteTool) lookup( SiteTool.ROLE );
assertNotNull( tool );
SiteToolMavenProjectStub project = new SiteToolMavenProjectStub( "site-tool-test" );
assertEquals( tool.getSiteDescriptorFromBasedir( null, project.getBasedir(), null ).toString(),
project.getBasedir() + File.separator + "src" + File.separator + "site" + File.separator + "site.xml" );
assertEquals( tool.getSiteDescriptorFromBasedir( null, project.getBasedir(), Locale.ENGLISH ).toString(),
project.getBasedir() + File.separator + "src" + File.separator + "site" + File.separator + "site.xml" );
String siteDir = "src/blabla";
assertEquals( tool.getSiteDescriptorFromBasedir( siteDir, project.getBasedir(), null ).toString(),
project.getBasedir() + File.separator + "src" + File.separator + "blabla" + File.separator + "site.xml" );
}
/**
* @throws Exception
*/
public void testGetSiteDescriptorFromRepository()
throws Exception
{
SiteTool tool = (SiteTool) lookup( SiteTool.ROLE );
assertNotNull( tool );
SiteToolMavenProjectStub project = new SiteToolMavenProjectStub( "site-tool-test" );
project.setGroupId( "org.apache.maven" );
project.setArtifactId( "maven-site" );
project.setVersion( "1.0" );
String result = getLocalRepoDir() + File.separator + "org" + File.separator + "apache" + File.separator
+ "maven" + File.separator + "maven-site" + File.separator + "1.0" + File.separator
+ "maven-site-1.0-site.xml";
assertEquals( tool.getSiteDescriptorFromRepository( project, getLocalRepo(),
project.getRemoteArtifactRepositories(), Locale.ENGLISH )
.toString(), result );
}
/**
* @throws Exception
*/
public void testGetDecorationModel()
throws Exception
{
SiteTool tool = (SiteTool) lookup( SiteTool.ROLE );
assertNotNull( tool );
SiteToolMavenProjectStub project = new SiteToolMavenProjectStub( "site-tool-test" );
project.setGroupId( "org.apache.maven" );
project.setArtifactId( "maven-site" );
project.setVersion( "1.0" );
String siteDirectory = "src/site";
List<MavenProject> reactorProjects = new ArrayList<MavenProject>();
project.setBasedir( null ); // get it from repo
DecorationModel model =
tool.getDecorationModel( project, reactorProjects, getLocalRepo(), project.getRemoteArtifactRepositories(),
siteDirectory, Locale.getDefault() );
assertNotNull( model );
assertNotNull( model.getBannerLeft() );
assertEquals( "Maven", model.getBannerLeft().getName() );
assertEquals( "images/apache-maven-project-2.png", model.getBannerLeft().getSrc() );
assertEquals( "http://maven.apache.org/", model.getBannerLeft().getHref() );
assertNotNull( model.getBannerRight() );
assertNull( model.getBannerRight().getName() );
assertEquals( "images/maven-logo-2.gif", model.getBannerRight().getSrc() );
assertNull( model.getBannerRight().getHref() );
}
/**
* @throws Exception
*/
public void testGetDefaultDecorationModel()
throws Exception
{
SiteTool tool = (SiteTool) lookup( SiteTool.ROLE );
assertNotNull( tool );
SiteToolMavenProjectStub project = new SiteToolMavenProjectStub( "no-site-test" );
String siteDirectory = "src/site";
List<MavenProject> reactorProjects = new ArrayList<MavenProject>();
DecorationModel model =
tool.getDecorationModel( project, reactorProjects, getLocalRepo(), project.getRemoteArtifactRepositories(),
siteDirectory, Locale.getDefault() );
assertNotNull( model );
}
}