From 2bc0c8de430205772ecbcf736efd30074e87c166 Mon Sep 17 00:00:00 2001 From: "Ilya.Kazakevich" Date: Fri, 7 Jul 2017 17:48:54 +0300 Subject: [PATCH] Test fix: disable conda-specific logic when getting list of packages See PyExecutionFixtureTestTask comment --- .../jetbrains/env/PyExecutionFixtureTestTask.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/python/testSrc/com/jetbrains/env/PyExecutionFixtureTestTask.java b/python/testSrc/com/jetbrains/env/PyExecutionFixtureTestTask.java index c98ebe9dcd73..92fdfdbbe785 100644 --- a/python/testSrc/com/jetbrains/env/PyExecutionFixtureTestTask.java +++ b/python/testSrc/com/jetbrains/env/PyExecutionFixtureTestTask.java @@ -20,6 +20,8 @@ import com.intellij.testFramework.fixtures.impl.ModuleFixtureImpl; import com.jetbrains.extensions.ModuleExtKt; import com.jetbrains.python.PythonModuleTypeBase; import com.jetbrains.python.PythonTestUtil; +import com.jetbrains.python.packaging.PyCondaPackageManagerImpl; +import com.jetbrains.python.packaging.PyPackageManager; import com.jetbrains.python.psi.LanguageLevel; import com.jetbrains.python.sdk.InvalidSdkException; import com.jetbrains.python.sdk.PythonSdkType; @@ -241,7 +243,17 @@ public abstract class PyExecutionFixtureTestTask extends PyTestTask { throws InvalidSdkException, IOException { final VirtualFile sdkHomeFile = LocalFileSystem.getInstance().findFileByPath(sdkHome); Assert.assertNotNull("Interpreter file not found: " + sdkHome, sdkHomeFile); - return PyTestSdkTools.createTempSdk(sdkHomeFile, sdkCreationType, myFixture.getModule()); + final Sdk sdk = PyTestSdkTools.createTempSdk(sdkHomeFile, sdkCreationType, myFixture.getModule()); + // We use gradle script to create environment. This script utilizes Conda. + // Conda supports 2 types of package installation: conda native and pip. We use pip. + // PyCharm Conda support ignores packages installed via pip ("conda list -e" does it, see PyCondaPackageManagerImpl) + // So we need to either fix gradle (PythonEnvsPlugin.groovy on github) or use helper instead of "conda list" to get all packages + // We do the latter. + final PyPackageManager packageManager = PyPackageManager.getInstance(sdk); + if (packageManager instanceof PyCondaPackageManagerImpl) { + ((PyCondaPackageManagerImpl)packageManager).useConda = false; + } + return sdk; }