From 94cfaecef23dd28609cf038599b907704c7a7562 Mon Sep 17 00:00:00 2001 From: Gary Lockett <gary@creativecow.uk> Date: Mon, 29 Aug 2022 07:31:33 +0100 Subject: [PATCH] fix(manager/composer): match composer's handling of the patch number for platform PHP version (#17299) Signed-off-by: Gary Lockett <gary@creativecow.uk> --- lib/modules/manager/composer/utils.spec.ts | 50 +++++++++++++++++++++- lib/modules/manager/composer/utils.ts | 5 ++- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/lib/modules/manager/composer/utils.spec.ts b/lib/modules/manager/composer/utils.spec.ts index 5cb4691186..4f2e0fd5ff 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 166d4c5ee7..3571196ad3 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; } -- GitLab