aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Morozov <[email protected]>2014-10-01 13:41:42 +0700
committerAlexander Morozov <[email protected]>2014-10-01 13:41:42 +0700
commit95232052f900ac565917246b29b56b058cc060da (patch)
tree8254007571478526443aacef36adf8b77d8bbf53
parentb39561c4ade1279eeae42156c741c92529bb2d80 (diff)
Add version compatibility checking. AbstractEnforcerRule will skip non-compatible artifacts in case of auto-detection of previous version .
-rwxr-xr-xapi/src/main/java/org/semver/Version.java8
-rwxr-xr-xapi/src/test/java/org/semver/VersionTest.java14
-rwxr-xr-xenforcer-rule/src/main/java/org/semver/enforcer/AbstractEnforcerRule.java3
3 files changed, 24 insertions, 1 deletions
diff --git a/api/src/main/java/org/semver/Version.java b/api/src/main/java/org/semver/Version.java
index 4cb54db..83765da 100755
--- a/api/src/main/java/org/semver/Version.java
+++ b/api/src/main/java/org/semver/Version.java
@@ -168,6 +168,14 @@ public final class Version implements Comparable<Version> {
return this.special != null && this.special.isSnapshot();
}
+ /**
+ * @param version version to check with
+ * @return {@code true}, if supplied version is compatible with this version, {@code false} - otherwise
+ */
+ public boolean isCompatible(Version version) {
+ return version != null && this.major == version.major;
+ }
+
@Override
public int hashCode() {
int hash = 5;
diff --git a/api/src/test/java/org/semver/VersionTest.java b/api/src/test/java/org/semver/VersionTest.java
index 6fbcf47..625c3ac 100755
--- a/api/src/test/java/org/semver/VersionTest.java
+++ b/api/src/test/java/org/semver/VersionTest.java
@@ -102,6 +102,20 @@ public class VersionTest {
}
@Test
+ public void shouldBeCompatible() {
+ Assert.assertTrue(Version.parse("1.0.0").isCompatible(Version.parse("1.2.3-SNAPSHOT")));
+ Assert.assertTrue(Version.parse("1.0.0").isCompatible(Version.parse("1.0.1")));
+ Assert.assertTrue(Version.parse("1.0.0").isCompatible(Version.parse("1.1.0")));
+ }
+
+ @Test
+ public void shouldBeIncompatible() {
+ Assert.assertFalse(Version.parse("0.0.1-SNAPSHOT").isCompatible(null));
+ Assert.assertFalse(Version.parse("1.0.1").isCompatible(Version.parse("2.0.0")));
+ Assert.assertFalse(Version.parse("1.1.0-rc3").isCompatible(Version.parse("3.1.0-SNAPSHOT")));
+ }
+
+ @Test
public void isNewer() {
Assert.assertTrue(Version.parse("3.2.3").compareTo(Version.parse("3.2-M1-SNAPSHOT")) > 0);
Assert.assertTrue(Version.parse("1.0.0").compareTo(Version.parse("0.0.0")) > 0);
diff --git a/enforcer-rule/src/main/java/org/semver/enforcer/AbstractEnforcerRule.java b/enforcer-rule/src/main/java/org/semver/enforcer/AbstractEnforcerRule.java
index 098a0e7..f0ce4cf 100755
--- a/enforcer-rule/src/main/java/org/semver/enforcer/AbstractEnforcerRule.java
+++ b/enforcer-rule/src/main/java/org/semver/enforcer/AbstractEnforcerRule.java
@@ -178,7 +178,8 @@ public abstract class AbstractEnforcerRule implements EnforcerRule {
protected final List<ArtifactVersion> filterNonPreviousVersions(final List<ArtifactVersion> availableVersions, final Version version) {
final List<ArtifactVersion> versions = new ArrayList<ArtifactVersion>();
for (final ArtifactVersion artifactVersion : availableVersions) {
- if (version.compareTo(Version.parse(artifactVersion.toString())) > 0) {
+ Version parsedVersion = Version.parse(artifactVersion.toString());
+ if (version.isCompatible(parsedVersion) && version.compareTo(parsedVersion) > 0) {
versions.add(artifactVersion);
}
}