This is an automated email from the ASF dual-hosted git repository.
paulk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new 19b3bd96ff GROOVY-11668: Support specifying the Java source file
version for groovydoc
19b3bd96ff is described below
commit 19b3bd96ff4e8f498789957d1cd06b449588cba1
Author: James Daugherty <[email protected]>
AuthorDate: Sun May 18 00:47:55 2025 -0400
GROOVY-11668: Support specifying the Java source file version for groovydoc
---
.../groovy/org.apache.groovy-asciidoctor.gradle | 1 +
src/bin/groovydoc_completion | 2 +-
.../java/org/codehaus/groovy/ant/Groovydoc.java | 11 +++
.../codehaus/groovy/tools/groovydoc/Main.groovy | 5 +-
.../groovy/tools/groovydoc/GroovyDocTool.java | 54 +++++++++++++-
.../groovy/tools/groovydoc/Main.properties | 4 +-
.../groovy-groovydoc/src/spec/doc/groovydoc.adoc | 6 ++
.../groovy/tools/groovydoc/GroovyDocTest.java | 38 ++++++++++
.../groovy/tools/groovydoc/GroovyDocToolTest.java | 84 ++++++++++++++++++++--
.../test/resources/groovydoc/groovyDocTests.xml | 36 ++++++++++
10 files changed, 228 insertions(+), 13 deletions(-)
diff --git a/build-logic/src/main/groovy/org.apache.groovy-asciidoctor.gradle
b/build-logic/src/main/groovy/org.apache.groovy-asciidoctor.gradle
index 2acbfec035..f37f4bff22 100644
--- a/build-logic/src/main/groovy/org.apache.groovy-asciidoctor.gradle
+++ b/build-logic/src/main/groovy/org.apache.groovy-asciidoctor.gradle
@@ -73,6 +73,7 @@ asciidoctor {
'groovy-patch-version': patch,
'groovy-full-version': groovyVersion,
'groovy-short-version': "${major}.${minor}",
+ 'javaParserVersion': versions.javaParser,
doctype: 'book',
revnumber: groovyVersion,
icons: 'font',
diff --git a/src/bin/groovydoc_completion b/src/bin/groovydoc_completion
index afcdfc3e3d..28d8edf084 100644
--- a/src/bin/groovydoc_completion
+++ b/src/bin/groovydoc_completion
@@ -91,7 +91,7 @@ function _picocli_groovydoc() {
COMMANDS=""
FLAG_OPTS="-h -help --help --version -verbose -quiet --debug -classpath -cp
--classpath -author -noscripts -nomainforscripts -notimestamp -noversionstamp
-public -protected -package -private"
- ARG_OPTS="-d --destdir -overview -charset -fileEncoding -windowtitle
-doctitle -header -footer -exclude -stylesheetfile -sourcepath"
+ ARG_OPTS="-d --destdir -overview -charset -fileEncoding -windowtitle
-doctitle -header -footer -exclude -stylesheetfile -sourcepath -javaversion"
COMPREPLY=( $(compgen -W "${FLAG_OPTS} ${ARG_OPTS} ${COMMANDS}" --
${CURR_WORD}) )
}
diff --git
a/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovydoc.java
b/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovydoc.java
index 865b71ae98..26b08f640c 100644
---
a/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovydoc.java
+++
b/subprojects/groovy-ant/src/main/java/org/codehaus/groovy/ant/Groovydoc.java
@@ -64,6 +64,7 @@ public class Groovydoc extends Task {
private boolean includeNoSourcePackages;
private Boolean noTimestamp;
private Boolean noVersionStamp;
+ private String javaVersion;
private final List<DirSet> packageSets;
private final List<String> sourceFilesToDoc;
private final List<LinkArgument> links = new ArrayList<>();
@@ -144,6 +145,15 @@ public class Groovydoc extends Task {
this.noVersionStamp = noVersionStamp;
}
+ /**
+ * Defaults to a popular Java version defined by the JavaParser library.
Otherwise, override here for a specific expected source file version.
+ *
+ * @param javaVersion the expected source level of any Java files that may
be parsed; i.e. JAVA_11
+ */
+ public void setJavaVersion(String javaVersion) {
+ this.javaVersion = javaVersion;
+ }
+
/**
* If set to false, Scripts will not be processed.
* Defaults to true.
@@ -466,6 +476,7 @@ public class Groovydoc extends Task {
getPackageTemplates(),
getClassTemplates(),
links,
+ javaVersion,
properties
);
diff --git
a/subprojects/groovy-groovydoc/src/main/groovy/org/codehaus/groovy/tools/groovydoc/Main.groovy
b/subprojects/groovy-groovydoc/src/main/groovy/org/codehaus/groovy/tools/groovydoc/Main.groovy
index d0079b1a99..1ccc2c024b 100644
---
a/subprojects/groovy-groovydoc/src/main/groovy/org/codehaus/groovy/tools/groovydoc/Main.groovy
+++
b/subprojects/groovy-groovydoc/src/main/groovy/org/codehaus/groovy/tools/groovydoc/Main.groovy
@@ -51,6 +51,7 @@ class Main {
private static Boolean protectedScope
private static Boolean debug = false
private static String[] sourcepath
+ private static String javaVersion
private static List<String> sourceFilesToDoc
private static List<String> remainingArgs
private static List<String> exclusions
@@ -90,6 +91,7 @@ class Main {
cli.exclude(args:1, argName: 'pkglist',
messages['cli.option.exclude.description'])
cli.stylesheetfile(args:1, argName: 'path',
messages['cli.option.stylesheetfile.description'])
cli.sourcepath(args:1, argName: 'pathlist',
messages['cli.option.sourcepath.description'])
+ cli.javaVersion(args: 1, argName: 'javaVersion',
messages['cli.option.javaVersion.description'])
def options = cli.parse(args)
@@ -125,6 +127,7 @@ class Main {
sourcepath = list.toArray()
}
+ javaVersion = options.javaVersion
author = Boolean.valueOf(options.author) ?: false
noScripts = Boolean.valueOf(options.noscripts) ?: false
noMainForScripts = Boolean.valueOf(options.nomainforscripts) ?: false
@@ -204,7 +207,6 @@ class Main {
String phaseOverride =
SystemUtil.getSystemPropertySafe("groovydoc.phase.override")
if (phaseOverride) properties.put("phaseOverride", phaseOverride)
-
def links = new ArrayList<LinkArgument>();
collectSourceFileNames(remainingArgs, sourcepath, exclusions)
GroovyDocTool htmlTool = new GroovyDocTool(
@@ -214,6 +216,7 @@ class Main {
GroovyDocTemplateInfo.DEFAULT_PACKAGE_TEMPLATES,
GroovyDocTemplateInfo.DEFAULT_CLASS_TEMPLATES,
links,
+ javaVersion,
properties
)
diff --git
a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/GroovyDocTool.java
b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/GroovyDocTool.java
index 62ad50b8c7..30848e900d 100644
---
a/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/GroovyDocTool.java
+++
b/subprojects/groovy-groovydoc/src/main/java/org/codehaus/groovy/tools/groovydoc/GroovyDocTool.java
@@ -18,6 +18,8 @@
*/
package org.codehaus.groovy.tools.groovydoc;
+import com.github.javaparser.ParserConfiguration;
+import com.github.javaparser.StaticJavaParser;
import org.codehaus.groovy.groovydoc.GroovyRootDoc;
import org.codehaus.groovy.tools.shell.util.Logger;
@@ -26,12 +28,15 @@ import java.io.IOException;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.List;
+import java.util.Optional;
import java.util.Properties;
+import java.util.function.Predicate;
public class GroovyDocTool {
private final Logger log = Logger.create(GroovyDocTool.class);
private final GroovyRootDocBuilder rootDocBuilder;
private final GroovyDocTemplateEngine templateEngine;
+ private final ParserConfiguration.LanguageLevel javaLanguageLevel;
protected Properties properties;
@@ -45,11 +50,24 @@ public class GroovyDocTool {
}
public GroovyDocTool(ResourceManager resourceManager, String[]
sourcepaths, String classTemplate) {
- this(resourceManager, sourcepaths, new String[]{}, new String[]{}, new
String[]{classTemplate}, new ArrayList<LinkArgument>(), new Properties());
+ this(resourceManager, sourcepaths, new String[]{}, new String[]{}, new
String[]{classTemplate}, new ArrayList<LinkArgument>(), null, new Properties());
}
- public GroovyDocTool(ResourceManager resourceManager, String[]
sourcepaths, String[] docTemplates, String[] packageTemplates, String[]
classTemplates, List<LinkArgument> links, Properties properties) {
+ /**
+ * Constructs a GroovyDocTool instance with the specified parameters.
+ *
+ * @param resourceManager the resource manager for handling resources, or
null if not required
+ * @param sourcepaths the paths to the source files to be processed
+ * @param docTemplates the templates for generating documentation
+ * @param packageTemplates the templates for generating package-level
documentation
+ * @param classTemplates the templates for generating class-level
documentation
+ * @param links a list of link arguments for external references
+ * @param javaVersion the Java version to be used for parsing and
processing Java source files
+ * @param properties additional properties to be used when
generating the groovydoc
+ */
+ public GroovyDocTool(ResourceManager resourceManager, String[]
sourcepaths, String[] docTemplates, String[] packageTemplates, String[]
classTemplates, List<LinkArgument> links, String javaVersion, Properties
properties) {
rootDocBuilder = new GroovyRootDocBuilder(sourcepaths, links,
properties);
+ javaLanguageLevel = calculateLanguageLevel(javaVersion);
String defaultCharset = Charset.defaultCharset().name();
@@ -71,12 +89,42 @@ public class GroovyDocTool {
}
}
+ private ParserConfiguration.LanguageLevel calculateLanguageLevel(String
javaVersion) {
+ String version = Optional.ofNullable(javaVersion)
+ .map(String::trim)
+ .map(s -> s.toUpperCase())
+ .filter(s -> !s.isEmpty())
+ .orElse(null);
+
+ if (version == null) {
+ return null;
+ }
+
+ try {
+ return ParserConfiguration.LanguageLevel.valueOf(version);
+ } catch (IllegalArgumentException e) {
+ throw new IllegalArgumentException("Unsupported Java Version: " +
javaVersion);
+ }
+ }
+
public void add(List<String> filenames) throws IOException {
if (templateEngine != null) {
// only print out if we are being used for template generation
log.debug("Loading source files for " + filenames);
}
- rootDocBuilder.buildTree(filenames);
+
+ ParserConfiguration.LanguageLevel previousLanguageLevel =
StaticJavaParser.getParserConfiguration().getLanguageLevel();
+ try {
+ if(javaLanguageLevel != null) {
+
StaticJavaParser.getParserConfiguration().setLanguageLevel(javaLanguageLevel);
+ }
+ rootDocBuilder.buildTree(filenames);
+ }
+ finally {
+ if(javaLanguageLevel != null) {
+
StaticJavaParser.getParserConfiguration().setLanguageLevel(previousLanguageLevel);
+ }
+ }
}
public GroovyRootDoc getRootDoc() {
diff --git
a/subprojects/groovy-groovydoc/src/main/resources/org/codehaus/groovy/tools/groovydoc/Main.properties
b/subprojects/groovy-groovydoc/src/main/resources/org/codehaus/groovy/tools/groovydoc/Main.properties
index e3dcdc8053..bcbb6a5ffe 100644
---
a/subprojects/groovy-groovydoc/src/main/resources/org/codehaus/groovy/tools/groovydoc/Main.properties
+++
b/subprojects/groovy-groovydoc/src/main/resources/org/codehaus/groovy/tools/groovydoc/Main.properties
@@ -76,4 +76,6 @@ cli.option.sourcepath.description=Specify where to find
source files (dirs separ
cli.option.exclude.description=Specify a list of packages to exclude
(separated by colons for all operating systems)
-cli.info.version=@|green GroovyDoc|@ {0}
\ No newline at end of file
+cli.option.javaVersion.description=Specify the Java Version for parsed java
files (i.e. JAVA_11)
+
+cli.info.version=@|green GroovyDoc|@ {0}
diff --git a/subprojects/groovy-groovydoc/src/spec/doc/groovydoc.adoc
b/subprojects/groovy-groovydoc/src/spec/doc/groovydoc.adoc
index ca44a81cfb..aaddfe293e 100644
--- a/subprojects/groovy-groovydoc/src/spec/doc/groovydoc.adoc
+++ b/subprojects/groovy-groovydoc/src/spec/doc/groovydoc.adoc
@@ -70,8 +70,13 @@ separated by platform path separator)
|-verbose| |Enable verbose output
| |--version|Display the version
|-windowtitle <text>| |Browser window title for the documentation
+|-javaversion <version> | | The version of the Java source files
|=======================================================================
+=== Java Versions
+
+The supported Java Versions for `groovydoc` are defined by the JavaParser
library's
link:https://www.javadoc.io/doc/com.github.javaparser/javaparser-core/{javaParserVersion}/com/github/javaparser/ParserConfiguration.LanguageLevel.html[LanguageLevel]
class.
+
[[Groovydoc-Ant]]
== The groovydoc Ant task
@@ -110,6 +115,7 @@ wildcard). |No
|overview |Read overview documentation from HTML file. |No
|private |Show all classes and members (i.e. including private ones) if
set to ``true''. |No
+|javaversion |The version of the Java source files. |No
|=======================================================================
[[ThegroovydocAnttask-groovydocNestedElements]]
diff --git
a/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/GroovyDocTest.java
b/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/GroovyDocTest.java
index cf76cdbe20..d8343367d3 100644
---
a/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/GroovyDocTest.java
+++
b/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/GroovyDocTest.java
@@ -19,6 +19,7 @@
package org.codehaus.groovy.tools.groovydoc;
import groovy.util.CharsetToolkit;
+import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.BuildFileRule;
import org.codehaus.groovy.runtime.ResourceGroovyMethods;
import org.junit.After;
@@ -84,6 +85,43 @@ public class GroovyDocTest {
assertTrue("\"This is a custom class template.\" not in: " + lines,
lines.contains("This is a custom class template."));
}
+ @Test
+ public void testSupportedJavadocVersion() throws Exception {
+ rule.executeTarget("supportedGroovyDocJava");
+
+ final File testfilesPackageDir = new File(tmpDir,
"org/codehaus/groovy/tools/groovydoc/testfiles/generics");
+ final String[] list = testfilesPackageDir.list((file, name) ->
name.equals("Java.html"));
+
+ assertNotNull("Dir not found: " +
testfilesPackageDir.getAbsolutePath(), list);
+ assertEquals(1, list.length);
+ File documentedClass = new File(testfilesPackageDir, list[0]);
+ assertTrue("Java.html not found: " +
documentedClass.getAbsolutePath(), documentedClass.exists());
+
+ List<String> lines = ResourceGroovyMethods.readLines(documentedClass);
+ assertTrue("\"<title>Java</title>\" not in: " + lines,
lines.contains("<title>Java</title>"));
+ }
+
+ @Test
+ public void testUnsupportedJavadocVersion() throws Exception {
+ rule.executeTarget("unsupportedGroovyDocJava");
+
+ final File testfilesPackageDir = new File(tmpDir,
"org/codehaus/groovy/tools/groovydoc/testfiles/generics");
+ final String[] list = testfilesPackageDir.list((file, name) ->
name.equals("Java.html"));
+
+ assertNotNull("Dir not found: " +
testfilesPackageDir.getAbsolutePath(), list);
+ assertEquals("Files unexpectedly found when not expecting to parse",0,
list.length);
+ }
+
+ @Test
+ public void testInvalidJavaVersion() throws Exception {
+ try {
+ rule.executeTarget("invalidJavaVersion");
+ }
+ catch(BuildException e) {
+ assertEquals("java.lang.IllegalArgumentException: Unsupported Java
Version: DNE", e.getMessage());
+ }
+ }
+
@Test
public void testFileEncoding() throws Exception {
rule.executeTarget("testFileEncoding");
diff --git
a/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/GroovyDocToolTest.java
b/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/GroovyDocToolTest.java
index a01c60b75c..b053c1b086 100644
---
a/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/GroovyDocToolTest.java
+++
b/subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/GroovyDocToolTest.java
@@ -18,6 +18,8 @@
*/
package org.codehaus.groovy.tools.groovydoc;
+import com.github.javaparser.ParserConfiguration;
+import com.github.javaparser.StaticJavaParser;
import groovy.test.GroovyTestCase;
import org.codehaus.groovy.groovydoc.GroovyClassDoc;
import org.codehaus.groovy.groovydoc.GroovyMethodDoc;
@@ -25,6 +27,8 @@ import org.codehaus.groovy.groovydoc.GroovyRootDoc;
import org.codehaus.groovy.runtime.StringGroovyMethods;
import
org.codehaus.groovy.tools.groovydoc.gstringTemplates.GroovyDocTemplateInfo;
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Arrays;
@@ -55,7 +59,11 @@ public class GroovyDocToolTest extends GroovyTestCase {
link.setPackages("java.,org.xml.,javax.,org.xml.");
links.add(link);
- htmlTool = makeHtmltool(links, new Properties());
+ htmlTool = makeHtmltool(links, null, new Properties());
+ }
+
+ public void tearDown() {
+ StaticJavaParser.getParserConfiguration().setLanguageLevel(null);
}
private GroovyDocTool makeXmlTool(ArrayList<LinkArgument> links,
Properties props) {
@@ -70,11 +78,12 @@ public class GroovyDocToolTest extends GroovyTestCase {
new String[]{TEMPLATES_DIR +
"/packageLevel/packageDocStructuredData.xml"},
new String[]{TEMPLATES_DIR +
"/classLevel/classDocStructuredData.xml"},
links,
+ null,
props
);
}
- private GroovyDocTool makeHtmltool(ArrayList<LinkArgument> links,
Properties props) {
+ private GroovyDocTool makeHtmltool(ArrayList<LinkArgument> links, String
javaVersion, Properties props) {
return new GroovyDocTool(
new FileSystemResourceManager("src/main/resources"), //
template storage
new String[] {"src/test/groovy", "../../src/test/groovy"}, //
source file dirs
@@ -82,6 +91,7 @@ public class GroovyDocToolTest extends GroovyTestCase {
GroovyDocTemplateInfo.DEFAULT_PACKAGE_TEMPLATES,
GroovyDocTemplateInfo.DEFAULT_CLASS_TEMPLATES,
links,
+ javaVersion,
props
);
}
@@ -435,7 +445,7 @@ public class GroovyDocToolTest extends GroovyTestCase {
}
private void testPropertiesFromGetterSetter(String fileName, String
assertMessage,String expected,boolean isTrue) throws Exception {
- htmlTool = makeHtmltool(new ArrayList<>(), new Properties());
+ htmlTool = makeHtmltool(new ArrayList<>(), null, new Properties());
List<String> srcList = new ArrayList<>();
String base = "org/codehaus/groovy/tools/groovydoc/testfiles/";
srcList.add(base + fileName + ".groovy");
@@ -450,7 +460,7 @@ public class GroovyDocToolTest extends GroovyTestCase {
}
private void testVisibility(Properties props, boolean a, boolean b,
boolean c, boolean d) throws Exception {
- htmlTool = makeHtmltool(new ArrayList<>(), props);
+ htmlTool = makeHtmltool(new ArrayList<>(), null, props);
List<String> srcList = new ArrayList<>();
String base =
"org/codehaus/groovy/tools/groovydoc/testfiles/ExampleVisibility";
srcList.add(base + "G.groovy");
@@ -531,6 +541,7 @@ public class GroovyDocToolTest extends GroovyTestCase {
new String[0],
new String[0],
new ArrayList<>(),
+ null,
props);
assertEquals("'fileEncoding' falls back to 'charset' if not provided",
expectedCharset, tool.properties.getProperty("fileEncoding"));
@@ -549,6 +560,7 @@ public class GroovyDocToolTest extends GroovyTestCase {
new String[0],
new String[0],
new ArrayList<>(),
+ null,
props);
assertEquals("'charset' falls back to 'fileEncoding' if not provided",
expectedCharset, tool.properties.getProperty("charset"));
@@ -565,6 +577,7 @@ public class GroovyDocToolTest extends GroovyTestCase {
new String[0],
new String[0],
new ArrayList<>(),
+ null,
new Properties());
assertEquals("'charset' falls back to the default charset",
expectedCharset, tool.properties.getProperty("charset"));
@@ -1024,6 +1037,63 @@ public class GroovyDocToolTest extends GroovyTestCase {
assertTrue("The Groovy derived class declaration header should match
in:\n" + groovyDerivedClass, derivedClass.matcher(groovyDerivedClass).find());
}
+ public void testLanguageLevelNotSupported() throws Exception {
+ htmlTool = makeHtmltool(new ArrayList<LinkArgument>(),
ParserConfiguration.LanguageLevel.JAVA_1_4.name(), new Properties());
+
+ final String base =
"org/codehaus/groovy/tools/groovydoc/testfiles/generics";
+
+ PrintStream originalSystemErr = System.err;
+ ByteArrayOutputStream systemErr = new ByteArrayOutputStream();
+ try {
+ System.setErr(new PrintStream(systemErr));
+ htmlTool.add(Arrays.asList(
+ base + "/Java.java"
+ ));
+ }
+ finally {
+ System.setErr(originalSystemErr);
+ }
+ final String errorMessage = systemErr.toString();
+ System.err.println(errorMessage);
+
+ final MockOutputTool output = new MockOutputTool();
+ htmlTool.renderToOutput(output, MOCK_DIR);
+
+ final String javadoc = output.getText(MOCK_DIR + "/" + base +
"/Java.html");
+ assertNull("Javadoc should be null since language level is not
supported", javadoc);
+
+ assertTrue("Expected to find Java file in error message",
errorMessage.contains("org/codehaus/groovy/tools/groovydoc/testfiles/generics/Java.java"));
+ assertTrue("Expected to find language level not supported",
errorMessage.contains("Pay attention that this feature is supported starting
from"));
+ }
+
+ public void testLanguageLevelSupported() throws Exception {
+ htmlTool = makeHtmltool(new ArrayList<LinkArgument>(),
ParserConfiguration.LanguageLevel.JAVA_5.name(), new Properties());
+
+ final String base =
"org/codehaus/groovy/tools/groovydoc/testfiles/generics";
+
+ PrintStream originalSystemErr = System.err;
+ ByteArrayOutputStream systemErr = new ByteArrayOutputStream();
+ try {
+ System.setErr(new PrintStream(systemErr));
+ htmlTool.add(Arrays.asList(
+ base + "/Java.java"
+ ));
+ }
+ finally {
+ System.setErr(originalSystemErr);
+ }
+ final String errorMessage = systemErr.toString();
+ System.err.println(errorMessage);
+
+ final MockOutputTool output = new MockOutputTool();
+ htmlTool.renderToOutput(output, MOCK_DIR);
+
+ final String javadoc = output.getText(MOCK_DIR + "/" + base +
"/Java.html");
+ assertNotNull("Javadoc should not be null since language level is
supported", javadoc);
+
+ assertTrue("Expected no error output", errorMessage.isEmpty());
+ }
+
public void testJavaGenericsTitle() throws Exception {
final String base =
"org/codehaus/groovy/tools/groovydoc/testfiles/generics";
htmlTool.add(List.of(base + "/Java.java"));
@@ -1154,7 +1224,7 @@ public class GroovyDocToolTest extends GroovyTestCase {
final String base =
"org/codehaus/groovy/tools/groovydoc/testfiles/anno";
Properties props = new Properties();
props.put("phaseOverride", "7");
- htmlTool = makeHtmltool(new ArrayList<>(), props);
+ htmlTool = makeHtmltool(new ArrayList<>(), null, props);
htmlTool.add(Arrays.asList(
base + "/Groovy.groovy",
base + "/Java.java"
@@ -1422,7 +1492,7 @@ public class GroovyDocToolTest extends GroovyTestCase {
// -noscript case
Properties props = new Properties();
props.put("processScripts", "false");
- htmlTool = makeHtmltool(new ArrayList<>(), props);
+ htmlTool = makeHtmltool(new ArrayList<>(), null, props);
htmlTool.add(srcList);
output = new MockOutputTool();
htmlTool.renderToOutput(output, MOCK_DIR);
@@ -1432,7 +1502,7 @@ public class GroovyDocToolTest extends GroovyTestCase {
// -nomainforscript case
props = new Properties();
props.put("includeMainForScripts", "false");
- htmlTool = makeHtmltool(new ArrayList<>(), props);
+ htmlTool = makeHtmltool(new ArrayList<>(), null, props);
htmlTool.add(srcList);
output = new MockOutputTool();
htmlTool.renderToOutput(output, MOCK_DIR);
diff --git
a/subprojects/groovy-groovydoc/src/test/resources/groovydoc/groovyDocTests.xml
b/subprojects/groovy-groovydoc/src/test/resources/groovydoc/groovyDocTests.xml
index 097a9816d8..8bdff4a7b0 100644
---
a/subprojects/groovy-groovydoc/src/test/resources/groovydoc/groovyDocTests.xml
+++
b/subprojects/groovy-groovydoc/src/test/resources/groovydoc/groovyDocTests.xml
@@ -43,6 +43,42 @@
</groovydoc>
</target>
+ <target name="unsupportedGroovyDocJava">
+ <groovydoc destdir="${tmpdir}" sourcepath="${test}"
+
packagenames="org/codehaus/groovy/tools/groovydoc/testfiles/**.*"
+ use="true" windowtitle="GroovyDoc" private="false"
javaVersion="JAVA_1_4">
+ <link packages="java.,org.groovy.xml.,javax.,org.groovy.w3c."
href="http://docs.oracle.com/javase/7/docs/api/"/>
+ <link packages="org.apache.tools.ant."
href="http://docs.groovy-lang.org/docs/ant/api/"/>
+ <link packages="org.junit.,junit.framework."
href="http://junit.org/junit4/javadoc/latest/"/>
+ <link packages="groovy.,org.codehaus.groovy."
href="http://groovy.codehaus.org/api/"/>
+ <link packages="org.codehaus.gmaven."
href="http://groovy.github.io/gmaven/apidocs/"/>
+ </groovydoc>
+ </target>
+
+ <target name="supportedGroovyDocJava">
+ <groovydoc destdir="${tmpdir}" sourcepath="${test}"
+
packagenames="org/codehaus/groovy/tools/groovydoc/testfiles/**.*"
+ use="true" windowtitle="GroovyDoc" private="false"
javaVersion="JAVA_5">
+ <link packages="java.,org.groovy.xml.,javax.,org.groovy.w3c."
href="http://docs.oracle.com/javase/7/docs/api/"/>
+ <link packages="org.apache.tools.ant."
href="http://docs.groovy-lang.org/docs/ant/api/"/>
+ <link packages="org.junit.,junit.framework."
href="http://junit.org/junit4/javadoc/latest/"/>
+ <link packages="groovy.,org.codehaus.groovy."
href="http://groovy.codehaus.org/api/"/>
+ <link packages="org.codehaus.gmaven."
href="http://groovy.github.io/gmaven/apidocs/"/>
+ </groovydoc>
+ </target>
+
+ <target name="invalidJavaVersion">
+ <groovydoc destdir="${tmpdir}" sourcepath="${test}"
+
packagenames="org/codehaus/groovy/tools/groovydoc/testfiles/**.*"
+ use="true" windowtitle="GroovyDoc" private="false"
javaVersion="DNE">
+ <link packages="java.,org.groovy.xml.,javax.,org.groovy.w3c."
href="http://docs.oracle.com/javase/7/docs/api/"/>
+ <link packages="org.apache.tools.ant."
href="http://docs.groovy-lang.org/docs/ant/api/"/>
+ <link packages="org.junit.,junit.framework."
href="http://junit.org/junit4/javadoc/latest/"/>
+ <link packages="groovy.,org.codehaus.groovy."
href="http://groovy.codehaus.org/api/"/>
+ <link packages="org.codehaus.gmaven."
href="http://groovy.github.io/gmaven/apidocs/"/>
+ </groovydoc>
+ </target>
+
<target name="testFileEncoding">
<groovydoc
destdir="${tmpdir}"