Python: conda test refactoring + logging increased to catch an error

GitOrigin-RevId: 46d3e4cce082931dff6acb108bd73636e81cd8c9
This commit is contained in:
Ilya.Kazakevich
2024-08-06 01:15:14 +02:00
committed by intellij-monorepo-bot
parent e218fcfd57
commit 63ce0c89e5
3 changed files with 9 additions and 9 deletions

View File

@@ -15,6 +15,7 @@ import kotlin.io.path.exists
import kotlin.io.path.isDirectory
import kotlin.io.path.isExecutable
private val LOG = Logger.getInstance("CondaLogger")
/**
* Workaround for cases like ``https://github.com/conda/conda/issues/11795`` and warnings (see [addEnvVars])
*
@@ -29,7 +30,7 @@ fun TargetedCommandLineBuilder.fixCondaPathEnvIfNeeded(sdk: Sdk) {
val condaData = (sdk.getOrCreateAdditionalData().flavorAndData.data as? PyCondaFlavorData) ?: return
val pythonHomePath = sdk.homePath
if (pythonHomePath == null) {
Logger.getInstance("Conda").warn("No home path for $this, will skip 'venv activation'")
LOG.warn("No home path for $this, will skip 'venv activation'")
return
}
addEnvVars(PySdkUtil.activateVirtualEnv(sdk), condaData.env.fullCondaPathOnTarget)
@@ -38,14 +39,13 @@ fun TargetedCommandLineBuilder.fixCondaPathEnvIfNeeded(sdk: Sdk) {
fun TargetedCommandLineBuilder.fixCondaPathEnvIfNeeded(condaPathOnTarget: FullPathOnTarget) {
if (!localOnWindows) return
val condaPath = Path.of(condaPathOnTarget)
val logger = Logger.getInstance("Conda")
if (!condaPath.exists()) {
logger.warn("$condaPath doesn't exist")
LOG.warn("$condaPath doesn't exist")
return
}
val activateBat = condaPath.resolveSibling("activate.bat")
if (!activateBat.isExecutable()) {
logger.warn("$activateBat doesn't exist or can't be read")
LOG.warn("$activateBat doesn't exist or can't be read")
return
}
try {
@@ -53,7 +53,7 @@ fun TargetedCommandLineBuilder.fixCondaPathEnvIfNeeded(condaPathOnTarget: FullPa
addEnvVars(envs, condaPathOnTarget)
}
catch (e: IOException) {
logger.warn("Can't read env vars", e)
LOG.warn("Can't read env vars", e)
}
}
@@ -75,9 +75,9 @@ private val TargetedCommandLineBuilder.localOnWindows: Boolean
private fun TargetedCommandLineBuilder.addEnvVars(envs: Map<String, String>, condaPathOnTarget: FullPathOnTarget) {
val extraPath = Path.of(condaPathOnTarget).parent?.parent?.resolve("Library")?.resolve("Bin")
if (extraPath == null || !extraPath.exists() || !extraPath.isDirectory()) {
Logger.getInstance("Conda").warn("$extraPath doesn't exist")
LOG.warn("$extraPath doesn't exist")
}
LOG.info("Patching envs")
for ((k, v) in envs) {
val fixedVal = if (k.equals("Path", ignoreCase = true) && extraPath != null) {
v + request.targetPlatform.platform.pathSeparator + extraPath

View File

@@ -30,7 +30,7 @@ internal class CondaYamlFileRule(private val condaRule: LocalCondaRule,
val fullPathOnTarget = condaRule.condaPathOnTarget
val command = PyCondaCommand(fullPathOnTarget, null, null)
val condaEnvRequest = NewCondaEnvRequest.EmptyNamedEnv(languageLevel, envName)
runBlocking { PyCondaEnv.createEnv(command, condaEnvRequest).mapFlat { it.getResultStdoutStr() } }
runBlocking { PyCondaEnv.createEnv(command, condaEnvRequest).mapFlat { it.getResultStdoutStr() }.getOrThrow() }
val targetReq = LocalTargetEnvironmentRequest()
val builder = TargetedCommandLineBuilder(targetReq).apply {
setExePath(fullPathOnTarget)

View File

@@ -126,7 +126,7 @@ internal class PyCondaSdkTest {
}
@Test
fun createSdkByFile() = runTest(timeout = 50.seconds) {
fun createSdkByFile() = runTest(timeout = 120.seconds) {
val newCondaInfo = NewCondaEnvRequest.LocalEnvByLocalEnvironmentFile(yamlRule.yamlFilePath)
val sdk = condaRule.condaCommand.createCondaSdkAlongWithNewEnv(newCondaInfo, coroutineContext, emptyList(),
projectRule.project).getOrThrow()