diff --git a/lib/modules/manager/composer/utils.spec.ts b/lib/modules/manager/composer/utils.spec.ts index 5cb469118628f914f86012994264c2457702d2ad..4f2e0fd5ff76aa3a10f3a8cce4a356888044b45b 100644 --- a/lib/modules/manager/composer/utils.spec.ts +++ b/lib/modules/manager/composer/utils.spec.ts @@ -27,7 +27,55 @@ describe('modules/manager/composer/utils', () => { }, {} ) - ).toEqual({ composer: '1.*', php: '7.4.27' }); + ).toEqual({ composer: '1.*', php: '<=7.4.27' }); + }); + + it('returns platform 0 minor php version', () => { + expect( + extractConstraints( + { + config: { platform: { php: '7.0.5' } }, + require: { php: '^7.0 || ~8.0' }, + }, + {} + ) + ).toEqual({ composer: '1.*', php: '<=7.0.5' }); + }); + + it('returns platform 0 patch php version', () => { + expect( + extractConstraints( + { + config: { platform: { php: '7.4.0' } }, + require: { php: '^7.0 || ~8.0' }, + }, + {} + ) + ).toEqual({ composer: '1.*', php: '<=7.4.0' }); + }); + + it('returns platform lowest minor php version', () => { + expect( + extractConstraints( + { + config: { platform: { php: '7' } }, + require: { php: '^7.0 || ~8.0' }, + }, + {} + ) + ).toEqual({ composer: '1.*', php: '<=7.0.0' }); + }); + + it('returns platform lowest patch php version', () => { + expect( + extractConstraints( + { + config: { platform: { php: '7.4' } }, + require: { php: '~7.4 || ~8.0' }, + }, + {} + ) + ).toEqual({ composer: '1.*', php: '<=7.4.0' }); }); it('returns from require-dev', () => { diff --git a/lib/modules/manager/composer/utils.ts b/lib/modules/manager/composer/utils.ts index 166d4c5ee74924f64cf79c54f561cf98e8418b23..3571196ad30ae71abd787cdcc94c624bc9bcccb9 100644 --- a/lib/modules/manager/composer/utils.ts +++ b/lib/modules/manager/composer/utils.ts @@ -75,7 +75,10 @@ export function extractConstraints( // extract php if (composerJson.config?.platform?.php) { - res.php = composerJson.config.platform.php; + const major = api.getMajor(composerJson.config.platform.php); + const minor = api.getMinor(composerJson.config.platform.php) ?? 0; + const patch = api.getPatch(composerJson.config.platform.php) ?? 0; + res.php = `<=${major}.${minor}.${patch}`; } else if (composerJson.require?.php) { res.php = composerJson.require.php; }