diff --git a/CHANGELOG.md b/CHANGELOG.md index 7ef2885d9..9efa64cef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Changed + +- The line in the error message that shows the version of EqualsVerifier and the JDK, now also indicates whether EqualsVerifier runs on the classpath or the modulepath. + ## [3.16.1] - 2024-04-03 ### Fixed diff --git a/README.md b/README.md index 45d8a9243..d4d81fbdd 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ Here's a description of the modules: | ----------------------------- | --------------------------------------------------------------------- | | docs | project's Jekyll website | | equalsverifier-core | the actual EqualsVerifier code | -| equalsverifier-11 | tests for Java 11 and up | +| equalsverifier-11 | logic for modules, tests for Java 11 and up | | equalsverifier-16 | logic for records, and corresponding tests | | equalsverifier-17 | logic for sealed classes, and corresponding tests | | equalsverifier-21 | tests for record pattern matching | diff --git a/equalsverifier-11/src/main/java/nl/jqno/equalsverifier/internal/reflection/ModuleHelper.java b/equalsverifier-11/src/main/java/nl/jqno/equalsverifier/internal/reflection/ModuleHelper.java new file mode 100644 index 000000000..bcf7e6bfb --- /dev/null +++ b/equalsverifier-11/src/main/java/nl/jqno/equalsverifier/internal/reflection/ModuleHelper.java @@ -0,0 +1,10 @@ +package nl.jqno.equalsverifier.internal.reflection; + +public final class ModuleHelper { + + private ModuleHelper() {} + + public static boolean runsOnModulePath() { + return ModuleLayer.boot().findModule("nl.jqno.equalsverifier").isPresent(); + } +} diff --git a/equalsverifier-aggregator/src/main/resources/assemblies/assembly.xml b/equalsverifier-aggregator/src/main/resources/assemblies/assembly.xml index 919180b20..a313c2ba0 100644 --- a/equalsverifier-aggregator/src/main/resources/assemblies/assembly.xml +++ b/equalsverifier-aggregator/src/main/resources/assemblies/assembly.xml @@ -19,6 +19,22 @@ + + true + + nl.jqno.equalsverifier:equalsverifier-11 + + + META-INF/versions/11 + true + false + + + /META-INF/** + + + + true diff --git a/equalsverifier-core/src/main/java/nl/jqno/equalsverifier/internal/reflection/ModuleHelper.java b/equalsverifier-core/src/main/java/nl/jqno/equalsverifier/internal/reflection/ModuleHelper.java new file mode 100644 index 000000000..b7f05028b --- /dev/null +++ b/equalsverifier-core/src/main/java/nl/jqno/equalsverifier/internal/reflection/ModuleHelper.java @@ -0,0 +1,14 @@ +package nl.jqno.equalsverifier.internal.reflection; + +/** + * Note: this is a generic implementation for a multi-release jar class. + * See equalsverifier-11 submodule. + */ +public final class ModuleHelper { + + private ModuleHelper() {} + + public static boolean runsOnModulePath() { + return false; + } +} diff --git a/equalsverifier-core/src/main/java/nl/jqno/equalsverifier/internal/util/ErrorMessage.java b/equalsverifier-core/src/main/java/nl/jqno/equalsverifier/internal/util/ErrorMessage.java index a319c46d7..c0abe1cd0 100644 --- a/equalsverifier-core/src/main/java/nl/jqno/equalsverifier/internal/util/ErrorMessage.java +++ b/equalsverifier-core/src/main/java/nl/jqno/equalsverifier/internal/util/ErrorMessage.java @@ -1,5 +1,7 @@ package nl.jqno.equalsverifier.internal.util; +import nl.jqno.equalsverifier.internal.reflection.ModuleHelper; + public final class ErrorMessage { private ErrorMessage() {} @@ -10,10 +12,11 @@ private ErrorMessage() {} public static String suffix() { return Formatter .of( - "%%\n(EqualsVerifier %%, JDK %% on %%)", + "%%\n(EqualsVerifier %%, JDK %% running on %%, on %%)", WEBSITE_URL, ErrorMessage.class.getPackage().getImplementationVersion(), System.getProperty("java.version"), + ModuleHelper.runsOnModulePath() ? "modulepath" : "classpath", System.getProperty("os.name") ) .format(); diff --git a/equalsverifier-release-main/pom.xml b/equalsverifier-release-main/pom.xml index 1d4e887e0..51b02f6b9 100644 --- a/equalsverifier-release-main/pom.xml +++ b/equalsverifier-release-main/pom.xml @@ -167,6 +167,13 @@ provided true + + nl.jqno.equalsverifier + equalsverifier-11 + ${project.version} + provided + true + nl.jqno.equalsverifier equalsverifier-16 diff --git a/equalsverifier-release-nodep/pom.xml b/equalsverifier-release-nodep/pom.xml index f2e85366f..22d01d65e 100644 --- a/equalsverifier-release-nodep/pom.xml +++ b/equalsverifier-release-nodep/pom.xml @@ -166,6 +166,12 @@ ${project.version} provided + + nl.jqno.equalsverifier + equalsverifier-11 + ${project.version} + provided + nl.jqno.equalsverifier equalsverifier-16 diff --git a/equalsverifier-release-verify/src/test/java/nl/jqno/equalsverifier/verify_release/jar/helper/JarAsserter.java b/equalsverifier-release-verify/src/test/java/nl/jqno/equalsverifier/verify_release/jar/helper/JarAsserter.java index a7affb518..6ad902ab4 100644 --- a/equalsverifier-release-verify/src/test/java/nl/jqno/equalsverifier/verify_release/jar/helper/JarAsserter.java +++ b/equalsverifier-release-verify/src/test/java/nl/jqno/equalsverifier/verify_release/jar/helper/JarAsserter.java @@ -30,6 +30,7 @@ public void assertPresenceOfCoreClasses() { public void assertPresenceOfMultiReleaseClasses() { assertPresenceOf( + "/META-INF/versions/11" + EV + "/internal/reflection/ModuleHelper.class", "/META-INF/versions/16" + EV + "/internal/reflection/RecordsHelper.class", "/META-INF/versions/17" + EV + "/internal/reflection/SealedTypesHelper.class" ); diff --git a/equalsverifier-release-verify/src/test/java/nl/jqno/equalsverifier/verify_release/pom/MainPomTest.java b/equalsverifier-release-verify/src/test/java/nl/jqno/equalsverifier/verify_release/pom/MainPomTest.java index 99c8e8570..e1b724b5b 100644 --- a/equalsverifier-release-verify/src/test/java/nl/jqno/equalsverifier/verify_release/pom/MainPomTest.java +++ b/equalsverifier-release-verify/src/test/java/nl/jqno/equalsverifier/verify_release/pom/MainPomTest.java @@ -31,12 +31,13 @@ public void artifactId() { @Test public void dependencies() { assertAll( - () -> pom.assertNumberOfDependencies(5), + () -> pom.assertNumberOfDependencies(6), () -> pom.assertDependencyIsOptional(1), () -> pom.assertDependencyIsOptional(2), () -> pom.assertDependencyIsOptional(3), - () -> pom.assertDependency(4, "org.objenesis", "objenesis"), - () -> pom.assertDependency(5, "net.bytebuddy", "byte-buddy") + () -> pom.assertDependencyIsOptional(4), + () -> pom.assertDependency(5, "org.objenesis", "objenesis"), + () -> pom.assertDependency(6, "net.bytebuddy", "byte-buddy") ); } }