Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ITs for Java 17 and 21 (#126) #133

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 4 additions & 1 deletion .github/workflows/ci-development-branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,16 @@ on:
jobs:
build:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-latest
java-version:
- 11
- 17
- 21
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
Expand All @@ -38,4 +41,4 @@ jobs:
cache: 'maven'
cache-dependency-path: 'pom.xml'
- name: Build & Test
run: mvn -B clean verify
run: mvn -B clean verify -Prun-its
1 change: 1 addition & 0 deletions .github/workflows/ci-maintenance-branch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ on:
jobs:
build:
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
Expand Down
30 changes: 28 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,8 @@
<currentYear>${maven.build.timestamp}</currentYear>
<maven.build.timestamp.format>yyyy</maven.build.timestamp.format>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<integration-tests.path>src/it/java-11</integration-tests.path>
<expected.java>11</expected.java>
</properties>

<dependencies>
Expand Down Expand Up @@ -230,7 +232,7 @@
<include>src/**/*.java</include>
</includes>
<excludes>
<exclude>src/it/**/*.*</exclude>
<exclude>${integration-tests.path}/**/*.*</exclude>
</excludes>
<properties>
<startYear>2013</startYear>
Expand All @@ -245,6 +247,27 @@
</build>

<profiles>
<!-- Both use the same java-17 folder -->
<profile>
<id>java-17</id>
<activation>
<jdk>17</jdk>
</activation>
<properties>
<integration-tests.path>src/it/java-17</integration-tests.path>
<expected.java>17</expected.java>
</properties>
</profile>
<profile>
<id>java-21</id>
<activation>
<jdk>21</jdk>
</activation>
<properties>
<integration-tests.path>src/it/java-17</integration-tests.path>
<expected.java>21</expected.java>
</properties>
</profile>
<profile>
<!--
To release, define environment variables:
Expand Down Expand Up @@ -301,7 +324,7 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-invoker-plugin</artifactId>
<configuration>
<projectsDirectory>src/it</projectsDirectory>
<projectsDirectory>${integration-tests.path}</projectsDirectory>
<cloneProjectsTo>${project.build.directory}/it</cloneProjectsTo>
<pomIncludes>
<pomInclude>*/pom.xml</pomInclude>
Expand All @@ -316,6 +339,9 @@
<goal>clean</goal>
<goal>process-sources</goal>
</goals>
<scriptVariables>
<expected_java>${expected.java}</expected_java>
</scriptVariables>
</configuration>
<executions>
<execution>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoclet</artifactId>
<version>@project.version@</version>
<classifier>shaded</classifier>
</docletArtifact>
</docletArtifacts>
<overview>src/main/java/overview.adoc</overview>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import java.nio.file.Files
import java.nio.file.Path

String javaVersion = System.getProperty('java.version').split("\\.")[0]
if (javaVersion != expected_java) {
throw new Exception("Invalid Java version. Expected ${expected_java}, found $javaVersion")
}

def javadocExpectedPath = Path.of((String) basedir).resolve('target/site/apidocs')
def expectedJavadoc = javadocExpectedPath.resolve('example/StringUtils.html')
Expand All @@ -23,7 +27,7 @@ def expectMethodArgument2 = Html.dd(Html.code('needle') + " - it stings")
assertStringContains(javadocContent, expectMethodArgument1)
assertStringContains(javadocContent, expectMethodArgument2)

def expectMethodReturn = Html.dt(Html.span("Returns:", "returnLabel")) + "\n" + Html.dd('true if lucky')
def expectMethodReturn = Html.dt(Html.span("Returns:", "returnLabel")) + System.lineSeparator() + Html.dd('true if lucky')

assertStringContains(javadocContent, expectMethodReturn)

Expand Down
1 change: 1 addition & 0 deletions src/it/java-17/class-comments/invoker.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
invoker.goals=clean javadoc:javadoc
49 changes: 49 additions & 0 deletions src/it/java-17/class-comments/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.asciidoctor</groupId>
<artifactId>test</artifactId>
<version>1.0.0-SNAPSHOT</version>
<description>Integration Test: generate Javadoc for class and method</description>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId>
<version>3.6.3</version>
<configuration>
<source>17</source>
<additionalJOptions>
<additionalJOption>-J--add-exports=jdk.javadoc/jdk.javadoc.internal.tool=ALL-UNNAMED</additionalJOption>
<additionalJOption>-J--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</additionalJOption>
<additionalJOption>-J--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED</additionalJOption>
<additionalJOption>-J--add-exports=jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED</additionalJOption>
<additionalJOption>-J--add-opens=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED</additionalJOption>
<additionalJOption>-J--add-opens=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED</additionalJOption>
<additionalJOption>-Xdoclint:all,-html,-accessibility</additionalJOption>
</additionalJOptions>
<doclet>org.asciidoctor.asciidoclet.Asciidoclet</doclet>
<docletArtifacts>
<docletArtifact>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoclet</artifactId>
<version>@project.version@</version>
</docletArtifact>
</docletArtifacts>
<overview>src/main/java/overview.adoc</overview>
<additionalOptions>
--base-dir ${project.basedir}
--attribute "project_name=${project.name}"
--attribute "project_description=${project.description}"
</additionalOptions>
</configuration>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package example;

/**
* Class comment for "{project_description}".
*/
public class StringUtils {

/**
* This is a method comment.
*
* @param haystack the haystack
* @param needle it stings
* @return true if lucky
*/
public boolean contains(String haystack, String needle) {
return haystack.contains(needle);
}
}
64 changes: 64 additions & 0 deletions src/it/java-17/class-comments/validate.groovy
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import java.nio.file.Files
import java.nio.file.Path

String javaVersion = System.getProperty('java.version').split("\\.")[0]
if (javaVersion != expected_java) {
throw new Exception("Invalid Java version. Expected ${expected_java}, found $javaVersion")
}

def javadocExpectedPath = Path.of((String) basedir).resolve('target/site/apidocs')
def expectedJavadoc = javadocExpectedPath.resolve('example/StringUtils.html')

if (Files.list(javadocExpectedPath).count() == 0) {
throw new Exception("${javadocExpectedPath.toFile().getAbsolutePath()} path cannot me empty")
}

def javadocContent = Files.readString(expectedJavadoc)

def expectClassDescription = Html.div(Html.p('Class comment for "Integration Test: generate Javadoc for class and method".'), 'block')
def expectMethodDescription = Html.div(Html.p('This is a method comment.'), 'block')

assertStringContains(javadocContent, expectClassDescription)
assertStringContains(javadocContent, expectMethodDescription)

def expectMethodArgument1 = Html.dd(Html.code('haystack') + " - the haystack")
def expectMethodArgument2 = Html.dd(Html.code('needle') + " - it stings")

assertStringContains(javadocContent, expectMethodArgument1)
assertStringContains(javadocContent, expectMethodArgument2)

def expectMethodReturn = Html.dt("Returns:") + System.lineSeparator() + Html.dd('true if lucky')

assertStringContains(javadocContent, expectMethodReturn)


void assertStringContains(String value, String expected) {
if (!value.contains(expected)) {
throw new Exception("'$expected' expected to be present")
}
}

class Html {

static String div(String text, String classname) {
return "<div class=\"${classname}\">${text}</div>"
}

static String p(String text) {
return "<p>${text}</p>"
}

static String code(String text) {
return "<code>${text}</code>"
}

static String dd(String text) {
return "<dd>${text}</dd>"
}

static String dt(String text) {
return "<dt>${text}</dt>"
}
}

return true