From 747f40aeab7bcfe6a7a3d27359029bef4bc6c1d2 Mon Sep 17 00:00:00 2001 From: eleanorjboyd Date: Fri, 3 Feb 2023 13:24:49 -0800 Subject: [PATCH 1/2] change conda parsing to regex --- .../common/environmentManagers/conda.ts | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/client/pythonEnvironments/common/environmentManagers/conda.ts b/src/client/pythonEnvironments/common/environmentManagers/conda.ts index 969387f53a79..bb5720a15312 100644 --- a/src/client/pythonEnvironments/common/environmentManagers/conda.ts +++ b/src/client/pythonEnvironments/common/environmentManagers/conda.ts @@ -1,6 +1,6 @@ import * as fsapi from 'fs-extra'; import * as path from 'path'; -import { lt, parse, SemVer } from 'semver'; +import { lt, SemVer } from 'semver'; import { getEnvironmentVariable, getOSType, getUserHomeDir, OSType } from '../../../common/utils/platform'; import { arePathsSame, @@ -552,9 +552,15 @@ export class Conda { if (!versionString) { return undefined; } - const version = parse(versionString, true); - if (version) { - return version; + const pattern = /(?\d+)\.(?\d+)\.(?\d+)(?:.*)?/; + const match = versionString.match(pattern); + if (match && match.groups) { + const versionStringParsed = match.groups.major.concat('.', match.groups.minor, '.', match.groups.micro); + + const semVarVersion: SemVer = new SemVer(versionStringParsed); + if (semVarVersion) { + return semVarVersion; + } } // Use a bogus version, at least to indicate the fact that a version was returned. // This ensures we still use conda for activation, installation etc. From a645b3345a0f9e87b7a8460817552d1ba23f2583 Mon Sep 17 00:00:00 2001 From: eleanorjboyd Date: Thu, 9 Feb 2023 13:38:56 -0800 Subject: [PATCH 2/2] add test for conda versioning --- .../common/environmentManagers/conda.unit.test.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/test/pythonEnvironments/common/environmentManagers/conda.unit.test.ts b/src/test/pythonEnvironments/common/environmentManagers/conda.unit.test.ts index 845fb7dee88c..ca0e24d5f3d3 100644 --- a/src/test/pythonEnvironments/common/environmentManagers/conda.unit.test.ts +++ b/src/test/pythonEnvironments/common/environmentManagers/conda.unit.test.ts @@ -491,6 +491,17 @@ suite('Conda and its environments are located correctly', () => { expect(eq(version!, '4.8.0')).to.equal(true); }); + test('Conda version works for dev versions of conda', async () => { + files = { + conda: JSON.stringify(condaInfo('23.1.0.post7+d5281f611')), + }; + condaVersionOutput = 'conda 23.1.0.post7+d5281f611'; + const conda = await Conda.getConda(); + const version = await conda?.getCondaVersion(); + expect(version).to.not.equal(undefined); + expect(eq(version!, '23.1.0')).to.equal(true); + }); + test('Conda run args returns `undefined` for conda version below 4.9.0', async () => { files = { conda: JSON.stringify(condaInfo('4.8.0')),