Skip to content

Commit

Permalink
fix(datasource): Check release constraints validity (#27191)
Browse files Browse the repository at this point in the history
  • Loading branch information
zharinov committed Feb 12, 2024
1 parent 656210b commit 726e3e4
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 10 deletions.
4 changes: 2 additions & 2 deletions lib/modules/datasource/common.spec.ts
Expand Up @@ -218,8 +218,8 @@ describe('modules/datasource/common', () => {
const releaseResult = {
releases: [
{ version: '1.0.0' },
{ version: '2.0.0', constraints: {} as never },
{ version: '3.0.0', constraints: { baz: ['^0.9.0'] } },
{ version: '2.0.0', constraints: { baz: [undefined] } as never },
{ version: '3.0.0', constraints: { baz: ['^0.9.0', 'invalid'] } },
],
};
expect(applyConstraintsFiltering(releaseResult, config)).toEqual({
Expand Down
45 changes: 37 additions & 8 deletions lib/modules/datasource/common.ts
Expand Up @@ -181,14 +181,43 @@ export function applyConstraintsFiltering<
continue;
}

const satisfiesConstraints = constraint.some(
// If the constraint value is a subset of any release's constraints, then it's OK
// fallback to release's constraint match if subset is not supported by versioning
(releaseConstraint) =>
!releaseConstraint ||
(versioning.subset?.(configConstraint, releaseConstraint) ??
versioning.matches(configConstraint, releaseConstraint)),
);
let satisfiesConstraints = false;
for (const releaseConstraint of constraint) {
if (!releaseConstraint) {
satisfiesConstraints = true;
logger.once.debug(
{
packageName: config.packageName,
versioning: versioningName,
constraint: releaseConstraint,
},
'Undefined release constraint',
);
break;
}

if (!versioning.isValid(releaseConstraint)) {
logger.once.debug(
{
packageName: config.packageName,
versioning: versioningName,
constraint: releaseConstraint,
},
'Invalid release constraint',
);
break;
}

if (versioning.subset?.(configConstraint, releaseConstraint)) {
satisfiesConstraints = true;
break;
}

if (versioning.matches(configConstraint, releaseConstraint)) {
satisfiesConstraints = true;
break;
}
}

if (!satisfiesConstraints) {
filteredReleases.push(release.version);
Expand Down

0 comments on commit 726e3e4

Please sign in to comment.