Polishing.
Avoid fallback to latest available version if current version is not reported in dependency list. See #195
This commit is contained in:
@@ -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) {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
|
||||
Reference in New Issue
Block a user