diff --git a/lib/modules/manager/poetry/artifacts.spec.ts b/lib/modules/manager/poetry/artifacts.spec.ts index 4af0295f499938f889a4cc0fc01c1faef5e64660..7ca281a043d5ccd8aa3620566a1982f4bfeed648 100644 --- a/lib/modules/manager/poetry/artifacts.spec.ts +++ b/lib/modules/manager/poetry/artifacts.spec.ts @@ -240,6 +240,10 @@ describe('modules/manager/poetry/artifacts', () => { datasource.getPkgReleases.mockResolvedValueOnce({ releases: [{ version: '2.7.5' }, { version: '3.4.2' }], }); + // poetry + datasource.getPkgReleases.mockResolvedValueOnce({ + releases: [{ version: '1.2.0' }], + }); const updatedDeps = [{ depName: 'dep1' }]; expect( await updateArtifacts({ @@ -278,7 +282,7 @@ describe('modules/manager/poetry/artifacts', () => { 'bash -l -c "' + 'install-tool python 3.4.2 ' + '&& ' + - "pip install --user 'poetry>=1.0' " + + 'install-tool poetry 1.2.0 ' + '&& ' + 'poetry update --lock --no-interaction dep1' + '"', @@ -301,6 +305,10 @@ describe('modules/manager/poetry/artifacts', () => { datasource.getPkgReleases.mockResolvedValueOnce({ releases: [{ version: '2.7.5' }, { version: '3.3.2' }], }); + // poetry + datasource.getPkgReleases.mockResolvedValueOnce({ + releases: [{ version: '1.0.0' }, { version: '1.2.0' }], + }); const updatedDeps = [{ depName: 'dep1' }]; expect( await updateArtifacts({ @@ -337,7 +345,7 @@ describe('modules/manager/poetry/artifacts', () => { 'bash -l -c "' + 'install-tool python 2.7.5 ' + '&& ' + - "pip install --user 'poetry>=1.0' " + + 'install-tool poetry 1.2.0 ' + '&& ' + 'poetry update --lock --no-interaction dep1' + '"', @@ -358,6 +366,10 @@ describe('modules/manager/poetry/artifacts', () => { datasource.getPkgReleases.mockResolvedValueOnce({ releases: [{ version: '2.7.5' }, { version: '3.3.2' }], }); + // poetry + datasource.getPkgReleases.mockResolvedValueOnce({ + releases: [{ version: '1.2.0' }], + }); const updatedDeps = [{ depName: 'dep1' }]; expect( await updateArtifacts({ @@ -381,7 +393,7 @@ describe('modules/manager/poetry/artifacts', () => { expect(execSnapshots).toMatchObject([ { cmd: 'install-tool python 2.7.5' }, - { cmd: "pip install --user 'poetry>=1.0'" }, + { cmd: 'install-tool poetry 1.2.0' }, { cmd: 'poetry update --lock --no-interaction dep1' }, ]); }); diff --git a/lib/modules/manager/poetry/artifacts.ts b/lib/modules/manager/poetry/artifacts.ts index 56a1dab6d23eff5cb9cff93729f80cb6d69c021e..bb2a1b42b6315d42923ce2c8478086b8c99af2ef 100644 --- a/lib/modules/manager/poetry/artifacts.ts +++ b/lib/modules/manager/poetry/artifacts.ts @@ -173,8 +173,11 @@ export async function updateArtifacts({ .join(' ')}` ); } - const constraint = getPythonConstraint(existingLockFileContent, config); - const poetryVersion = + const pythonConstraint = getPythonConstraint( + existingLockFileContent, + config + ); + const poetryConstraint = config.constraints?.poetry ?? getPoetryRequirement(newPackageFileContent); const extraEnv = { ...getSourceCredentialVars(newPackageFileContent, packageFileName), @@ -185,9 +188,9 @@ export async function updateArtifacts({ cwdFile: packageFileName, extraEnv, docker: {}, - toolConstraints: [{ toolName: 'python', constraint }], - preCommands: [ - `pip install --user ${quote(`poetry${poetryVersion ?? ''}`)}`, + toolConstraints: [ + { toolName: 'python', constraint: pythonConstraint }, + { toolName: 'poetry', constraint: poetryConstraint }, ], }; await exec(cmd, execOptions);