Expose resolved version range if .x present

Fixes gh-586
This commit is contained in:
Madhura Bhave
2018-06-28 10:55:44 -07:00
parent 1d2fba8a26
commit d38fa831e0
4 changed files with 76 additions and 0 deletions
@@ -216,6 +216,7 @@ public class Dependency extends MetadataElement implements Describable {
if (this.versionRange != null) { if (this.versionRange != null) {
try { try {
this.range = versionParser.parseRange(this.versionRange); this.range = versionParser.parseRange(this.versionRange);
this.versionRange = this.range.toRangeString();
this.versionRequirement = this.range.toString(); this.versionRequirement = this.range.toString();
} }
catch (InvalidVersionException ex) { catch (InvalidVersionException ex) {
@@ -105,6 +105,22 @@ public class VersionRange {
return this.higherInclusive; return this.higherInclusive;
} }
public String toRangeString() {
StringBuilder sb = new StringBuilder();
if (this.lowerVersion == null && this.higherVersion == null) {
return "";
}
if (this.higherVersion != null) {
sb.append(this.lowerInclusive ? "[" : "(").append(this.lowerVersion)
.append(",").append(this.higherVersion)
.append(this.higherInclusive ? "]" : ")");
}
else {
sb.append(this.lowerVersion);
}
return sb.toString();
}
@Override @Override
public String toString() { public String toString() {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
@@ -272,6 +272,25 @@ public class DependencyTests {
"foo", "com.acme", "bar", "0.3.0.RELEASE"); "foo", "com.acme", "bar", "0.3.0.RELEASE");
} }
@Test
public void resolveVersionWithX() {
Dependency dependency1 = Dependency.withId("foo1", "com.acme", "foo1",
"0.3.0.RELEASE");
dependency1.setVersionRange("1.2.x.RELEASE");
dependency1.resolve();
assertThat(dependency1.getVersionRange()).isEqualTo("1.2.999.RELEASE");
}
@Test
public void resolveVersionRangeWithX() {
Dependency dependency = Dependency.withId("foo1", "com.acme", "foo1",
"0.3.0.RELEASE");
dependency.setVersionRange("[1.1.0.RELEASE, 1.2.x.RELEASE)");
dependency.resolve();
assertThat(dependency.getVersionRange())
.isEqualTo("[1.1.0.RELEASE,1.2.999.RELEASE)");
}
private static void validateResolvedWebDependency(Dependency dependency, private static void validateResolvedWebDependency(Dependency dependency,
String expectedGroupId, String expectedArtifactId, String expectedVersion) { String expectedGroupId, String expectedArtifactId, String expectedVersion) {
validateResolvedDependency(dependency, "web", expectedGroupId, expectedArtifactId, validateResolvedDependency(dependency, "web", expectedGroupId, expectedArtifactId,
@@ -123,6 +123,46 @@ public class VersionRangeTests {
Version.parse("1.3.6.BUILD-SNAPSHOT"))))); Version.parse("1.3.6.BUILD-SNAPSHOT")))));
} }
@Test
public void toVersionRangeWithSimpleVersion() {
VersionRange range = new VersionParser(
Collections.singletonList(Version.parse("1.5.6.RELEASE")))
.parseRange("1.3.5.RELEASE");
assertThat(range.toRangeString()).isEqualTo("1.3.5.RELEASE");
}
@Test
public void toVersionRangeWithVersionsIncluded() {
VersionRange range = new VersionParser(
Collections.singletonList(Version.parse("1.5.6.RELEASE")))
.parseRange("[1.3.5.RELEASE,1.5.5.RELEASE]");
assertThat(range.toRangeString()).isEqualTo("[1.3.5.RELEASE,1.5.5.RELEASE]");
}
@Test
public void toVersionRangeWithLowerVersionExcluded() {
VersionRange range = new VersionParser(
Collections.singletonList(Version.parse("1.5.6.RELEASE")))
.parseRange("(1.3.5.RELEASE,1.5.5.RELEASE]");
assertThat(range.toRangeString()).isEqualTo("(1.3.5.RELEASE,1.5.5.RELEASE]");
}
@Test
public void toVersionRangeWithHigherVersionExcluded() {
VersionRange range = new VersionParser(
Collections.singletonList(Version.parse("1.5.6.RELEASE")))
.parseRange("[1.3.5.RELEASE,1.5.5.RELEASE)");
assertThat(range.toRangeString()).isEqualTo("[1.3.5.RELEASE,1.5.5.RELEASE)");
}
@Test
public void toVersionRangeWithVersionsExcluded() {
VersionRange range = new VersionParser(
Collections.singletonList(Version.parse("1.5.6.RELEASE")))
.parseRange("(1.3.5.RELEASE,1.5.5.RELEASE)");
assertThat(range.toRangeString()).isEqualTo("(1.3.5.RELEASE,1.5.5.RELEASE)");
}
private static Condition<String> match(String range) { private static Condition<String> match(String range) {
return match(range, new VersionParser(Collections.emptyList())); return match(range, new VersionParser(Collections.emptyList()));
} }