From d8d26a1abafd5c2776dd6563d9e60e074e1514df Mon Sep 17 00:00:00 2001 From: Adam Horacek <adam.horacek@gmail.com> Date: Tue, 2 Feb 2021 10:39:26 +0100 Subject: [PATCH] fix(pip_setup): pick latest installed python version (#8491) --- data/extract.py | 3 +- .../__snapshots__/index.spec.ts.snap | 72 +++++-------------- lib/manager/pip_setup/extract.spec.ts | 1 + lib/manager/pip_setup/extract.ts | 3 +- lib/manager/pip_setup/index.spec.ts | 7 +- 5 files changed, 26 insertions(+), 60 deletions(-) diff --git a/data/extract.py b/data/extract.py index fcd98b2aea..15cdd34421 100644 --- a/data/extract.py +++ b/data/extract.py @@ -1,7 +1,6 @@ import sys import json import os -import distutils.core from os.path import basename if sys.version_info[:2] >= (3, 3): @@ -24,6 +23,8 @@ except ImportError: def setup(): pass +import distutils.core + try: from unittest import mock except ImportError: diff --git a/lib/manager/pip_setup/__snapshots__/index.spec.ts.snap b/lib/manager/pip_setup/__snapshots__/index.spec.ts.snap index b6ddf4d852..90739759f1 100644 --- a/lib/manager/pip_setup/__snapshots__/index.spec.ts.snap +++ b/lib/manager/pip_setup/__snapshots__/index.spec.ts.snap @@ -56,6 +56,24 @@ Array [ "timeout": 900000, }, }, + Object { + "cmd": "python3.9 --version", + "options": Object { + "cwd": "/tmp/github/some/repo", + "encoding": "utf-8", + "env": Object { + "HOME": "/home/user", + "HTTPS_PROXY": "https://example.com", + "HTTP_PROXY": "http://example.com", + "LANG": "en_US.UTF-8", + "LC_ALL": "en_US", + "NO_PROXY": "localhost", + "PATH": "/tmp/path", + }, + "maxBuffer": 10485760, + "timeout": 900000, + }, + }, Object { "cmd": "<extract.py> \\"folders/foobar.py\\"", "options": Object { @@ -371,24 +389,6 @@ Array [ "timeout": 900000, }, }, - Object { - "cmd": "python3.8 --version", - "options": Object { - "cwd": "/tmp/github/some/repo", - "encoding": "utf-8", - "env": Object { - "HOME": "/home/user", - "HTTPS_PROXY": "https://example.com", - "HTTP_PROXY": "http://example.com", - "LANG": "en_US.UTF-8", - "LC_ALL": "en_US", - "NO_PROXY": "localhost", - "PATH": "/tmp/path", - }, - "maxBuffer": 10485760, - "timeout": 900000, - }, - }, Object { "cmd": "<extract.py> \\"lib/manager/pip_setup/__fixtures__/setup.py\\"", "options": Object { @@ -448,24 +448,6 @@ Array [ "timeout": 900000, }, }, - Object { - "cmd": "python3.8 --version", - "options": Object { - "cwd": "/tmp/github/some/repo", - "encoding": "utf-8", - "env": Object { - "HOME": "/home/user", - "HTTPS_PROXY": "https://example.com", - "HTTP_PROXY": "http://example.com", - "LANG": "en_US.UTF-8", - "LC_ALL": "en_US", - "NO_PROXY": "localhost", - "PATH": "/tmp/path", - }, - "maxBuffer": 10485760, - "timeout": 900000, - }, - }, Object { "cmd": "<extract.py> \\"lib/manager/pip_setup/__fixtures__/setup.py\\"", "options": Object { @@ -525,24 +507,6 @@ Array [ "timeout": 900000, }, }, - Object { - "cmd": "python3.8 --version", - "options": Object { - "cwd": "/tmp/github/some/repo", - "encoding": "utf-8", - "env": Object { - "HOME": "/home/user", - "HTTPS_PROXY": "https://example.com", - "HTTP_PROXY": "http://example.com", - "LANG": "en_US.UTF-8", - "LC_ALL": "en_US", - "NO_PROXY": "localhost", - "PATH": "/tmp/path", - }, - "maxBuffer": 10485760, - "timeout": 900000, - }, - }, Object { "cmd": "<extract.py> \\"folders/foobar.py\\"", "options": Object { diff --git a/lib/manager/pip_setup/extract.spec.ts b/lib/manager/pip_setup/extract.spec.ts index d2fff37884..daee26c623 100644 --- a/lib/manager/pip_setup/extract.spec.ts +++ b/lib/manager/pip_setup/extract.spec.ts @@ -29,6 +29,7 @@ describe(getName(__filename), () => { { stdout: '', stderr: 'Python 2.7.17\\n' }, new Error(), { stdout: 'Python 3.8.0\\n', stderr: '' }, + new Error(), ]); const result = await getPythonAlias(); expect(pythonVersions).toContain(result); diff --git a/lib/manager/pip_setup/extract.ts b/lib/manager/pip_setup/extract.ts index 7fccd05ade..79f93a902b 100644 --- a/lib/manager/pip_setup/extract.ts +++ b/lib/manager/pip_setup/extract.ts @@ -8,7 +8,7 @@ import { ExtractConfig, PackageDependency, PackageFile } from '../common'; import { dependencyPattern } from '../pip_requirements/extract'; import { PythonSetup, getExtractFile, parseReport } from './util'; -export const pythonVersions = ['python', 'python3', 'python3.8']; +export const pythonVersions = ['python', 'python3', 'python3.8', 'python3.9']; let pythonAlias: string | null = null; export function resetModule(): void { @@ -31,6 +31,7 @@ export async function getPythonAlias(): Promise<string> { const version = parsePythonVersion(stdout || stderr); if (version[0] >= 3 && version[1] >= 7) { pythonAlias = pythonVersion; + break; } } catch (err) { logger.debug(`${pythonVersion} alias not found`); diff --git a/lib/manager/pip_setup/index.spec.ts b/lib/manager/pip_setup/index.spec.ts index 09d58f3d5a..b5cd418f0c 100644 --- a/lib/manager/pip_setup/index.spec.ts +++ b/lib/manager/pip_setup/index.spec.ts @@ -30,7 +30,6 @@ jest.mock('../../util/exec/env'); const pythonVersionCallResults = [ { stdout: '', stderr: 'Python 2.7.17\\n' }, { stdout: 'Python 3.7.5\\n', stderr: '' }, - new Error(), ]; // TODO: figure out snapshot similarity for each CI platform @@ -67,7 +66,7 @@ describe(getName(__filename), () => { expect( await extractPackageFile(content, packageFile, config) ).toMatchSnapshot(); - expect(exec).toHaveBeenCalledTimes(4); + expect(exec).toHaveBeenCalledTimes(3); expect(fixSnapshots(execSnapshots)).toMatchSnapshot(); }); @@ -96,7 +95,7 @@ describe(getName(__filename), () => { ]); jest.spyOn(fs, 'readLocalFile').mockResolvedValueOnce('{}'); expect(await extractPackageFile(content, packageFile, config)).toBeNull(); - expect(exec).toHaveBeenCalledTimes(4); + expect(exec).toHaveBeenCalledTimes(3); expect(fixSnapshots(execSnapshots)).toMatchSnapshot(); }); @@ -112,7 +111,7 @@ describe(getName(__filename), () => { config ) ).toBeNull(); - expect(exec).toHaveBeenCalledTimes(4); + expect(exec).toHaveBeenCalledTimes(3); expect(fixSnapshots(execSnapshots)).toMatchSnapshot(); }); it('catches error', async () => { -- GitLab