Use current version if the queried repository does not contain the current version.
Closes #171.
This commit is contained in:
@@ -99,8 +99,7 @@ public class DependencyOperations {
|
||||
|
||||
DependencyVersion currentVersion = currentDependencies.get(dependency);
|
||||
List<DependencyVersion> versions = getAvailableVersions(dependency);
|
||||
DependencyUpgradeProposal proposal = getDependencyUpgradeProposal(iteration, dependency, currentVersion,
|
||||
versions);
|
||||
DependencyUpgradeProposal proposal = getDependencyUpgradeProposal(iteration, currentVersion, versions);
|
||||
|
||||
proposals.put(dependency, proposal);
|
||||
});
|
||||
@@ -234,19 +233,23 @@ public class DependencyOperations {
|
||||
}
|
||||
|
||||
protected static DependencyUpgradeProposal getDependencyUpgradeProposal(Iteration iteration,
|
||||
Dependency dependency, DependencyVersion currentVersion, List<DependencyVersion> allVersions) {
|
||||
DependencyVersion currentVersion, List<DependencyVersion> allVersions) {
|
||||
|
||||
DependencyVersion latestMinor = findLatestMinor(iteration, dependency, currentVersion, allVersions);
|
||||
DependencyVersion latest = findLatest(iteration, allVersions);
|
||||
Optional<DependencyVersion> latestMinor = findLatestMinor(iteration, currentVersion, allVersions);
|
||||
Optional<DependencyVersion> latest = findLatest(iteration, allVersions);
|
||||
List<DependencyVersion> newerVersions = allVersions.stream() //
|
||||
.sorted() //
|
||||
.filter(it -> it.compareTo(currentVersion) > 0) //
|
||||
.collect(Collectors.toList());
|
||||
|
||||
return DependencyUpgradeProposal.of(iteration, currentVersion, latestMinor, latest, newerVersions);
|
||||
DependencyVersion latestToUse = latest.filter(it -> it.isNewer(currentVersion)).orElse(currentVersion);
|
||||
|
||||
return DependencyUpgradeProposal.of(iteration, currentVersion, latestMinor.orElse(latestToUse), latestToUse,
|
||||
newerVersions);
|
||||
}
|
||||
|
||||
private static DependencyVersion findLatest(Iteration iteration, List<DependencyVersion> availableVersions) {
|
||||
private static Optional<DependencyVersion> findLatest(Iteration iteration,
|
||||
List<DependencyVersion> availableVersions) {
|
||||
|
||||
return availableVersions.stream().filter(it -> {
|
||||
|
||||
@@ -256,11 +259,10 @@ public class DependencyOperations {
|
||||
|
||||
return true;
|
||||
|
||||
}).max(DependencyVersion::compareTo).orElseThrow(
|
||||
() -> new IllegalArgumentException("Cannot determine new latest version from " + availableVersions));
|
||||
}).max(DependencyVersion::compareTo);
|
||||
}
|
||||
|
||||
private static DependencyVersion findLatestMinor(Iteration iteration, Dependency dependency,
|
||||
private static Optional<DependencyVersion> findLatestMinor(Iteration iteration,
|
||||
DependencyVersion currentVersion,
|
||||
List<DependencyVersion> availableVersions) {
|
||||
|
||||
@@ -285,11 +287,7 @@ public class DependencyOperations {
|
||||
|
||||
return false;
|
||||
}) //
|
||||
.max(DependencyVersion::compareTo) //
|
||||
.orElseThrow(
|
||||
() -> new IllegalArgumentException(String.format(
|
||||
"Cannot determine new minor version from %s for %s (%s). Current version: %s", availableVersions,
|
||||
dependency.getName(), dependency.getArtifactId(), currentVersion.getIdentifier())));
|
||||
.max(DependencyVersion::compareTo);
|
||||
}
|
||||
|
||||
DependencyVersions getCurrentDependencies(Project project) {
|
||||
|
||||
@@ -107,6 +107,10 @@ class DependencyVersion implements Comparable<DependencyVersion> {
|
||||
throw new IllegalArgumentException(String.format("Cannot parse version identifier %s", identifier));
|
||||
}
|
||||
|
||||
public boolean isNewer(DependencyVersion other) {
|
||||
return this.compareTo(other) > 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(DependencyVersion o) {
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@ class DependencyOperationsUnitTests {
|
||||
.collect(Collectors.toList());
|
||||
|
||||
DependencyUpgradeProposal proposal = DependencyOperations.getDependencyUpgradeProposal(Iteration.SR1,
|
||||
Dependencies.JUNIT5, DependencyVersion.of("5.7.0"), availableVersions);
|
||||
DependencyVersion.of("5.7.0"), availableVersions);
|
||||
|
||||
assertThat(proposal.getCurrent()).isEqualTo(DependencyVersion.of("5.7.0"));
|
||||
assertThat(proposal.getLatestMinor()).isEqualTo(DependencyVersion.of("5.7.0"));
|
||||
@@ -58,7 +58,7 @@ class DependencyOperationsUnitTests {
|
||||
.collect(Collectors.toList());
|
||||
|
||||
DependencyUpgradeProposal proposal = DependencyOperations.getDependencyUpgradeProposal(Iteration.SR1,
|
||||
Dependencies.JUNIT5, DependencyVersion.of("5.7.0"), availableVersions);
|
||||
DependencyVersion.of("5.7.0"), availableVersions);
|
||||
|
||||
assertThat(proposal.getCurrent()).isEqualTo(DependencyVersion.of("5.7.0"));
|
||||
assertThat(proposal.getLatestMinor()).isEqualTo(DependencyVersion.of("5.7.1"));
|
||||
@@ -75,7 +75,7 @@ class DependencyOperationsUnitTests {
|
||||
.collect(Collectors.toList());
|
||||
|
||||
DependencyUpgradeProposal proposal = DependencyOperations.getDependencyUpgradeProposal(Iteration.M1,
|
||||
Dependencies.JUNIT5, DependencyVersion.of("5.7.0"), availableVersions);
|
||||
DependencyVersion.of("5.7.0"), availableVersions);
|
||||
|
||||
assertThat(proposal.getCurrent()).isEqualTo(DependencyVersion.of("5.7.0"));
|
||||
assertThat(proposal.getLatestMinor()).isEqualTo(DependencyVersion.of("5.7.1"));
|
||||
@@ -92,7 +92,7 @@ class DependencyOperationsUnitTests {
|
||||
.collect(Collectors.toList());
|
||||
|
||||
DependencyUpgradeProposal proposal = DependencyOperations.getDependencyUpgradeProposal(Iteration.SR1,
|
||||
Dependencies.JUNIT5, DependencyVersion.of("5.7.1"), availableVersions);
|
||||
DependencyVersion.of("5.7.1"), availableVersions);
|
||||
|
||||
assertThat(proposal.getNewerVersions()).extracting(DependencyVersion::getIdentifier).containsExactly("5.7.2-M2",
|
||||
"5.7.2", "5.8.0");
|
||||
@@ -107,7 +107,7 @@ class DependencyOperationsUnitTests {
|
||||
.collect(Collectors.toList());
|
||||
|
||||
DependencyUpgradeProposal proposal = DependencyOperations.getDependencyUpgradeProposal(Iteration.M1,
|
||||
Dependencies.JUNIT5, DependencyVersion.of("5.7.1"), availableVersions);
|
||||
DependencyVersion.of("5.7.1"), availableVersions);
|
||||
|
||||
assertThat(proposal.getLatest()).extracting(DependencyVersion::getIdentifier).isEqualTo("5.7.2-M2");
|
||||
assertThat(proposal.getProposal()).extracting(DependencyVersion::getIdentifier).isEqualTo("5.7.2-M2");
|
||||
@@ -123,7 +123,7 @@ class DependencyOperationsUnitTests {
|
||||
.collect(Collectors.toList());
|
||||
|
||||
DependencyUpgradeProposal proposal = DependencyOperations.getDependencyUpgradeProposal(Iteration.RC1,
|
||||
Dependencies.JUNIT5, DependencyVersion.of("5.7.1"), availableVersions);
|
||||
DependencyVersion.of("5.7.1"), availableVersions);
|
||||
|
||||
assertThat(proposal.getLatest()).extracting(DependencyVersion::getIdentifier).isEqualTo("5.7.1");
|
||||
assertThat(proposal.getProposal()).extracting(DependencyVersion::getIdentifier).isEqualTo("5.7.1");
|
||||
|
||||
Reference in New Issue
Block a user