Skip to content
Snippets Groups Projects
Unverified Commit 726e3e4e authored by Sergei Zharinov's avatar Sergei Zharinov Committed by GitHub
Browse files

fix(datasource): Check release constraints validity (#27191)

parent 656210bb
Branches
Tags 39.140.3
No related merge requests found
...@@ -218,8 +218,8 @@ describe('modules/datasource/common', () => { ...@@ -218,8 +218,8 @@ describe('modules/datasource/common', () => {
const releaseResult = { const releaseResult = {
releases: [ releases: [
{ version: '1.0.0' }, { version: '1.0.0' },
{ version: '2.0.0', constraints: {} as never }, { version: '2.0.0', constraints: { baz: [undefined] } as never },
{ version: '3.0.0', constraints: { baz: ['^0.9.0'] } }, { version: '3.0.0', constraints: { baz: ['^0.9.0', 'invalid'] } },
], ],
}; };
expect(applyConstraintsFiltering(releaseResult, config)).toEqual({ expect(applyConstraintsFiltering(releaseResult, config)).toEqual({
......
...@@ -181,14 +181,43 @@ export function applyConstraintsFiltering< ...@@ -181,14 +181,43 @@ export function applyConstraintsFiltering<
continue; continue;
} }
const satisfiesConstraints = constraint.some( let satisfiesConstraints = false;
// If the constraint value is a subset of any release's constraints, then it's OK for (const releaseConstraint of constraint) {
// fallback to release's constraint match if subset is not supported by versioning if (!releaseConstraint) {
(releaseConstraint) => satisfiesConstraints = true;
!releaseConstraint || logger.once.debug(
(versioning.subset?.(configConstraint, releaseConstraint) ?? {
versioning.matches(configConstraint, releaseConstraint)), 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) { if (!satisfiesConstraints) {
filteredReleases.push(release.version); filteredReleases.push(release.version);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment