You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opennlp.apache.org by ma...@apache.org on 2023/05/24 15:47:40 UTC
[opennlp] 01/01: OPENNLP-1496 Migrate OpenNLP towards JDK 17
This is an automated email from the ASF dual-hosted git repository.
mawiesne pushed a commit to branch OPENNLP-1496_Migrate_OpenNLP_towards_JDK_17
in repository https://gitbox.apache.org/repos/asf/opennlp.git
commit 7232a2ccbcbfe45900e3cde51338627950693319
Author: Martin Wiesner <ma...@hs-heilbronn.de>
AuthorDate: Wed May 24 17:47:29 2023 +0200
OPENNLP-1496 Migrate OpenNLP towards JDK 17
- switches Java version and compiler target '17'
- adapts CLITest to use lightweight JUnit5 extension and related annotations thereby dropping deprecated custom 'NoExitSecurityManager'
- adapts github workflows config files
---
.github/workflows/maven.yml | 2 +-
.github/workflows/publish-snapshots.yml | 2 +-
opennlp-tools/pom.xml | 8 ++
.../test/java/opennlp/tools/cmdline/CLITest.java | 91 +++-------------------
pom.xml | 2 +-
5 files changed, 22 insertions(+), 83 deletions(-)
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 56286d8b..5ccec404 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -24,7 +24,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
- java: [ 11, 17, 19 ]
+ java: [ 17, 19 ]
experimental: [false]
# include:
# - java: 18-ea
diff --git a/.github/workflows/publish-snapshots.yml b/.github/workflows/publish-snapshots.yml
index a5dd55f2..2c4dd748 100644
--- a/.github/workflows/publish-snapshots.yml
+++ b/.github/workflows/publish-snapshots.yml
@@ -42,7 +42,7 @@ jobs:
uses: actions/setup-java@v3
with:
distribution: adopt
- java-version: 11
+ java-version: 17
- id: extract_version
name: Extract version
shell: bash
diff --git a/opennlp-tools/pom.xml b/opennlp-tools/pom.xml
index 0f7a19ac..5a70549b 100644
--- a/opennlp-tools/pom.xml
+++ b/opennlp-tools/pom.xml
@@ -76,6 +76,14 @@
<artifactId>slf4j-simple</artifactId>
<scope>test</scope>
</dependency>
+
+ <!-- JUnit5 extension used in CLITest to prevent System.exit(..) calls terminating test runs -->
+ <dependency>
+ <groupId>com.ginsberg</groupId>
+ <artifactId>junit5-system-exit</artifactId>
+ <version>1.1.2</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<build>
diff --git a/opennlp-tools/src/test/java/opennlp/tools/cmdline/CLITest.java b/opennlp-tools/src/test/java/opennlp/tools/cmdline/CLITest.java
index 62860312..b58c82f5 100644
--- a/opennlp-tools/src/test/java/opennlp/tools/cmdline/CLITest.java
+++ b/opennlp-tools/src/test/java/opennlp/tools/cmdline/CLITest.java
@@ -17,105 +17,45 @@
package opennlp.tools.cmdline;
-import java.security.Permission;
-
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeEach;
+import com.ginsberg.junit.exit.ExpectSystemExitWithStatus;
import org.junit.jupiter.api.Test;
public class CLITest {
- private static class ExitException extends SecurityException {
-
- private static final long serialVersionUID = 6144359372794123631L;
-
- private final int status;
-
- public ExitException(int status) {
- this.status = status;
- }
-
- int status() {
- return status;
- }
- }
-
- /**
- * A <code>SecurityManager</code> which prevents System.exit anything else is allowed.
- */
- private static class NoExitSecurityManager extends SecurityManager {
-
- @Override
- public void checkPermission(Permission perm) {
- }
-
- @Override
- public void checkPermission(Permission perm, Object context) {
- }
-
- @Override
- public void checkExit(int status) {
- super.checkExit(status);
-
- throw new ExitException(status);
- }
- }
-
- private final SecurityManager originalSecurityManager = System.getSecurityManager();
-
- @BeforeEach
- void installNoExitSecurityManager() {
- System.setSecurityManager(new NoExitSecurityManager());
- }
-
/**
* Ensure the main method does not fail to print help message.
*/
@Test
+ @ExpectSystemExitWithStatus(0)
void testMainHelpMessage() {
-
- try {
- CLI.main(new String[] {});
- } catch (ExitException e) {
- Assertions.assertEquals(0, e.status());
- }
+ CLI.main(new String[] {});
}
/**
* Ensure the main method prints error and returns 1.
*/
@Test
+ @ExpectSystemExitWithStatus(1)
void testUnknownToolMessage() {
- try {
- CLI.main(new String[] {"unknown name"});
- } catch (ExitException e) {
- Assertions.assertEquals(1, e.status());
- }
+ CLI.main(new String[] {"unknown name"});
}
/**
* Ensure the tool checks the parameter and returns 1.
*/
@Test
+ @ExpectSystemExitWithStatus(1)
void testToolParameterMessage() {
- try {
- CLI.main(new String[] {"DoccatTrainer", "-param", "value"});
- } catch (ExitException e) {
- Assertions.assertEquals(1, e.status());
- }
+ CLI.main(new String[] {"DoccatTrainer", "-param", "value"});
}
/**
* Ensure the main method prints error and returns -1
*/
@Test
+ @ExpectSystemExitWithStatus(-1)
void testUnknownFileMessage() {
- try {
- CLI.main(new String[] {"Doccat", "unknown.model"});
- } catch (ExitException e) {
- Assertions.assertEquals(-1, e.status());
- }
+ CLI.main(new String[] {"Doccat", "unknown.model"});
}
@@ -123,20 +63,11 @@ public class CLITest {
* Ensure all tools do not fail printing help message;
*/
@Test
+ @ExpectSystemExitWithStatus(0)
void testHelpMessageOfTools() {
-
for (String toolName : CLI.getToolNames()) {
- try {
- CLI.main(new String[] {toolName, "help"});
- } catch (ExitException e) {
- Assertions.assertEquals(0, e.status());
- }
+ CLI.main(new String[] {toolName, "help"});
}
}
- @AfterEach
- void restoreSecurityManager() {
- System.setSecurityManager(originalSecurityManager);
- }
-
}
diff --git a/pom.xml b/pom.xml
index 828d06a5..9b41ea3e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -164,7 +164,7 @@
<properties>
<!-- Build Properties -->
- <java.version>11</java.version>
+ <java.version>17</java.version>
<maven.version>3.3.9</maven.version>
<commons.io.version>2.11.0</commons.io.version>
<enforcer.plugin.version>3.3.0</enforcer.plugin.version>