[python] Fix env tests with conda.

If environment is conda, we must configure SDK in appropriate way (as bare python path is not enough for conda)

Also: no need to reset currently set additional data

GitOrigin-RevId: 663aa7f24cad138f2c06db711f6af602f68a780b
This commit is contained in:
Ilya.Kazakevich
2024-02-02 16:46:15 +01:00
committed by intellij-monorepo-bot
parent 009e71dbdb
commit dbe26ecab3
2 changed files with 7 additions and 3 deletions

View File

@@ -11,6 +11,7 @@ import com.jetbrains.python.sdk.flavors.conda.CondaEnvSdkFlavor
import com.jetbrains.python.sdk.flavors.conda.PyCondaEnv
import com.jetbrains.python.sdk.flavors.conda.PyCondaEnvIdentity
import com.jetbrains.python.sdk.flavors.conda.PyCondaFlavorData
import org.jetbrains.annotations.ApiStatus.Internal
import kotlin.io.path.pathString
@@ -20,7 +21,8 @@ import kotlin.io.path.pathString
*/
@Suppress("DEPRECATION")
@JvmOverloads
internal fun fixPythonCondaSdk(sdk: Sdk, additionalData: SdkAdditionalData, suggestedCondaPath: FullPathOnTarget? = null) {
@Internal
fun fixPythonCondaSdk(sdk: Sdk, additionalData: SdkAdditionalData, suggestedCondaPath: FullPathOnTarget? = null) {
if (additionalData !is PythonSdkAdditionalData) return
if (sdk.isTargetBased) return
if (additionalData.flavor is CondaEnvSdkFlavor) return

View File

@@ -60,6 +60,10 @@ public final class PySdkTools {
// sdkHome guarantees SDK name uniqueness. SdkUtil can't do that since no current SDK are provided.
final Sdk sdk = SdkConfigurationUtil.setupSdk(NO_SDK, sdkHome, PythonSdkType.getInstance(), true, null, sdkHome.getPath());
Assert.assertNotNull("Failed to create SDK on " + sdkHome, sdk);
// Env might be conda, so we look for conda binary and configure it as conda
// Consider migrating to `conda` tag
PyCondaSdkFixKt.fixPythonCondaSdk(sdk, PySdkExtKt.getOrCreateAdditionalData(sdk));
ref.set(sdk);
});
final Sdk sdk = ref.get();
@@ -108,8 +112,6 @@ public final class PySdkTools {
final SdkModificator modificator = sdk.getSdkModificator();
modificator.setSdkAdditionalData(new PythonSdkAdditionalData(PythonSdkFlavor.getFlavor(sdk)));
for (final String path : new PyTargetsIntrospectionFacade(sdk, project).getInterpreterPaths(new EmptyProgressIndicator())) {
addTestSdkRoot(modificator, path);
}