You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by sj...@apache.org on 2023/01/12 21:41:41 UTC
[maven-enforcer] 01/01: [MENFORCER-458] Move Require Java, Maven Version to new API
This is an automated email from the ASF dual-hosted git repository.
sjaranowski pushed a commit to branch MENFORCER-458-version
in repository https://gitbox.apache.org/repos/asf/maven-enforcer.git
commit 866c79a8b200429b05a05faf64001b64e1bb1b16
Author: Slawomir Jaranowski <s....@gmail.com>
AuthorDate: Thu Jan 12 22:08:00 2023 +0100
[MENFORCER-458] Move Require Java, Maven Version to new API
---
.../enforcer/rules/utils/ArtifactMatcher.java | 24 +++-
.../rules/version}/AbstractVersionEnforcer.java | 57 +++-----
.../rules/version}/RequireJavaVersion.java | 27 ++--
.../rules/version/RequireMavenVersion.java | 55 ++++++++
.../plugins/enforcer/RequireMavenVersion.java | 49 -------
.../src/site/apt/requireJavaVersion.apt.vm | 12 +-
.../src/site/apt/requireMavenVersion.apt.vm | 4 +-
.../enforcer/rules/utils/TestArtifactMatcher.java | 55 +++++++-
.../rules/version/TestAbstractVersionEnforcer.java | 92 +++++++++++++
.../rules/version}/TestMavenVersion.java | 73 +++++-----
.../rules/version}/TestRequireJavaVersion.java | 36 +++--
.../enforcer/TestAbstractVersionEnforcer.java | 148 ---------------------
.../it/projects/require-java-version/verify.groovy | 23 ++++
.../projects/require-maven-version/verify.groovy | 23 ++++
.../maven/plugins/enforcer/DisplayInfoMojo.java | 1 +
15 files changed, 363 insertions(+), 316 deletions(-)
diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java
index 8e20d1b..83fb00c 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/utils/ArtifactMatcher.java
@@ -24,11 +24,11 @@ import java.util.Objects;
import java.util.function.Function;
import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.model.Dependency;
-import org.apache.maven.plugins.enforcer.AbstractVersionEnforcer;
import org.codehaus.plexus.util.StringUtils;
import static java.util.Optional.ofNullable;
@@ -126,7 +126,7 @@ public final class ArtifactMatcher {
case 3:
if (!matches(parts[2], version)) {
- if (!AbstractVersionEnforcer.containsVersion(
+ if (!containsVersion(
VersionRange.createFromVersionSpec(parts[2]), new DefaultArtifactVersion(version))) {
return false;
}
@@ -216,4 +216,24 @@ public final class ArtifactMatcher {
public boolean match(Dependency dependency) {
return match(p -> p.match(dependency));
}
+
+ /**
+ * Copied from Artifact.VersionRange. This is tweaked to handle singular ranges properly. Currently the default
+ * containsVersion method assumes a singular version means allow everything. This method assumes that "2.0.4" ==
+ * "[2.0.4,)"
+ *
+ * @param allowedRange range of allowed versions.
+ * @param theVersion the version to be checked.
+ * @return true if the version is contained by the range.
+ */
+ public static boolean containsVersion(VersionRange allowedRange, ArtifactVersion theVersion) {
+ ArtifactVersion recommendedVersion = allowedRange.getRecommendedVersion();
+ if (recommendedVersion == null) {
+ return allowedRange.containsVersion(theVersion);
+ } else {
+ // only singular versions ever have a recommendedVersion
+ int compareTo = recommendedVersion.compareTo(theVersion);
+ return (compareTo <= 0);
+ }
+ }
}
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/AbstractVersionEnforcer.java
similarity index 70%
rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java
rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/AbstractVersionEnforcer.java
index 4e1bf62..bbae8ea 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/AbstractVersionEnforcer.java
@@ -16,22 +16,23 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules.version;
import org.apache.maven.artifact.versioning.ArtifactVersion;
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.enforcer.rule.api.EnforcerRule;
import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.enforcer.rules.AbstractStandardEnforcerRule;
import org.codehaus.plexus.util.StringUtils;
+import static org.apache.maven.enforcer.rules.utils.ArtifactMatcher.containsVersion;
+
/**
* Contains the common code to compare a version against a version range.
*
* @author <a href="mailto:brianf@apache.org">Brian Fox</a>
*/
-public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRule {
+abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRule {
/**
* Specify the required version. Some examples are:
@@ -51,14 +52,13 @@ public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRu
/**
* Compares the specified version to see if it is allowed by the defined version range.
*
- * @param log the log
- * @param variableName name of variable to use in messages (Example: "Maven" or "Java" etc).
+ * @param variableName name of variable to use in messages (Example: "Maven" or "Java" etc).
* @param requiredVersionRange range of allowed versions.
- * @param actualVersion the version to be checked.
+ * @param actualVersion the version to be checked.
* @throws EnforcerRuleException the enforcer rule exception
*/
// CHECKSTYLE_OFF: LineLength
- public void enforceVersion(Log log, String variableName, String requiredVersionRange, ArtifactVersion actualVersion)
+ public void enforceVersion(String variableName, String requiredVersionRange, ArtifactVersion actualVersion)
throws EnforcerRuleException
// CHECKSTYLE_ON: LineLength
{
@@ -71,13 +71,13 @@ public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRu
// short circuit check if the strings are exactly equal
if (actualVersion.toString().equals(requiredVersionRange)) {
- log.debug(msg + " is allowed in the range " + requiredVersionRange + ".");
+ getLog().debug(msg + " is allowed in the range " + requiredVersionRange + ".");
} else {
try {
vr = VersionRange.createFromVersionSpec(requiredVersionRange);
if (containsVersion(vr, actualVersion)) {
- log.debug(msg + " is allowed in the range " + toString(vr) + ".");
+ getLog().debug(msg + " is allowed in the range " + toString(vr) + ".");
} else {
String message = getMessage();
@@ -103,25 +103,6 @@ public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRu
return vr.toString();
}
}
- /**
- * Copied from Artifact.VersionRange. This is tweaked to handle singular ranges properly. Currently the default
- * containsVersion method assumes a singular version means allow everything. This method assumes that "2.0.4" ==
- * "[2.0.4,)"
- *
- * @param allowedRange range of allowed versions.
- * @param theVersion the version to be checked.
- * @return true if the version is contained by the range.
- */
- public static boolean containsVersion(VersionRange allowedRange, ArtifactVersion theVersion) {
- ArtifactVersion recommendedVersion = allowedRange.getRecommendedVersion();
- if (recommendedVersion == null) {
- return allowedRange.containsVersion(theVersion);
- } else {
- // only singular versions ever have a recommendedVersion
- int compareTo = recommendedVersion.compareTo(theVersion);
- return (compareTo <= 0);
- }
- }
@Override
public String getCacheId() {
@@ -133,19 +114,6 @@ public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRu
}
}
- @Override
- public boolean isCacheable() {
- // the maven version is not going to change between projects in the same build.
- return true;
- }
-
- @Override
- public boolean isResultValid(EnforcerRule theCachedRule) {
- // i will always return the hash of the parameters as my id. If my parameters are the same, this
- // rule must always have the same result.
- return true;
- }
-
/**
* Gets the required version.
*
@@ -170,4 +138,9 @@ public abstract class AbstractVersionEnforcer extends AbstractStandardEnforcerRu
public void setVersion(String theVersion) {
this.version = theVersion;
}
+
+ @Override
+ public String toString() {
+ return String.format("%s[version=%s]", getClass().getSimpleName(), version);
+ }
}
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireJavaVersion.java
similarity index 83%
rename from enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java
rename to enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireJavaVersion.java
index 39b1733..ad44406 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireJavaVersion.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireJavaVersion.java
@@ -16,7 +16,9 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules.version;
+
+import javax.inject.Named;
import java.util.Arrays;
import java.util.Iterator;
@@ -30,8 +32,6 @@ import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
-import org.apache.maven.plugin.logging.Log;
import org.codehaus.plexus.util.StringUtils;
/**
@@ -39,7 +39,8 @@ import org.codehaus.plexus.util.StringUtils;
*
* @author <a href="mailto:brianf@apache.org">Brian Fox</a>
*/
-public class RequireJavaVersion extends AbstractVersionEnforcer {
+@Named("requireJavaVersion")
+public final class RequireJavaVersion extends AbstractVersionEnforcer {
private static final Pattern JDK8_VERSION_PATTERN = Pattern.compile("([\\[(,]?)(1\\.8|8)([]),]?)");
@@ -63,24 +64,23 @@ public class RequireJavaVersion extends AbstractVersionEnforcer {
}
@Override
- public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
+ public void execute() throws EnforcerRuleException {
String javaVersion = SystemUtils.JAVA_VERSION;
- Log log = helper.getLog();
- log.debug("Detected Java String: '" + javaVersion + "'");
+ getLog().debug("Detected Java String: '" + javaVersion + "'");
javaVersion = normalizeJDKVersion(javaVersion);
- log.debug("Normalized Java String: '" + javaVersion + "'");
+ getLog().debug("Normalized Java String: '" + javaVersion + "'");
ArtifactVersion detectedJdkVersion = new DefaultArtifactVersion(javaVersion);
- log.debug("Parsed Version: Major: " + detectedJdkVersion.getMajorVersion() + " Minor: "
+ getLog().debug("Parsed Version: Major: " + detectedJdkVersion.getMajorVersion() + " Minor: "
+ detectedJdkVersion.getMinorVersion() + " Incremental: " + detectedJdkVersion.getIncrementalVersion()
+ " Build: " + detectedJdkVersion.getBuildNumber() + " Qualifier: "
+ detectedJdkVersion.getQualifier());
- setCustomMessageIfNoneConfigured(detectedJdkVersion, getVersion(), log);
+ setCustomMessageIfNoneConfigured(detectedJdkVersion, getVersion());
- enforceVersion(helper.getLog(), "JDK", getVersion(), detectedJdkVersion);
+ enforceVersion("JDK", getVersion(), detectedJdkVersion);
}
/**
@@ -117,15 +117,14 @@ public class RequireJavaVersion extends AbstractVersionEnforcer {
return StringUtils.stripEnd(version, ".");
}
- private void setCustomMessageIfNoneConfigured(
- ArtifactVersion detectedJdkVersion, String allowedVersionRange, Log log) {
+ private void setCustomMessageIfNoneConfigured(ArtifactVersion detectedJdkVersion, String allowedVersionRange) {
if (getMessage() == null) {
String version;
try {
VersionRange vr = VersionRange.createFromVersionSpec(allowedVersionRange);
version = AbstractVersionEnforcer.toString(vr);
} catch (InvalidVersionSpecificationException e) {
- log.debug("Could not parse allowed version range " + allowedVersionRange, e);
+ getLog().debug("Could not parse allowed version range " + allowedVersionRange + " " + e.getMessage());
version = allowedVersionRange;
}
String message = String.format(
diff --git a/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireMavenVersion.java b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireMavenVersion.java
new file mode 100644
index 0000000..4dfb9e8
--- /dev/null
+++ b/enforcer-rules/src/main/java/org/apache/maven/enforcer/rules/version/RequireMavenVersion.java
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.enforcer.rules.version;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+import java.util.Objects;
+
+import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
+import org.apache.maven.rtinfo.RuntimeInformation;
+
+/**
+ * This rule checks that the Maven version is allowed.
+ *
+ * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
+ */
+@Named("requireMavenVersion")
+public final class RequireMavenVersion extends AbstractVersionEnforcer {
+
+ private final RuntimeInformation runtimeInformation;
+
+ @Inject
+ public RequireMavenVersion(RuntimeInformation runtimeInformation) {
+ this.runtimeInformation = Objects.requireNonNull(runtimeInformation);
+ }
+
+ @Override
+ public void execute() throws EnforcerRuleException {
+ String mavenVersion = runtimeInformation.getMavenVersion();
+ getLog().debug("Detected Maven Version: " + mavenVersion);
+ if (mavenVersion == null) {
+ throw new EnforcerRuleException("Unable to detect Maven Version");
+ }
+ DefaultArtifactVersion detectedVersion = new DefaultArtifactVersion(mavenVersion);
+ enforceVersion("Maven", getVersion(), detectedVersion);
+ }
+}
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireMavenVersion.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireMavenVersion.java
deleted file mode 100644
index b42875a..0000000
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireMavenVersion.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.maven.plugins.enforcer;
-
-import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
-import org.apache.maven.execution.MavenSession;
-import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
-
-/**
- * This rule checks that the Maven version is allowed.
- *
- * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
- */
-public class RequireMavenVersion extends AbstractVersionEnforcer {
- @Override
- public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
- try {
- MavenSession mavenSession = (MavenSession) helper.evaluate("${session}");
- String mavenVersion = mavenSession.getSystemProperties().getProperty("maven.version");
- helper.getLog().debug("Detected Maven Version: " + mavenVersion);
- if (mavenVersion == null) {
- throw new EnforcerRuleException(
- "Unable to detect Maven Version - missing system property - maven.version");
- }
- DefaultArtifactVersion detectedVersion = new DefaultArtifactVersion(mavenVersion);
- enforceVersion(helper.getLog(), "Maven", getVersion(), detectedVersion);
- } catch (ExpressionEvaluationException e) {
- throw new EnforcerRuleException("Unable to retrieve the session.", e);
- }
- }
-}
diff --git a/enforcer-rules/src/site/apt/requireJavaVersion.apt.vm b/enforcer-rules/src/site/apt/requireJavaVersion.apt.vm
index 9b32b51..39cd978 100644
--- a/enforcer-rules/src/site/apt/requireJavaVersion.apt.vm
+++ b/enforcer-rules/src/site/apt/requireJavaVersion.apt.vm
@@ -29,9 +29,9 @@ Require Java Version
The following parameters are supported by this rule:
- * message - an optional message to the user if the rule fails.
+ * <<message>> - an optional message to the user if the rule fails.
- * {{{../apidocs/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.html#version}version}} - {{{./versionRanges.html}range}} of allowed JDKs.
+ * <<version>> - {{{./versionRanges.html}range}} of allowed JDKs.
For JDK 1.8 you can also use simple <<<8>>> as <version> - it will be internally changed to <<<1.8>>>
@@ -55,10 +55,10 @@ Require Java Version
+---+
mvn enforcer:display-info
...
-[enforcer:display-info]
-Maven Version: 2.0.8
-JDK Version: 1.5.0_11 normalized as: 1.5.0-11
-OS Info: Arch: x86 Family: windows Name: windows xp Version: 5.1
+[INFO] Maven Version: 3.8.7
+[INFO] JDK Version: 1.8.0_352 normalized as: 1.8.0-352
+[INFO] Java Vendor: Homebrew
+[INFO] OS Info - Arch: x86_64, Family: mac, Name: mac os x, Version: 12.6.1
+---+
Sample Plugin Configuration:
diff --git a/enforcer-rules/src/site/apt/requireMavenVersion.apt.vm b/enforcer-rules/src/site/apt/requireMavenVersion.apt.vm
index 268f2bd..bb17a2f 100644
--- a/enforcer-rules/src/site/apt/requireMavenVersion.apt.vm
+++ b/enforcer-rules/src/site/apt/requireMavenVersion.apt.vm
@@ -29,9 +29,9 @@ Require Maven Version
The following parameters are supported by this rule:
- * message - an optional message to the user if the rule fails.
+ * <<message>> - an optional message to the user if the rule fails.
- * {{{../enforcer-rules/apidocs/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.html#version}version}} - {{{./versionRanges.html}range}} of allowed Maven versions.
+ * <<version>> - {{{./versionRanges.html}range}} of allowed Maven versions.
[]
diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/utils/TestArtifactMatcher.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/utils/TestArtifactMatcher.java
index 4f67e43..8486e8a 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/utils/TestArtifactMatcher.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/utils/TestArtifactMatcher.java
@@ -25,22 +25,27 @@ import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.handler.DefaultArtifactHandler;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
+import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
import org.apache.maven.artifact.versioning.VersionRange;
import org.apache.maven.enforcer.rules.utils.ArtifactMatcher.Pattern;
+import org.apache.maven.enforcer.rules.version.RequireJavaVersion;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
-public class TestArtifactMatcher {
+class TestArtifactMatcher {
Collection<String> patterns = new ArrayList<>();
Collection<String> ignorePatterns = new ArrayList<>();
@Test
- public void testPatternInvalidInput() {
+ void testPatternInvalidInput() {
try {
new Pattern(null);
fail("NullPointerException expected.");
@@ -68,7 +73,7 @@ public class TestArtifactMatcher {
}
@Test
- public void testPattern() throws InvalidVersionSpecificationException {
+ void testPattern() throws InvalidVersionSpecificationException {
executePatternMatch(
"groupId:artifactId:1.0:jar:compile", "groupId", "artifactId", "1.0", "compile", "jar", true);
@@ -100,7 +105,7 @@ public class TestArtifactMatcher {
}
@Test
- public void testMatch() throws InvalidVersionSpecificationException {
+ void testMatch() {
patterns.add("groupId:artifactId:1.0");
patterns.add("*:anotherArtifact");
@@ -171,4 +176,46 @@ public class TestArtifactMatcher {
VersionRange version = VersionRange.createFromVersion(versionRange);
return new DefaultArtifact(groupId, artifactId, version, scope, type, classifier, artifactHandler);
}
+
+ /**
+ * Test contains version.
+ *
+ * @throws InvalidVersionSpecificationException the invalid version specification exception
+ */
+ @Test
+ void testContainsVersion() throws InvalidVersionSpecificationException {
+ ArtifactVersion version = new DefaultArtifactVersion("2.0.5");
+ // test ranges
+ assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.5,)"), version));
+ assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,)"), version));
+ assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.5]"), version));
+ assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.6]"), version));
+ assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.6)"), version));
+ assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0,)"), version));
+ assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.0,)"), version));
+ // not matching versions
+ assertFalse(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.5)"), version));
+ assertFalse(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.0.6,)"), version));
+ assertFalse(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("(2.0.5,)"), version));
+
+ // test singular versions -> 2.0.5 == [2.0.5,) or x >= 2.0.5
+ assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("2.0"), version));
+ assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("2.0.4"), version));
+ assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("2.0.5"), version));
+
+ assertFalse(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("2.0.6"), version));
+
+ version = new DefaultArtifactVersion("1.5.0-7");
+ assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[1.5.0,)"), version));
+ assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[1.5,1.6)"), version));
+
+ version = new DefaultArtifactVersion(RequireJavaVersion.normalizeJDKVersion("1.5.0-07"));
+ assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[1.5.0,)"), version));
+ assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[1.5,1.6)"), version));
+
+ // MENFORCER-50
+ version = new DefaultArtifactVersion("2.1.0-M1-RC12");
+ assertTrue(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.1.0-M1-RC12,)"), version));
+ assertFalse(ArtifactMatcher.containsVersion(VersionRange.createFromVersionSpec("[2.1.0-M1,)"), version));
+ }
}
diff --git a/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestAbstractVersionEnforcer.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestAbstractVersionEnforcer.java
new file mode 100644
index 0000000..0bfa859
--- /dev/null
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestAbstractVersionEnforcer.java
@@ -0,0 +1,92 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.maven.enforcer.rules.version;
+
+import org.apache.maven.artifact.versioning.ArtifactVersion;
+import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+import org.apache.maven.enforcer.rule.api.EnforcerLogger;
+import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.fail;
+import static org.mockito.Mockito.mock;
+
+/**
+ * The Class TestAbstractVersionEnforcer.
+ *
+ * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
+ */
+class TestAbstractVersionEnforcer {
+
+ /**
+ * Enforce false.
+ *
+ * @param rule the rule
+ * @param var the var
+ * @param range the range
+ * @param version the version
+ */
+ private void enforceFalse(AbstractVersionEnforcer rule, String var, String range, ArtifactVersion version) {
+ try {
+ rule.enforceVersion(var, range, version);
+ fail("Expected to receive EnforcerRuleException because:" + version + " is not contained by " + range);
+ } catch (Exception e) {
+ if (e instanceof EnforcerRuleException) {
+ // log.info( "Caught Expected Exception: " +
+ // e.getLocalizedMessage() );
+ } else {
+ fail("Received wrong exception. Expected EnforcerRuleExeption. Received:" + e);
+ }
+ }
+ }
+
+ /**
+ * Test enforce version.
+ */
+ @Test
+ void testEnforceVersion() throws Exception {
+ RequireJavaVersion rule = new RequireJavaVersion();
+ rule.setLog(mock(EnforcerLogger.class));
+
+ ArtifactVersion version = new DefaultArtifactVersion("2.0.5");
+
+ // test ranges
+ rule.enforceVersion("test", "[2.0.5,)", version);
+ rule.enforceVersion("test", "[2.0.4,)", version);
+ rule.enforceVersion("test", "[2.0.4,2.0.5]", version);
+ rule.enforceVersion("test", "[2.0.4,2.0.6]", version);
+ rule.enforceVersion("test", "[2.0.4,2.0.6)", version);
+ rule.enforceVersion("test", "[2.0,)", version);
+ rule.enforceVersion("test", "[2.0.0,)", version);
+
+ // test singular versions -> 2.0.5 == [2.0.5,) or x >= 2.0.5
+ rule.enforceVersion("test", "2.0", version);
+ rule.enforceVersion("test", "2.0.4", version);
+ rule.enforceVersion("test", "2.0.5", version);
+
+ enforceFalse(rule, "test", "[2.0.6,)", version);
+ enforceFalse(rule, "test", "(2.0.5,)", version);
+ enforceFalse(rule, "test", "2.0.6", version);
+
+ enforceFalse(rule, "test", "[2.0.4,2.0.5)", version);
+
+ // make sure to handle the invalid range specification
+ enforceFalse(rule, "test", "[[2.0.4,2.0.5)", version);
+ }
+}
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestMavenVersion.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestMavenVersion.java
similarity index 59%
rename from enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestMavenVersion.java
rename to enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestMavenVersion.java
index 6d97aac..820dde9 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestMavenVersion.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestMavenVersion.java
@@ -16,24 +16,43 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.maven.plugins.enforcer;
-
-import java.util.Properties;
+package org.apache.maven.enforcer.rules.version;
+import org.apache.maven.enforcer.rule.api.EnforcerLogger;
import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
-import org.apache.maven.execution.MavenSession;
-import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
+import org.apache.maven.rtinfo.RuntimeInformation;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.junit.jupiter.api.Assertions.fail;
+import static org.mockito.Mockito.when;
/**
* The Class TestMavenVersion.
*
* @author <a href="mailto:brianf@apache.org">Brian Fox</a>
*/
-public class TestMavenVersion {
+@ExtendWith(MockitoExtension.class)
+class TestMavenVersion {
+
+ @Mock
+ private RuntimeInformation runtimeInformation;
+
+ @Mock
+ private EnforcerLogger log;
+
+ @InjectMocks
+ private RequireMavenVersion rule;
+
+ @BeforeEach
+ void setup() {
+ rule.setLog(log);
+ }
/**
* Test rule.
@@ -41,21 +60,20 @@ public class TestMavenVersion {
* @throws EnforcerRuleException the enforcer rule exception
*/
@Test
- public void testRule() throws EnforcerRuleException {
+ void testRule() throws EnforcerRuleException {
- RequireMavenVersion rule = new RequireMavenVersion();
- rule.setVersion("2.0.5");
+ when(runtimeInformation.getMavenVersion()).thenReturn("3.0");
- EnforcerRuleHelper helper = EnforcerTestUtils.getHelper();
+ rule.setVersion("2.0.5");
// test the singular version
- rule.execute(helper);
+ rule.execute();
// exclude this version
rule.setVersion("(2.0.5");
try {
- rule.execute(helper);
+ rule.execute();
fail("Expected an exception.");
} catch (EnforcerRuleException e) {
// expected to catch this.
@@ -63,7 +81,7 @@ public class TestMavenVersion {
// this shouldn't crash
rule.setVersion("2.0.5_01");
- rule.execute(helper);
+ rule.execute();
}
/**
@@ -72,27 +90,22 @@ public class TestMavenVersion {
* @throws EnforcerRuleException the enforcer rule exception
*/
@Test
- public void checkRequireVersionMatrix() throws EnforcerRuleException, ExpressionEvaluationException {
- RequireMavenVersion rule = new RequireMavenVersion();
-
- EnforcerRuleHelper helper = EnforcerTestUtils.getHelper();
- MavenSession mavenSession = (MavenSession) helper.evaluate("${session}");
- Properties systemProperties = mavenSession.getSystemProperties();
+ void checkRequireVersionMatrix() throws EnforcerRuleException {
- systemProperties.setProperty("maven.version", "3.6.1");
+ when(runtimeInformation.getMavenVersion()).thenReturn("3.6.1");
rule.setVersion("3.6.0");
- rule.execute(helper);
+ rule.execute();
- systemProperties.setProperty("maven.version", "3.6.2");
+ when(runtimeInformation.getMavenVersion()).thenReturn("3.6.2");
rule.setVersion("3.6.0");
- rule.execute(helper);
+ rule.execute();
rule.setVersion("3.6.1");
- rule.execute(helper);
+ rule.execute();
rule.setVersion("3.6.2");
- rule.execute(helper);
+ rule.execute();
rule.setVersion("3.6.3");
try {
- rule.execute(helper);
+ rule.execute();
fail("Expected an exception.");
} catch (EnforcerRuleException e) {
// expected to catch this.
@@ -103,8 +116,8 @@ public class TestMavenVersion {
* Test id.
*/
@Test
- public void testId() {
- RequireMavenVersion rule = new RequireMavenVersion();
- rule.getCacheId();
+ void testId() {
+ rule.setVersion("3.3.3");
+ assertThat(rule.getCacheId()).isNotEmpty();
}
}
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestRequireJavaVersion.java
similarity index 84%
rename from enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java
rename to enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestRequireJavaVersion.java
index 4afecbb..38bb343 100644
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestRequireJavaVersion.java
+++ b/enforcer-rules/src/test/java/org/apache/maven/enforcer/rules/version/TestRequireJavaVersion.java
@@ -16,13 +16,14 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.maven.plugins.enforcer;
+package org.apache.maven.enforcer.rules.version;
import java.util.stream.Stream;
import org.apache.commons.lang3.SystemUtils;
+import org.apache.maven.enforcer.rule.api.EnforcerLogger;
import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
+import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
@@ -30,6 +31,7 @@ import org.junit.jupiter.params.provider.MethodSource;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
+import static org.mockito.Mockito.mock;
/**
* The Class TestRequireJavaVersion.
@@ -38,6 +40,13 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
*/
class TestRequireJavaVersion {
+ private RequireJavaVersion rule;
+
+ @BeforeEach
+ void setup() {
+ rule = new RequireJavaVersion();
+ rule.setLog(mock(EnforcerLogger.class));
+ }
/**
* Test fix jdk version.
*/
@@ -76,13 +85,10 @@ class TestRequireJavaVersion {
void settingsTheJavaVersionAsNormalizedVersionShouldNotFail() throws EnforcerRuleException {
String normalizedJDKVersion = RequireJavaVersion.normalizeJDKVersion(SystemUtils.JAVA_VERSION);
- RequireJavaVersion rule = new RequireJavaVersion();
rule.setVersion(normalizedJDKVersion);
- EnforcerRuleHelper helper = EnforcerTestUtils.getHelper();
-
// test the singular version
- rule.execute(helper);
+ rule.execute();
// intentionally no assertThat(...) because we don't expect and exception.
}
@@ -90,11 +96,9 @@ class TestRequireJavaVersion {
void excludingTheCurrentJavaVersionViaRangeThisShouldFailWithException() {
String thisVersion = RequireJavaVersion.normalizeJDKVersion(SystemUtils.JAVA_VERSION);
String requiredVersion = "(" + thisVersion;
- RequireJavaVersion rule = new RequireJavaVersion();
rule.setVersion(requiredVersion);
- EnforcerRuleHelper helper = EnforcerTestUtils.getHelper();
- assertThatThrownBy(() -> rule.execute(helper))
+ assertThatThrownBy(() -> rule.execute())
.isInstanceOf(EnforcerRuleException.class)
.hasMessage("The requested JDK version %s is invalid.", requiredVersion);
}
@@ -103,11 +107,9 @@ class TestRequireJavaVersion {
void shouldIncludeJavaHomeLocationInTheErrorMessage() {
String thisVersion = RequireJavaVersion.normalizeJDKVersion(SystemUtils.JAVA_VERSION);
String requiredVersion = "10000";
- RequireJavaVersion rule = new RequireJavaVersion();
rule.setVersion(requiredVersion);
- EnforcerRuleHelper helper = EnforcerTestUtils.getHelper();
- assertThatThrownBy(() -> rule.execute(helper))
+ assertThatThrownBy(() -> rule.execute())
.isInstanceOf(EnforcerRuleException.class)
.hasMessage(
"Detected JDK version %s (JAVA_HOME=%s) is not in the allowed range %s.",
@@ -118,12 +120,10 @@ class TestRequireJavaVersion {
void shouldUseCustomErrorMessage() {
String requiredVersion = "10000";
String message = "My custom error message";
- RequireJavaVersion rule = new RequireJavaVersion();
rule.setVersion(requiredVersion);
rule.setMessage(message);
- EnforcerRuleHelper helper = EnforcerTestUtils.getHelper();
- assertThatThrownBy(() -> rule.execute(helper))
+ assertThatThrownBy(() -> rule.execute())
.isInstanceOf(EnforcerRuleException.class)
.hasMessage(message);
}
@@ -133,7 +133,6 @@ class TestRequireJavaVersion {
*/
@Test
void testId() {
- RequireJavaVersion rule = new RequireJavaVersion();
assertThat(rule.getCacheId()).isEqualTo("0");
}
@@ -154,8 +153,7 @@ class TestRequireJavaVersion {
@ParameterizedTest
@MethodSource
void fixJava8ShortVersion(String input, String expected) {
- RequireJavaVersion requireJavaVersion = new RequireJavaVersion();
- requireJavaVersion.setVersion(input);
- assertThat(requireJavaVersion.getVersion()).isEqualTo(expected);
+ rule.setVersion(input);
+ assertThat(rule.getVersion()).isEqualTo(expected);
}
}
diff --git a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAbstractVersionEnforcer.java b/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAbstractVersionEnforcer.java
deleted file mode 100644
index f6aba62..0000000
--- a/enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/TestAbstractVersionEnforcer.java
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-package org.apache.maven.plugins.enforcer;
-
-import org.apache.maven.artifact.versioning.ArtifactVersion;
-import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
-import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
-import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
-import org.apache.maven.plugin.logging.Log;
-import org.apache.maven.plugin.logging.SystemStreamLog;
-import org.junit.jupiter.api.Test;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-/**
- * The Class TestAbstractVersionEnforcer.
- *
- * @author <a href="mailto:brianf@apache.org">Brian Fox</a>
- */
-public class TestAbstractVersionEnforcer {
-
- /**
- * Test contains version.
- *
- * @throws InvalidVersionSpecificationException the invalid version specification exception
- */
- @Test
- public void testContainsVersion() throws InvalidVersionSpecificationException {
- ArtifactVersion version = new DefaultArtifactVersion("2.0.5");
- // test ranges
- assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.5,)"), version));
- assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,)"), version));
- assertTrue(
- AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.5]"), version));
- assertTrue(
- AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.6]"), version));
- assertTrue(
- AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.6)"), version));
- assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0,)"), version));
- assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.0,)"), version));
- // not matching versions
- assertFalse(
- AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.4,2.0.5)"), version));
- assertFalse(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.0.6,)"), version));
- assertFalse(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("(2.0.5,)"), version));
-
- // test singular versions -> 2.0.5 == [2.0.5,) or x >= 2.0.5
- assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("2.0"), version));
- assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("2.0.4"), version));
- assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("2.0.5"), version));
-
- assertFalse(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("2.0.6"), version));
-
- version = new DefaultArtifactVersion("1.5.0-7");
- assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[1.5.0,)"), version));
- assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[1.5,1.6)"), version));
-
- version = new DefaultArtifactVersion(RequireJavaVersion.normalizeJDKVersion("1.5.0-07"));
- assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[1.5.0,)"), version));
- assertTrue(AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[1.5,1.6)"), version));
-
- // MENFORCER-50
- version = new DefaultArtifactVersion("2.1.0-M1-RC12");
- assertTrue(AbstractVersionEnforcer.containsVersion(
- VersionRange.createFromVersionSpec("[2.1.0-M1-RC12,)"), version));
- assertFalse(
- AbstractVersionEnforcer.containsVersion(VersionRange.createFromVersionSpec("[2.1.0-M1,)"), version));
- }
-
- /**
- * Enforce false.
- *
- * @param rule the rule
- * @param log the log
- * @param var the var
- * @param range the range
- * @param version the version
- */
- private void enforceFalse(
- AbstractVersionEnforcer rule, Log log, String var, String range, ArtifactVersion version) {
- try {
- rule.enforceVersion(log, var, range, version);
- fail("Expected to receive EnforcerRuleException because:" + version + " is not contained by " + range);
- } catch (Exception e) {
- if (e instanceof EnforcerRuleException) {
- // log.info( "Caught Expected Exception: " +
- // e.getLocalizedMessage() );
- } else {
- fail("Received wrong exception. Expected EnforcerRuleExeption. Received:" + e);
- }
- }
- }
-
- /**
- * Test enforce version.
- */
- @Test
- public void testEnforceVersion() {
- RequireMavenVersion rule = new RequireMavenVersion();
- ArtifactVersion version = new DefaultArtifactVersion("2.0.5");
- SystemStreamLog log = new SystemStreamLog();
- // test ranges
-
- // not matching versions
- try {
- rule.enforceVersion(log, "test", "[2.0.5,)", version);
- rule.enforceVersion(log, "test", "[2.0.4,)", version);
- rule.enforceVersion(log, "test", "[2.0.4,2.0.5]", version);
- rule.enforceVersion(log, "test", "[2.0.4,2.0.6]", version);
- rule.enforceVersion(log, "test", "[2.0.4,2.0.6)", version);
- rule.enforceVersion(log, "test", "[2.0,)", version);
- rule.enforceVersion(log, "test", "[2.0.0,)", version);
-
- // test singular versions -> 2.0.5 == [2.0.5,) or x >= 2.0.5
- rule.enforceVersion(log, "test", "2.0", version);
- rule.enforceVersion(log, "test", "2.0.4", version);
- rule.enforceVersion(log, "test", "2.0.5", version);
- } catch (Exception e) {
- fail("No Exception expected. Caught:" + e.getLocalizedMessage());
- }
-
- enforceFalse(rule, log, "test", "[2.0.6,)", version);
- enforceFalse(rule, log, "test", "(2.0.5,)", version);
- enforceFalse(rule, log, "test", "2.0.6", version);
-
- enforceFalse(rule, log, "test", "[2.0.4,2.0.5)", version);
-
- // make sure to handle the invalid range specification
- enforceFalse(rule, log, "test", "[[2.0.4,2.0.5)", version);
- }
-}
diff --git a/maven-enforcer-plugin/src/it/projects/require-java-version/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-java-version/verify.groovy
new file mode 100644
index 0000000..e029bdb
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/projects/require-java-version/verify.groovy
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+def buildLog = new File(basedir, 'build.log').text
+
+// rule executed
+assert buildLog.contains('[INFO] Rule 0: org.apache.maven.enforcer.rules.version.RequireJavaVersion executed')
+assert buildLog.contains('[INFO] Rule 1: org.apache.maven.enforcer.rules.version.RequireJavaVersion executed')
diff --git a/maven-enforcer-plugin/src/it/projects/require-maven-version/verify.groovy b/maven-enforcer-plugin/src/it/projects/require-maven-version/verify.groovy
new file mode 100644
index 0000000..9b01abe
--- /dev/null
+++ b/maven-enforcer-plugin/src/it/projects/require-maven-version/verify.groovy
@@ -0,0 +1,23 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+def buildLog = new File(basedir, 'build.log').text
+
+// rule executed
+assert buildLog.contains('[INFO] Rule 0: org.apache.maven.enforcer.rules.version.RequireMavenVersion executed')
+assert buildLog.contains('[INFO] Rule 1: org.apache.maven.enforcer.rules.version.RequireMavenVersion executed')
diff --git a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java
index d9ffddd..eebb7fb 100644
--- a/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java
+++ b/maven-enforcer-plugin/src/main/java/org/apache/maven/plugins/enforcer/DisplayInfoMojo.java
@@ -19,6 +19,7 @@
package org.apache.maven.plugins.enforcer;
import org.apache.maven.enforcer.rules.utils.OSUtil;
+import org.apache.maven.enforcer.rules.version.RequireJavaVersion;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugins.annotations.Mojo;