Use current version if the queried repository does not contain the current version.

Closes #171.
This commit is contained in:
Mark Paluch
2021-02-16 15:12:01 +01:00
parent 4efa0f8e00
commit 0217dab41c
3 changed files with 23 additions and 21 deletions

View File

@@ -99,8 +99,7 @@ public class DependencyOperations {
DependencyVersion currentVersion = currentDependencies.get(dependency); DependencyVersion currentVersion = currentDependencies.get(dependency);
List<DependencyVersion> versions = getAvailableVersions(dependency); List<DependencyVersion> versions = getAvailableVersions(dependency);
DependencyUpgradeProposal proposal = getDependencyUpgradeProposal(iteration, dependency, currentVersion, DependencyUpgradeProposal proposal = getDependencyUpgradeProposal(iteration, currentVersion, versions);
versions);
proposals.put(dependency, proposal); proposals.put(dependency, proposal);
}); });
@@ -234,19 +233,23 @@ public class DependencyOperations {
} }
protected static DependencyUpgradeProposal getDependencyUpgradeProposal(Iteration iteration, 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); Optional<DependencyVersion> latestMinor = findLatestMinor(iteration, currentVersion, allVersions);
DependencyVersion latest = findLatest(iteration, allVersions); Optional<DependencyVersion> latest = findLatest(iteration, allVersions);
List<DependencyVersion> newerVersions = allVersions.stream() // List<DependencyVersion> newerVersions = allVersions.stream() //
.sorted() // .sorted() //
.filter(it -> it.compareTo(currentVersion) > 0) // .filter(it -> it.compareTo(currentVersion) > 0) //
.collect(Collectors.toList()); .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 -> { return availableVersions.stream().filter(it -> {
@@ -256,11 +259,10 @@ public class DependencyOperations {
return true; return true;
}).max(DependencyVersion::compareTo).orElseThrow( }).max(DependencyVersion::compareTo);
() -> new IllegalArgumentException("Cannot determine new latest version from " + availableVersions));
} }
private static DependencyVersion findLatestMinor(Iteration iteration, Dependency dependency, private static Optional<DependencyVersion> findLatestMinor(Iteration iteration,
DependencyVersion currentVersion, DependencyVersion currentVersion,
List<DependencyVersion> availableVersions) { List<DependencyVersion> availableVersions) {
@@ -285,11 +287,7 @@ public class DependencyOperations {
return false; return false;
}) // }) //
.max(DependencyVersion::compareTo) // .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())));
} }
DependencyVersions getCurrentDependencies(Project project) { DependencyVersions getCurrentDependencies(Project project) {

View File

@@ -107,6 +107,10 @@ class DependencyVersion implements Comparable<DependencyVersion> {
throw new IllegalArgumentException(String.format("Cannot parse version identifier %s", identifier)); throw new IllegalArgumentException(String.format("Cannot parse version identifier %s", identifier));
} }
public boolean isNewer(DependencyVersion other) {
return this.compareTo(other) > 0;
}
@Override @Override
public int compareTo(DependencyVersion o) { public int compareTo(DependencyVersion o) {

View File

@@ -41,7 +41,7 @@ class DependencyOperationsUnitTests {
.collect(Collectors.toList()); .collect(Collectors.toList());
DependencyUpgradeProposal proposal = DependencyOperations.getDependencyUpgradeProposal(Iteration.SR1, 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.getCurrent()).isEqualTo(DependencyVersion.of("5.7.0"));
assertThat(proposal.getLatestMinor()).isEqualTo(DependencyVersion.of("5.7.0")); assertThat(proposal.getLatestMinor()).isEqualTo(DependencyVersion.of("5.7.0"));
@@ -58,7 +58,7 @@ class DependencyOperationsUnitTests {
.collect(Collectors.toList()); .collect(Collectors.toList());
DependencyUpgradeProposal proposal = DependencyOperations.getDependencyUpgradeProposal(Iteration.SR1, 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.getCurrent()).isEqualTo(DependencyVersion.of("5.7.0"));
assertThat(proposal.getLatestMinor()).isEqualTo(DependencyVersion.of("5.7.1")); assertThat(proposal.getLatestMinor()).isEqualTo(DependencyVersion.of("5.7.1"));
@@ -75,7 +75,7 @@ class DependencyOperationsUnitTests {
.collect(Collectors.toList()); .collect(Collectors.toList());
DependencyUpgradeProposal proposal = DependencyOperations.getDependencyUpgradeProposal(Iteration.M1, 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.getCurrent()).isEqualTo(DependencyVersion.of("5.7.0"));
assertThat(proposal.getLatestMinor()).isEqualTo(DependencyVersion.of("5.7.1")); assertThat(proposal.getLatestMinor()).isEqualTo(DependencyVersion.of("5.7.1"));
@@ -92,7 +92,7 @@ class DependencyOperationsUnitTests {
.collect(Collectors.toList()); .collect(Collectors.toList());
DependencyUpgradeProposal proposal = DependencyOperations.getDependencyUpgradeProposal(Iteration.SR1, 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", assertThat(proposal.getNewerVersions()).extracting(DependencyVersion::getIdentifier).containsExactly("5.7.2-M2",
"5.7.2", "5.8.0"); "5.7.2", "5.8.0");
@@ -107,7 +107,7 @@ class DependencyOperationsUnitTests {
.collect(Collectors.toList()); .collect(Collectors.toList());
DependencyUpgradeProposal proposal = DependencyOperations.getDependencyUpgradeProposal(Iteration.M1, 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.getLatest()).extracting(DependencyVersion::getIdentifier).isEqualTo("5.7.2-M2");
assertThat(proposal.getProposal()).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()); .collect(Collectors.toList());
DependencyUpgradeProposal proposal = DependencyOperations.getDependencyUpgradeProposal(Iteration.RC1, 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.getLatest()).extracting(DependencyVersion::getIdentifier).isEqualTo("5.7.1");
assertThat(proposal.getProposal()).extracting(DependencyVersion::getIdentifier).isEqualTo("5.7.1"); assertThat(proposal.getProposal()).extracting(DependencyVersion::getIdentifier).isEqualTo("5.7.1");