From 9c56a167cdb3de1f3981dd1e988bb3069a2f37c5 Mon Sep 17 00:00:00 2001 From: Sergei Zharinov Date: Sun, 14 Nov 2021 17:35:27 +0300 Subject: [PATCH] fix(maven): Fetch latest when all releases are unstable (#12647) --- lib/datasource/maven/index.ts | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/datasource/maven/index.ts b/lib/datasource/maven/index.ts index acbc41ab7141f6..1a7e6d97acc4fe 100644 --- a/lib/datasource/maven/index.ts +++ b/lib/datasource/maven/index.ts @@ -28,13 +28,17 @@ function isStableVersion(x: string): boolean { return mavenVersion.isStable(x); } -function getLatestStableVersion(releases: Release[]): string | undefined { - return releases - .map(({ version }) => version) - .filter(isStableVersion) - .reduce((latestVersion, version) => - compare(version, latestVersion) === 1 ? version : latestVersion - ); +function getLatestSuitableVersion(releases: Release[]): string | null { + // istanbul ignore if + if (!releases?.length) { + return null; + } + const allVersions = releases.map(({ version }) => version); + const stableVersions = allVersions.filter(isStableVersion); + const versions = stableVersions.length ? stableVersions : allVersions; + return versions.reduce((latestVersion, version) => + compare(version, latestVersion) === 1 ? version : latestVersion + ); } function extractVersions(metadata: XmlDocument): string[] { @@ -261,10 +265,10 @@ export async function getReleases({ `Found ${releases.length} new releases for ${dependency.display} in repository ${repoUrl}` ); - const latestStableVersion = getLatestStableVersion(releases); + const latestSuitableVersion = getLatestSuitableVersion(releases); const dependencyInfo = - latestStableVersion && - (await getDependencyInfo(dependency, repoUrl, latestStableVersion)); + latestSuitableVersion && + (await getDependencyInfo(dependency, repoUrl, latestSuitableVersion)); return { ...dependency, ...dependencyInfo, releases }; }