Python: do not use runTest as it breaks timeouts

GitOrigin-RevId: 464ee141a4adb8cf73258203305741eef15dc1a7
This commit is contained in:
Ilya.Kazakevich
2025-06-24 21:52:49 +00:00
committed by intellij-monorepo-bot
parent 1024c402b9
commit 6d49aa0428
5 changed files with 23 additions and 16 deletions
+2 -1
View File
@@ -2,6 +2,7 @@
package com.jetbrains.env
import com.intellij.testFramework.ProjectRule
import com.intellij.testFramework.common.timeoutRunBlocking
import com.jetbrains.env.python.PySDKRule
import com.jetbrains.getPythonBinaryPath
import com.jetbrains.python.sdk.sdkSeemsValid
@@ -23,7 +24,7 @@ abstract class PySdkFlavorTestBase {
@Test
fun testValid(): Unit = runTest(timeout = 2.minutes) {
fun testValid(): Unit = timeoutRunBlocking(2.minutes) {
sdkRule.sdk.getPythonBinaryPath(projectRule.project).getOrThrow()
repeat(1000) {
Assert.assertTrue(sdkRule.sdk.sdkSeemsValid)
@@ -2,6 +2,7 @@
package com.jetbrains.env.python
import com.intellij.testFramework.ProjectRule
import com.intellij.testFramework.common.timeoutRunBlocking
import com.jetbrains.python.packaging.pip.PipPythonPackageManager
import kotlinx.coroutines.test.runTest
import org.hamcrest.MatcherAssert.assertThat
@@ -22,7 +23,7 @@ abstract class PipPackageManagerTestBase {
protected abstract val sdkRule: PySDKRule
@Test
fun testList(): Unit = runTest(timeout = 5.minutes) {
fun testList(): Unit = timeoutRunBlocking(5.minutes) {
PipPythonPackageManager(projectRule.project, sdkRule.sdk).apply {
assertThat("No packages return", reloadPackages().successOrNull, not(empty()))
assertThat("Installed packages shouldn't be empty", listInstalledPackages(), not(empty()))
@@ -7,6 +7,7 @@ import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.util.registry.Registry
import com.intellij.platform.util.progress.RawProgressReporter
import com.intellij.testFramework.ProjectRule
import com.intellij.testFramework.common.timeoutRunBlocking
import com.jetbrains.getPythonVersion
import com.jetbrains.python.PyBundle
import com.jetbrains.python.errorProcessing.asKotlinResult
@@ -64,7 +65,7 @@ class PyAddCondaPanelModelTest {
@Test
fun testCondaDetection(): Unit = runTest(timeout = timeout) {
fun testCondaDetection(): Unit = timeoutRunBlocking(timeout) {
val model = PyAddCondaPanelModel(null, emptyList(), projectRule.project)
model.detectConda(coroutineContext)
val detectedPath = model.condaPathTextBoxRwProp.get()
@@ -74,7 +75,7 @@ class PyAddCondaPanelModelTest {
}
@Test
fun testCondaCreateNewEnv(): Unit = runTest(timeout = timeout) {
fun testCondaCreateNewEnv(): Unit = timeoutRunBlocking(timeout) {
val condaName = "someNewCondaEnv"
val model = PyAddCondaPanelModel(null, emptyList(), projectRule.project)
model.condaPathTextBoxRwProp.set(condaRule.condaPath.toString())
@@ -97,7 +98,7 @@ class PyAddCondaPanelModelTest {
}
@Test
fun testCondaCantUseNameUsedAlready(): Unit = runTest(timeout = timeout) {
fun testCondaCantUseNameUsedAlready(): Unit = timeoutRunBlocking(timeout) {
val name = "cond_env_" + Math.random().toString().replace('.', '_')
// Create env
@@ -118,7 +119,7 @@ class PyAddCondaPanelModelTest {
}
@Test
fun testCondaUseExistingEnv(): Unit = runTest(timeout = timeout) {
fun testCondaUseExistingEnv(): Unit = timeoutRunBlocking(timeout) {
val model = PyAddCondaPanelModel(null, emptyList(), projectRule.project)
model.condaPathTextBoxRwProp.set(condaRule.condaPath.toString())
model.onLoadEnvsClicked(coroutineContext)
@@ -131,7 +132,7 @@ class PyAddCondaPanelModelTest {
}
@Test
fun testCondaModelValidation(): Unit = runTest(timeout = timeout) {
fun testCondaModelValidation(): Unit = timeoutRunBlocking(timeout) {
val model = PyAddCondaPanelModel(null, emptyList(), projectRule.project)
Assert.assertNotNull("No validation error, even though path not set", model.getValidationError())
@@ -11,6 +11,7 @@ import com.intellij.openapi.projectRoots.Sdk
import com.intellij.openapi.util.SystemInfoRt
import com.intellij.openapi.util.registry.Registry
import com.intellij.testFramework.ProjectRule
import com.intellij.testFramework.common.timeoutRunBlocking
import com.jetbrains.getPythonBinaryPath
import com.jetbrains.getPythonVersion
import com.jetbrains.python.getOrThrow
@@ -32,6 +33,7 @@ import org.junit.runners.Parameterized
import java.io.File
import java.nio.file.Files
import java.nio.file.Path
import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.seconds
/**
@@ -76,7 +78,7 @@ internal class PyCondaSdkTest {
* When we create fresh local SDK on Windows, it must be patched with env vars, see [fixCondaPathEnvIfNeeded]
*/
@Test
fun testLocalActivationFix(): Unit = runTest {
fun testLocalActivationFix(): Unit = timeoutRunBlocking(10.minutes) {
val script = tempDirRule.newFile()
script.writeText("""
@@ -115,7 +117,7 @@ internal class PyCondaSdkTest {
}
@Test
fun testExecuteCommandOnSdk(): Unit = runTest(timeout = 20.seconds) {
fun testExecuteCommandOnSdk(): Unit = timeoutRunBlocking(20.seconds) {
val condaEnv = PyCondaEnv.getEnvs(condaRule.condaPathOnTarget).getOrThrow().first()
val sdk = condaRule.condaCommand.createCondaSdkFromExistingEnv(condaEnv.envIdentity, emptyList(), projectRule.project)
val request = LocalTargetEnvironmentRequest()
@@ -127,7 +129,7 @@ internal class PyCondaSdkTest {
}
@Test
fun createSdkByFile() = runTest(timeout = 120.seconds) {
fun createSdkByFile() = timeoutRunBlocking(120.seconds) {
val newCondaInfo = NewCondaEnvRequest.LocalEnvByLocalEnvironmentFile(yamlRule.yamlFilePath)
val sdk = condaRule.condaCommand.createCondaSdkAlongWithNewEnv(newCondaInfo, coroutineContext, emptyList(),
projectRule.project).getOrThrow()
@@ -138,7 +140,7 @@ internal class PyCondaSdkTest {
}
@Test
fun testCreateFromExisting() = runTest {
fun testCreateFromExisting() = timeoutRunBlocking(10.minutes) {
val env = PyCondaEnv.getEnvs(condaRule.condaPathOnTarget).getOrThrow().first()
val sdk = condaRule.condaCommand.createCondaSdkFromExistingEnv(env.envIdentity, emptyList(), projectRule.project)
Assert.assertEquals(sdk.getOrCreateAdditionalData().flavor, CondaEnvSdkFlavor.getInstance())
@@ -10,6 +10,7 @@ import com.intellij.execution.target.local.LocalTargetEnvironmentRequest
import com.intellij.openapi.diagnostic.Logger
import com.intellij.openapi.util.registry.Registry
import com.intellij.testFramework.ProjectRule
import com.intellij.testFramework.common.timeoutRunBlocking
import com.jetbrains.getPythonVersion
import com.jetbrains.python.errorProcessing.asKotlinResult
import com.jetbrains.python.getOrThrow
@@ -31,6 +32,7 @@ import org.junit.runners.Parameterized.Parameter
import org.junit.runners.Parameterized.Parameters
import java.nio.file.Path
import kotlin.io.path.exists
import kotlin.time.Duration.Companion.minutes
import kotlin.time.Duration.Companion.seconds
@RunWith(Parameterized::class)
@@ -63,7 +65,7 @@ internal class PyCondaTest {
}
@Test
fun testBasePython(): Unit = runTest {
fun testBasePython(): Unit = timeoutRunBlocking(10.minutes) {
val baseConda = PyCondaEnv.getEnvs(condaRule.condaPathOnTarget).getOrThrow()
.first { (it.envIdentity as? PyCondaEnvIdentity.UnnamedEnv)?.isBase == true }
val targetRequest = LocalTargetEnvironmentRequest()
@@ -85,7 +87,7 @@ internal class PyCondaTest {
}
@Test
fun testCondaCreateByYaml() = runTest(timeout = 60.seconds) {
fun testCondaCreateByYaml() = timeoutRunBlocking(60.seconds) {
PyCondaEnv.createEnv(condaRule.condaCommand,
LocalEnvByLocalEnvironmentFile(yamlRule.yamlFilePath)).getOrThrow()
val condaEnv = PyCondaEnv.getEnvs(condaRule.condaPathOnTarget)
@@ -97,7 +99,7 @@ internal class PyCondaTest {
}
@Test
fun testCondaCreateEnv(): Unit = runTest(timeout = 20.seconds) {
fun testCondaCreateEnv(): Unit = timeoutRunBlocking(20.seconds) {
val envName = "myNewEnvForTests"
PyCondaEnv.createEnv(condaRule.condaCommand,
EmptyNamedEnv(LanguageLevel.PYTHON39, envName)).getOrThrow()
@@ -106,7 +108,7 @@ internal class PyCondaTest {
}
@Test
fun testCondaListEnvs(): Unit = runTest {
fun testCondaListEnvs(): Unit = timeoutRunBlocking(10.minutes) {
val condaEnvs = PyCondaEnv.getEnvs(condaRule.condaPathOnTarget).getOrThrow()
Assert.assertTrue("No environments returned", condaEnvs.isNotEmpty())
@@ -129,7 +131,7 @@ internal class PyCondaTest {
}
@Test
fun testCondaListUnnamedEnvs(): Unit = runTest(timeout = 90.seconds) {
fun testCondaListUnnamedEnvs(): Unit = timeoutRunBlocking(90.seconds) {
val envsDirs = Path.of(PyCondaEnv.getEnvsDirs(condaRule.condaPathOnTarget).getOrThrow().first())
val childDir = envsDirs.resolve("child")
val childEnvPrefix = childDir.resolve("childEnv").toString()