Skip to content

Commit 5eacc5e

Browse files
authoredJul 7, 2024··
fix: Use versioning comparison for release lookup filtering (#30059)
1 parent 06349b9 commit 5eacc5e

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed
 

‎lib/workers/repository/process/lookup/filter.spec.ts

+29
Original file line numberDiff line numberDiff line change
@@ -81,5 +81,34 @@ describe('workers/repository/process/lookup/filter', () => {
8181

8282
expect(filteredVersions).toEqual([{ version: '1.2.3-beta' }]);
8383
});
84+
85+
it('ignores version insufficient prefixes', () => {
86+
const releases = [
87+
{ version: '1.0.1' },
88+
{ version: '1.2.0' },
89+
{ version: '2.0.0', isDeprecated: true },
90+
{ version: '2.1.0' },
91+
] satisfies Release[];
92+
93+
const config = partial<FilterConfig>({
94+
ignoreUnstable: true,
95+
ignoreDeprecated: true,
96+
});
97+
const currentVersion = 'v1.0.1';
98+
const latestVersion = 'v2.0.0';
99+
100+
const filteredVersions = filterVersions(
101+
config,
102+
currentVersion,
103+
latestVersion,
104+
releases,
105+
versioning,
106+
);
107+
108+
expect(filteredVersions).toEqual([
109+
{ version: '1.2.0' },
110+
{ version: '2.1.0' },
111+
]);
112+
});
84113
});
85114
});

‎lib/workers/repository/process/lookup/filter.ts

+8-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,14 @@ export function filterVersions(
4343
versioning.isGreaterThan(r.version, currentVersion),
4444
);
4545

46-
const currentRelease = releases.find((r) => r.version === currentVersion);
46+
const currentRelease = releases.find(
47+
(r) =>
48+
versioning.isValid(r.version) &&
49+
versioning.isVersion(r.version) &&
50+
versioning.isValid(currentVersion) &&
51+
versioning.isVersion(currentVersion) &&
52+
versioning.equals(r.version, currentVersion),
53+
);
4754

4855
// Don't upgrade from non-deprecated to deprecated
4956
if (ignoreDeprecated && currentRelease && !currentRelease.isDeprecated) {

0 commit comments

Comments
 (0)
Please sign in to comment.