Migrate to PyResult

GitOrigin-RevId: 1e89a6eebccaf3fa42b3d64c7e483af29583b8d6
This commit is contained in:
Ilya.Kazakevich
2025-06-06 02:07:29 +00:00
committed by intellij-monorepo-bot
parent 58f847285d
commit 2a0d551f3c
7 changed files with 21 additions and 8 deletions
@@ -5,14 +5,16 @@ import com.intellij.platform.eel.EelApi
import com.intellij.platform.eel.provider.localEel
import com.intellij.python.community.services.systemPython.SystemPythonProvider
import com.jetbrains.python.PythonBinary
import com.jetbrains.python.Result
import com.jetbrains.python.errorProcessing.PyResult
import com.jetbrains.python.sdk.flavors.PythonSdkFlavor
import kotlinx.coroutines.Dispatchers
/**
* [SystemPythonProvider] based ob [PythonSdkFlavor] (kind of a bridge)
* [SystemPythonProvider] based ob [PythonSdkFlavor] (kind of bridge)
*/
internal object CoreSystemPythonProvider : SystemPythonProvider {
override suspend fun findSystemPythons(eelApi: EelApi): Result<Set<PythonBinary>> {
override suspend fun findSystemPythons(eelApi: EelApi): PyResult<Set<PythonBinary>> {
if (eelApi != localEel) return Result.success(emptySet())
with(Dispatchers.IO) {
val paths = PythonSdkFlavor.getApplicableFlavors(false)
@@ -5,6 +5,7 @@ import com.intellij.openapi.extensions.ExtensionPointName
import com.intellij.platform.eel.EelApi
import com.intellij.python.community.services.systemPython.SystemPythonProvider.Companion.EP
import com.jetbrains.python.PythonBinary
import com.jetbrains.python.errorProcessing.PyResult
/**
* Register [EP] to [findSystemPythons]
@@ -19,5 +20,5 @@ interface SystemPythonProvider {
*/
val uiCustomization: UICustomization? get() = null
suspend fun findSystemPythons(eelApi: EelApi): Result<Set<PythonBinary>>
suspend fun findSystemPythons(eelApi: EelApi): PyResult<Set<PythonBinary>>
}
@@ -18,6 +18,7 @@ import com.intellij.python.community.services.systemPython.impl.CoreSystemPython
import com.jetbrains.python.PythonBinary
import com.jetbrains.python.Result
import com.jetbrains.python.errorProcessing.PyResult
import com.jetbrains.python.getOrNull
import com.jetbrains.python.sdk.installer.installBinary
import kotlinx.coroutines.*
import kotlinx.coroutines.sync.Mutex
@@ -5,6 +5,8 @@ import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.diagnostic.fileLogger
import com.intellij.openapi.util.SystemInfo
import com.intellij.platform.eel.ExecuteProcessException
import com.intellij.platform.eel.ThrowsChecked
import com.intellij.platform.eel.provider.getEelDescriptor
import com.intellij.platform.eel.provider.utils.readWholeText
import com.intellij.platform.eel.spawnProcess
@@ -21,6 +23,8 @@ import com.intellij.testFramework.common.timeoutRunBlocking
import com.intellij.testFramework.junit5.RegistryKey
import com.intellij.testFramework.junit5.TestDisposable
import com.intellij.testFramework.registerExtension
import com.jetbrains.python.Result
import com.jetbrains.python.errorProcessing.MessageError
import com.jetbrains.python.getOrThrow
import com.jetbrains.python.sdk.flavors.PythonSdkFlavor
import com.jetbrains.python.venvReader.VirtualEnvReader
@@ -42,6 +46,7 @@ import kotlin.time.Duration.Companion.minutes
@PyEnvTestCase
class SystemPythonServiceShowCaseTest {
@ThrowsChecked(ExecuteProcessException::class)
@Test
fun testListPythons(): Unit = timeoutRunBlocking(10.minutes) {
for (systemPython in SystemPythonService().findSystemPythons(forceRefresh = true)) {
@@ -87,7 +92,7 @@ class SystemPythonServiceShowCaseTest {
@Test
fun testRefresh(@TestDisposable disposable: Disposable): Unit = timeoutRunBlocking(10.minutes) {
val mockProvider = mockk<SystemPythonProvider>()
coEvery { mockProvider.findSystemPythons(any()) } returns Result.failure(java.lang.AssertionError("..."))
coEvery { mockProvider.findSystemPythons(any()) } returns Result.failure(MessageError("..."))
coEvery { mockProvider.uiCustomization } returns null
val sut = SystemPythonService()
sut.findSystemPythons()
@@ -13,6 +13,7 @@ import com.intellij.testFramework.common.timeoutRunBlocking
import com.intellij.testFramework.junit5.TestDisposable
import com.intellij.testFramework.registerExtension
import com.jetbrains.python.PythonBinary
import com.jetbrains.python.Result
import com.jetbrains.python.getOrThrow
import io.mockk.coEvery
import io.mockk.mockk
@@ -9,6 +9,8 @@ import com.intellij.python.community.services.systemPython.SystemPythonProvider
import com.intellij.python.community.testFramework.testEnv.TypeVanillaPython
import com.intellij.python.community.testFramework.testEnv.TypeVanillaPython3
import com.jetbrains.python.PythonBinary
import com.jetbrains.python.Result
import com.jetbrains.python.errorProcessing.PyResult
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.merge
import kotlinx.coroutines.flow.toSet
@@ -17,7 +19,7 @@ import kotlinx.coroutines.flow.toSet
* Register tests pythons as system pythons
*/
internal class EnvTestPythonProvider : SystemPythonProvider {
override suspend fun findSystemPythons(eelApi: EelApi): Result<Set<PythonBinary>> {
override suspend fun findSystemPythons(eelApi: EelApi): PyResult<Set<PythonBinary>> {
var pythons = emptySet<PythonBinary>()
if (eelApi == localEel) {
// Add Py27 temporary to test Py27