[
https://issues.apache.org/jira/browse/GROOVY-11668?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17952676#comment-17952676
]
ASF GitHub Bot commented on GROOVY-11668:
-----------------------------------------
Copilot commented on code in PR #2228:
URL: https://github.com/apache/groovy/pull/2228#discussion_r2096093822
##########
subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/GroovyDocToolTest.java:
##########
@@ -55,7 +59,11 @@ public void setUp() {
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() {
Review Comment:
The tearDown method may not be recognized by the testing framework as
written. Consider annotating it with @After (JUnit 4) or matching the signature
protected void tearDown() so it reliably resets the parser configuration.
```suggestion
protected void tearDown() {
```
##########
subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/GroovyDocTest.java:
##########
@@ -84,6 +85,43 @@ public void testCustomClassTemplate() throws Exception {
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());
Review Comment:
getMessage() returns only the message text without the exception class name.
Update the expected value to "Unsupported Java Version: DNE" or include the
class name in the thrown message.
```suggestion
assertEquals("Unsupported Java Version: DNE", e.getMessage());
```
##########
subprojects/groovy-groovydoc/src/test/groovy/org/codehaus/groovy/tools/groovydoc/GroovyDocToolTest.java:
##########
@@ -1026,6 +1039,63 @@ public void testClassDeclarationHeader() throws
Exception {
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);
Review Comment:
[nitpick] This direct print to System.err during tests may clutter test
output. Consider removing it or using a logger configured at debug level for
cleaner test logs.
```suggestion
LOGGER.fine(errorMessage);
```
> Groovydoc crashes with higher Java language levels
> --------------------------------------------------
>
> Key: GROOVY-11668
> URL: https://issues.apache.org/jira/browse/GROOVY-11668
> Project: Groovy
> Issue Type: Improvement
> Components: GroovyDoc
> Reporter: James Daugherty
> Priority: Critical
>
> Groovydoc supports both groovy & java files. It supports parsing via the
> JavaParser library & the library supports specifying a language level.
> However, groovydoc does not have a way of setting it for the library at this
> time. By default the library defaults to the "popular" language level of
> that release - for the current JavaParser version that is Java 11.
> As projects update to newer language features, it is desirable to continue
> using groovydoc for later Java versions. This change is to add an option to
> groovydoc to specify the language level based on the possible values in the
> enum ParserConfiguration.LanguageLevel from the JavaParser library.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)