| /* |
| * 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. |
| */ |
| package org.apache.maven.plugins.javadoc; |
| |
| 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"); |
| } |
| } |