blob: eb46b6c2e397bf5b5bf09cae7525a71f5e9d1fb6 [file] [log] [blame]
package org.apache.maven.plugins.javadoc;
/*
* 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.Enumeration;
import java.util.HashSet;
import java.util.Set;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.plugin.testing.AbstractMojoTestCase;
import org.apache.maven.plugin.testing.stubs.MavenProjectStub;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.languages.java.version.JavaVersion;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author <a href="mailto:oching@apache.org">Maria Odea Ching</a>
*/
public class JavadocJarTest
extends AbstractMojoTestCase
{
private JavadocJar lookupMojo( File testPom )
throws Exception
{
JavadocJar mojo = (JavadocJar) lookupMojo( "jar", testPom );
MojoExecution mojoExec = new MojoExecution( new Plugin(), "javadoc", null );
setVariableValueToObject( mojo, "mojo", mojoExec );
MavenProject currentProject = new MavenProjectStub();
currentProject.setGroupId( "GROUPID" );
currentProject.setArtifactId( "ARTIFACTID" );
setVariableValueToObject( mojo, "session", newMavenSession( currentProject ) );
return mojo;
}
/**
* Test when default configuration is provided
*
* @throws Exception if any
*/
public void testDefaultConfig()
throws Exception
{
File testPom =
new File( getBasedir(), "src/test/resources/unit/javadocjar-default/javadocjar-default-plugin-config.xml" );
JavadocJar mojo = lookupMojo( testPom );
mojo.execute();
//check if the javadoc jar file was generated
File generatedFile =
new File( getBasedir(), "target/test/unit/javadocjar-default/target/javadocjar-default-javadoc.jar" );
assertThat( generatedFile ).exists();
Set<String> set = new HashSet<>();
//validate contents of jar file
try ( ZipFile jar = new ZipFile( generatedFile ) )
{
for( Enumeration<? extends ZipEntry> entries = jar.entries(); entries.hasMoreElements(); )
{
ZipEntry entry = entries.nextElement();
set.add( entry.getName() );
}
}
assertTrue( set.contains( "stylesheet.css" ) );
JavaVersion javadocVersion = (JavaVersion) getVariableValueFromObject( mojo, "javadocRuntimeVersion" );
if ( javadocVersion.isBefore( "1.7" ) )
{
assertTrue( set.contains( "resources/inherit.gif" ) );
}
else if ( javadocVersion.isBefore( "1.8" ) )
{
assertTrue( set.contains( "resources/background.gif" ) /* JDK7 */);
}
else
{
// JDK8 has no resources anymore
assertFalse( set.contains( "resources" ) );
}
assertTrue( set.contains( "javadocjar/def/package-use.html" ) );
assertTrue( set.contains( "javadocjar/def/package-tree.html" ) );
assertTrue( set.contains( "javadocjar/def/package-summary.html" ) );
// package frame not generated anymore since Java 11
if ( JavaVersion.JAVA_SPECIFICATION_VERSION.isBefore( "11" ) )
{
assertTrue( set.contains( "javadocjar/def/package-frame.html" ) );
}
assertTrue( set.contains( "javadocjar/def/class-use/AppSample.html" ) );
assertTrue( set.contains( "index.html" ) );
assertTrue( set.contains( "javadocjar/def/App.html" ) );
assertTrue( set.contains( "javadocjar/def/AppSample.html" ) );
assertTrue( set.contains( "javadocjar/def/class-use/App.html" ) );
assertFalse( set.contains( AbstractJavadocMojo.ARGFILE_FILE_NAME ) );
assertFalse( set.contains( AbstractJavadocMojo.FILES_FILE_NAME ) );
assertFalse( set.contains( AbstractJavadocMojo.OPTIONS_FILE_NAME ) );
assertFalse( set.contains( AbstractJavadocMojo.PACKAGES_FILE_NAME ) );
//check if the javadoc files were created
generatedFile =
new File( getBasedir(), "target/test/unit/javadocjar-default/target/site/apidocs/javadocjar/def/App.html" );
assertThat(generatedFile).exists();
generatedFile = new File( getBasedir(),
"target/test/unit/javadocjar-default/target/site/apidocs/javadocjar/def/AppSample.html" );
assertThat( generatedFile ).exists();
}
/**
* Test when the specified destDir parameter has an invalid value
*
* @throws Exception if any
*/
public void testInvalidDestdir()
throws Exception
{
File testPom = new File( getBasedir(),
"src/test/resources/unit/javadocjar-invalid-destdir/javadocjar-invalid-destdir-plugin-config.xml" );
JavadocJar mojo = lookupMojo( testPom );
mojo.execute();
//check if the javadoc jar file was generated
File generatedFile = new File( getBasedir(),
"target/test/unit/javadocjar-invalid-destdir/target/javadocjar-invalid-destdir-javadoc.jar" );
assertThat( generatedFile ).doesNotExist();
}
public void testContinueIfFailOnErrorIsFalse() throws Exception
{
File testPom =
new File( getBasedir(), "src/test/resources/unit/javadocjar-failonerror/javadocjar-failonerror-plugin-config.xml" );
JavadocJar mojo = lookupMojo( testPom );
mojo.execute();
//check if the javadoc jar file was generated
File generatedFile =
new File( getBasedir(), "target/test/unit/javadocjar-failonerror/target/javadocjar-failonerror-javadoc.jar" );
assertThat( generatedFile ).exists();
}
public void testIncludeMavenDescriptorWhenExplicitlyConfigured() throws Exception
{
File testPom =
new File( getBasedir(), "src/test/resources/unit/javadocjar-archive-config/javadocjar-archive-config.xml" );
JavadocJar mojo = lookupMojo( testPom );
mojo.execute();
//check if the javadoc jar file was generated
File generatedFile =
new File( getBasedir(), "target/test/unit/javadocjar-archive-config/target/javadocjar-archive-config-javadoc.jar" );
assertThat( generatedFile ).exists();
//validate contents of jar file
ZipFile jar = new ZipFile( generatedFile );
Set<String> set = new HashSet<>();
for (Enumeration<? extends ZipEntry> entries = jar.entries(); entries.hasMoreElements(); )
{
ZipEntry entry = entries.nextElement();
set.add( entry.getName() );
}
jar.close();
assertThat( set ).contains(
"META-INF/",
"META-INF/maven/",
"META-INF/maven/org.apache.maven.plugins.maven-javadoc-plugin.unit/",
"META-INF/maven/org.apache.maven.plugins.maven-javadoc-plugin.unit/javadocjar-archive-config/",
"META-INF/maven/org.apache.maven.plugins.maven-javadoc-plugin.unit/javadocjar-archive-config/pom.xml",
"META-INF/maven/org.apache.maven.plugins.maven-javadoc-plugin.unit/javadocjar-archive-config/pom.properties" );
}
}