blob: 4ad144d090ad11dc737d6a1eaa0eed600caed2c7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2014, 2015 Obeo and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Obeo - initial API and implementation
* Enrico De Fent - test package inclusion/exclusion (see bug 459214)
*******************************************************************************/
package org.eclipse.tycho.extras.docbundle;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.io.File;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import org.apache.maven.model.Dependency;
import org.apache.maven.plugin.testing.SilentLog;
import org.codehaus.plexus.util.cli.Commandline;
import org.eclipse.tycho.core.osgitools.DefaultBundleReader;
import org.junit.Assert;
import org.junit.Test;
public class TestJavadocRunner {
@Test
public void testCommandLine() throws Exception {
JavadocRunner javadocRunner = buildTestRunner();
JavadocOptions options = new JavadocOptions();
options.setJvmOptions(Arrays.asList("-Xmx512m"));
javadocRunner.setOptions(options);
Commandline commandLine = javadocRunner.createCommandLine("/dev/null");
String[] cliArgs = commandLine.getArguments();
Assert.assertEquals(2, cliArgs.length);
Assert.assertEquals("@/dev/null", cliArgs[0]);
Assert.assertEquals("-J-Xmx512m", cliArgs[1]);
}
@Test
public void testOptionsFile() throws Exception {
JavadocRunner javadocRunner = buildTestRunner();
JavadocOptions options = new JavadocOptions();
List<Dependency> docletArifacts = new LinkedList<>();
DocletArtifactsResolver docletResolver = mock(DocletArtifactsResolver.class);
Set<String> docletArtifactsJarList = new LinkedHashSet<>(Arrays.asList("path/to/docletArtifact.jar",
"path/to/otherDocletArtifact.jar"));
when(docletResolver.resolveArtifacts(docletArifacts)).thenReturn(docletArtifactsJarList);
options.setAdditionalArguments(Arrays.asList("-docencoding \"UTF-8\""));
options.setDoclet("foo.bar.MyDoclet");
options.setDocletArtifacts(docletArifacts);
options.setEncoding("ISO8859_1");
javadocRunner.setDocletArtifactsResolver(docletResolver);
javadocRunner.setOptions(options);
javadocRunner.setSourceFolders(Collections.<File> emptySet());
javadocRunner.setClassPath(Arrays.asList("rt.jar"));
javadocRunner.setManifestFiles(Collections.singleton(getTestBundleRoot()));
String optionsFile = javadocRunner.createOptionsFileContent();
AssertOnBuffer aob = new AssertOnBuffer(optionsFile);
aob.assertNextLine("-classpath 'rt.jar'");
aob.assertNextLine("-doclet foo.bar.MyDoclet");
aob.assertNextLine("-docletpath 'path/to/docletArtifact.jar" + File.pathSeparator
+ "path/to/otherDocletArtifact.jar'");
aob.assertNextLine("-encoding ISO8859_1");
aob.assertNextLine("-docencoding \"UTF-8\"");
aob.assertNextLine("com.example.bundle.core");
aob.assertNextLine("com.example.bundle.core.conf");
aob.assertNextLine("com.example.bundle.core.internal");
aob.assertNextLine("com.acme.other.core");
aob.assertNextLine("com.acme.other.core.internal.utils");
aob.assertNextLine("com.acme.other.core.internal.ui");
aob.assertNextLine("nu.xom");
aob.assertNoMoreLines();
}
@Test
public void testOptionsFileExclude() throws Exception {
final JavadocRunner javadocRunner = buildTestRunner();
final JavadocOptions options = new JavadocOptions();
final List<String> excludes = new LinkedList<>();
excludes.add("*.internal");
excludes.add("*.internal.*");
excludes.add("*.xom");
options.setExcludes(excludes);
javadocRunner.setOptions(options);
final Set<File> manifests = new HashSet<>();
File file = getTestBundleRoot();
manifests.add(file);
javadocRunner.setManifestFiles(manifests);
String optionsFile = javadocRunner.createOptionsFileContent();
AssertOnBuffer aob = new AssertOnBuffer(optionsFile);
aob.assertNextLine("com.example.bundle.core");
aob.assertNextLine("com.example.bundle.core.conf");
aob.assertNextLine("com.acme.other.core");
aob.assertNoMoreLines();
}
@Test
public void testOptionsFileInclude() throws Exception {
final JavadocRunner javadocRunner = buildTestRunner();
final JavadocOptions options = new JavadocOptions();
final List<String> includes = new LinkedList<>();
includes.add("com.example.*");
includes.add("nu.xom");
options.setIncludes(includes);
javadocRunner.setOptions(options);
javadocRunner.setManifestFiles(Collections.singleton(getTestBundleRoot()));
String optionsFile = javadocRunner.createOptionsFileContent();
AssertOnBuffer aob = new AssertOnBuffer(optionsFile);
aob.assertNextLine("com.example.bundle.core");
aob.assertNextLine("com.example.bundle.core.conf");
aob.assertNextLine("com.example.bundle.core.internal");
aob.assertNextLine("nu.xom");
aob.assertNoMoreLines();
}
private static final String BUNDLE_ROOT = "bundle";
/**
* Returns the local path of the test bundle.
*/
private File getTestBundleRoot() throws Exception {
return new File(getClass().getResource(BUNDLE_ROOT).toURI());
}
/**
* Returns a minimal JavadocRunner.
*/
private JavadocRunner buildTestRunner() {
final JavadocRunner javadocRunner = new JavadocRunner();
javadocRunner.setDocletArtifactsResolver(mock(DocletArtifactsResolver.class));
javadocRunner.setLog(new SilentLog());
javadocRunner.setBundleReader(new DefaultBundleReader());
return javadocRunner;
}
}