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);
|
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) {
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|
||||||
|
|||||||
@@ -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");
|
||||||
|
|||||||
Reference in New Issue
Block a user