From 70d7e1ce6a914b736994166f98c09288080b3fe4 Mon Sep 17 00:00:00 2001 From: Kartik Raj Date: Thu, 8 Apr 2021 12:24:34 -0700 Subject: [PATCH 1/2] Do not run poetry env info -p to get the type for local poetry environment, get best effort type instead --- .../discovery/locators/services/poetry.ts | 6 +++--- .../envlayouts/poetry/project4/pyproject.toml | 14 +++++++++++++ .../locators/lowLevel/poetry.unit.test.ts | 20 ++++++------------- .../locators/poetryLocator.unit.test.ts | 17 ++-------------- 4 files changed, 25 insertions(+), 32 deletions(-) create mode 100644 src/test/pythonEnvironments/common/envlayouts/poetry/project4/pyproject.toml diff --git a/src/client/pythonEnvironments/discovery/locators/services/poetry.ts b/src/client/pythonEnvironments/discovery/locators/services/poetry.ts index 520958e71464..2f4128724877 100644 --- a/src/client/pythonEnvironments/discovery/locators/services/poetry.ts +++ b/src/client/pythonEnvironments/discovery/locators/services/poetry.ts @@ -69,9 +69,9 @@ async function isLocalPoetryEnvironment(interpreterPath: string): Promise"] + +[tool.poetry.dependencies] +python = "^3.5" + +[tool.poetry.dev-dependencies] + +[build-system] +requires = ["poetry-core>=1.0.0"] +build-backend = "poetry.core.masonry.api" diff --git a/src/test/pythonEnvironments/discovery/locators/lowLevel/poetry.unit.test.ts b/src/test/pythonEnvironments/discovery/locators/lowLevel/poetry.unit.test.ts index 4b1f5a727a38..0edd3eacf772 100644 --- a/src/test/pythonEnvironments/discovery/locators/lowLevel/poetry.unit.test.ts +++ b/src/test/pythonEnvironments/discovery/locators/lowLevel/poetry.unit.test.ts @@ -15,7 +15,7 @@ import { TEST_LAYOUT_ROOT } from '../../../common/commonTestConstants'; const testPoetryDir = path.join(TEST_LAYOUT_ROOT, 'poetry'); const project1 = path.join(testPoetryDir, 'project1'); -const project2 = path.join(testPoetryDir, 'project2'); +const project4 = path.join(testPoetryDir, 'project4'); const project3 = path.join(testPoetryDir, 'project3'); suite('isPoetryEnvironment Tests', () => { @@ -54,17 +54,9 @@ suite('isPoetryEnvironment Tests', () => { shellExecute = sinon.stub(externalDependencies, 'shellExecute'); getPythonSetting = sinon.stub(externalDependencies, 'getPythonSetting'); getPythonSetting.returns('poetry'); - shellExecute.callsFake((command: string, options: ShellOptions) => { - // eslint-disable-next-line default-case - switch (command) { - case 'poetry env list --full-path': - return Promise.resolve>({ stdout: '' }); - case 'poetry env info -p': - if (options.cwd && externalDependencies.arePathsSame(options.cwd, project1)) { - return Promise.resolve>({ - stdout: `${path.join(project1, '.venv')} \n`, - }); - } + shellExecute.callsFake((command: string, _options: ShellOptions) => { + if (command === 'poetry env list --full-path') { + return Promise.resolve>({ stdout: '' }); } return Promise.reject(new Error('Command failed')); }); @@ -84,8 +76,8 @@ suite('isPoetryEnvironment Tests', () => { expect(result).to.equal(false); }); - test(`Return false if running poetry for project dir as cwd fails`, async () => { - const result = await isPoetryEnvironment(path.join(project2, '.venv', 'bin', 'python')); + test(`Return false if running poetry for project dir as cwd fails (pyproject.toml file is invalid)`, async () => { + const result = await isPoetryEnvironment(path.join(project4, '.venv', 'bin', 'python')); expect(result).to.equal(false); }); }); diff --git a/src/test/pythonEnvironments/discovery/locators/poetryLocator.unit.test.ts b/src/test/pythonEnvironments/discovery/locators/poetryLocator.unit.test.ts index 4de56504e7f4..d26feb28e5fb 100644 --- a/src/test/pythonEnvironments/discovery/locators/poetryLocator.unit.test.ts +++ b/src/test/pythonEnvironments/discovery/locators/poetryLocator.unit.test.ts @@ -75,13 +75,7 @@ suite('Poetry Locator', () => { locator = new PoetryLocator(project1); getOSTypeStub.returns(platformUtils.OSType.Windows); shellExecute.callsFake((command: string, options: ShellOptions) => { - if (command === 'poetry env info -p') { - if (options.cwd && externalDependencies.arePathsSame(options.cwd, project1)) { - return Promise.resolve>({ - stdout: `${path.join(project1, '.venv')} \n`, - }); - } - } else if (command === 'poetry env list --full-path') { + if (command === 'poetry env list --full-path') { if (options.cwd && externalDependencies.arePathsSame(options.cwd, project1)) { return Promise.resolve>({ stdout: `${path.join(testPoetryDir, 'poetry-tutorial-project-6hnqYwvD-py3.8')} \n @@ -214,14 +208,7 @@ suite('Poetry Locator', () => { locator = new PoetryLocator(project2); getOSTypeStub.returns(platformUtils.OSType.Linux); shellExecute.callsFake((command: string, options: ShellOptions) => { - // eslint-disable-next-line default-case - if (command === 'poetry env info -p') { - if (options.cwd && externalDependencies.arePathsSame(options.cwd, project2)) { - return Promise.resolve>({ - stdout: `${path.join(project2, '.venv')} \n`, - }); - } - } else if (command === 'poetry env list --full-path') { + if (command === 'poetry env list --full-path') { if (options.cwd && externalDependencies.arePathsSame(options.cwd, project2)) { return Promise.resolve>({ stdout: `${path.join(testPoetryDir, 'posix1project-9hvDnqYw-py3.4')} (Activated)\n From 1b0a390a46eaddba6129dae7ff5ec20cce5d7813 Mon Sep 17 00:00:00 2001 From: Kartik Raj Date: Fri, 9 Apr 2021 10:38:00 -0700 Subject: [PATCH 2/2] Update src/test/pythonEnvironments/common/envlayouts/poetry/project4/pyproject.toml Co-authored-by: Karthik Nadig --- .../common/envlayouts/poetry/project4/pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/pythonEnvironments/common/envlayouts/poetry/project4/pyproject.toml b/src/test/pythonEnvironments/common/envlayouts/poetry/project4/pyproject.toml index 4ef9f2fcdf00..627d86251d86 100644 --- a/src/test/pythonEnvironments/common/envlayouts/poetry/project4/pyproject.toml +++ b/src/test/pythonEnvironments/common/envlayouts/poetry/project4/pyproject.toml @@ -2,7 +2,6 @@ name = "poetry-tutorial-project" version = "0.1.0" description = "" -authors = ["PVSC "] [tool.poetry.dependencies] python = "^3.5"