Polishing.

Avoid fallback to latest available version if current version is not reported in dependency list.

See #195
This commit is contained in:
Mark Paluch
2021-10-06 10:41:25 +02:00
parent b8c136bc74
commit b6464e0e6d
2 changed files with 46 additions and 5 deletions

View File

@@ -405,17 +405,44 @@ public class DependencyOperations {
DependencyVersion latestToUse = latest.filter(it -> it.isNewer(currentVersion)).orElse(currentVersion);
return DependencyUpgradeProposal.of(policy, currentVersion, latestMinor.orElse(latestToUse), latestToUse,
DependencyVersion latestMinorFallback = latest
.filter(it -> isUpgradeable(policy, it, currentVersion) && it.isNewer(currentVersion)).orElse(currentVersion);
return DependencyUpgradeProposal.of(policy, currentVersion, latestMinor.orElse(latestMinorFallback), latestToUse,
newerVersions);
}
private static boolean isUpgradeable(DependencyUpgradePolicy policy, DependencyVersion proposal,
DependencyVersion currentVersion) {
if (policy.restrictToMinorVersion()) {
if (proposal.getTrainName() != null && currentVersion.getTrainName() != null) {
return proposal.getTrainName().equals(currentVersion.getTrainName());
}
if (proposal.getVersion().getMajor() == currentVersion.getVersion().getMajor()
&& proposal.getVersion().getMinor() == currentVersion.getVersion().getMinor()) {
return true;
}
return false;
}
if (StringUtils.hasText(proposal.getModifier())) {
return policy.milestoneAllowed();
}
return true;
}
private static Optional<DependencyVersion> findLatest(DependencyUpgradePolicy policy,
List<DependencyVersion> availableVersions) {
return availableVersions.stream().filter(it -> {
if (!policy.milestoneAllowed() && StringUtils.hasText(it.getModifier())) {
return false;
if (StringUtils.hasText(it.getModifier())) {
return policy.milestoneAllowed();
}
return true;
@@ -429,8 +456,8 @@ public class DependencyOperations {
return availableVersions.stream().filter(it -> {
if (policy.milestoneAllowed() && StringUtils.hasText(it.getModifier())) {
return true;
if (StringUtils.hasText(it.getModifier())) {
return policy.milestoneAllowed();
}
if (it.getVersion() == null || currentVersion.getVersion() == null) {

View File

@@ -103,6 +103,20 @@ class DependencyOperationsUnitTests {
assertThat(proposal.getProposal()).extracting(DependencyVersion::getIdentifier).isEqualTo("5.7.2");
}
@Test
void shouldNotReportMajorVersionForServiceRelease() {
List<DependencyVersion> availableVersions = Stream.of("5.0.0") //
.map(DependencyVersion::of) //
.collect(Collectors.toList());
DependencyUpgradeProposal proposal = DependencyOperations.getDependencyUpgradeProposal(
DependencyUpgradePolicy.from(Iteration.SR1), DependencyVersion.of("4.1"), availableVersions);
assertThat(proposal.getNewerVersions()).extracting(DependencyVersion::getIdentifier).containsExactly("5.0.0");
assertThat(proposal.getProposal()).extracting(DependencyVersion::getIdentifier).isEqualTo("4.1");
}
@Test
void shouldReportMilestoneVersionForMilestoneIteration() {