diff --git a/lib/modules/datasource/common.spec.ts b/lib/modules/datasource/common.spec.ts index 703283f9c0e4a7069221e1e1023e7b02c8e66169..a86c6a2d3f43de62ec1a778d67aa438bf4f8e6ef 100644 --- a/lib/modules/datasource/common.spec.ts +++ b/lib/modules/datasource/common.spec.ts @@ -226,6 +226,25 @@ describe('modules/datasource/common', () => { releases: [{ version: '1.0.0' }, { version: '2.0.0' }], }); }); + + it('should match exact constraints', () => { + const config = { + datasource: 'pypi', + packageName: 'bar', + versioning: 'pep440', + constraintsFiltering: 'strict' as const, + constraints: { python: '>=3.8' }, + }; + const releaseResult = { + releases: [ + { version: '1.0.0', constraints: { python: ['^1.0.0'] } }, + { version: '2.0.0', constraints: { python: ['>=3.8'] } }, + ], + }; + expect(applyConstraintsFiltering(releaseResult, config)).toEqual({ + releases: [{ version: '2.0.0' }], + }); + }); }); describe('applyVersionCompatibility', () => { diff --git a/lib/modules/datasource/common.ts b/lib/modules/datasource/common.ts index 6b952da4f49ac733f8468723793a393900464275..efda4b39c46799ef254b321ac03b6b65228045f6 100644 --- a/lib/modules/datasource/common.ts +++ b/lib/modules/datasource/common.ts @@ -208,6 +208,11 @@ export function applyConstraintsFiltering< break; } + if (configConstraint === releaseConstraint) { + satisfiesConstraints = true; + break; + } + if (versioning.subset?.(configConstraint, releaseConstraint)) { satisfiesConstraints = true; break;