mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[eel, jdk] IJ-CR-162252: Add unit test for different eels in new project wizard
GitOrigin-RevId: 6f45931427b09cdbebc4eef99eb14a662fcd6865
This commit is contained in:
committed by
intellij-monorepo-bot
parent
2521f8c2a9
commit
16a89f4a1f
@@ -26,5 +26,8 @@
|
||||
<orderEntry type="library" name="kotlin-test" level="project" />
|
||||
<orderEntry type="module" module-name="intellij.platform.util" scope="TEST" />
|
||||
<orderEntry type="library" scope="TEST" name="ktor-server-cio" level="project" />
|
||||
<orderEntry type="module" module-name="intellij.platform.testFramework.junit5.eel" scope="TEST" />
|
||||
<orderEntry type="module" module-name="intellij.platform.eel.provider" scope="TEST" />
|
||||
<orderEntry type="module" module-name="intellij.platform.eel" scope="TEST" />
|
||||
</component>
|
||||
</module>
|
||||
@@ -0,0 +1,77 @@
|
||||
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ui
|
||||
|
||||
import com.intellij.ide.projectWizard.ProjectWizardJdkComboBox
|
||||
import com.intellij.ide.projectWizard.ProjectWizardJdkIntent
|
||||
import com.intellij.ide.projectWizard.ProjectWizardTestCase
|
||||
import com.intellij.openapi.Disposable
|
||||
import com.intellij.openapi.application.writeAction
|
||||
import com.intellij.openapi.projectRoots.ProjectJdkTable
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.projectRoots.SimpleJavaSdkType
|
||||
import com.intellij.openapi.util.Disposer
|
||||
import com.intellij.platform.eel.path.EelPath
|
||||
import com.intellij.platform.eel.provider.LocalEelDescriptor
|
||||
import com.intellij.platform.eel.provider.utils.EelPathUtils
|
||||
import com.intellij.platform.testFramework.junit5.eel.fixture.eelFixture
|
||||
import com.intellij.testFramework.common.timeoutRunBlocking
|
||||
import com.intellij.testFramework.junit5.TestApplication
|
||||
import com.intellij.testFramework.junit5.TestDisposable
|
||||
import org.junit.jupiter.api.Assertions
|
||||
import org.junit.jupiter.api.Test
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
|
||||
@TestApplication
|
||||
class ProjectWizardJdkComboBoxTest {
|
||||
val eelFixture = eelFixture(EelPath.OS.UNIX)
|
||||
|
||||
@Test
|
||||
fun `changing eel changes available sdks`(@TestDisposable disposable: Disposable): Unit = timeoutRunBlocking {
|
||||
val localSdk = createLocalSdk(disposable)
|
||||
val eelSdk = createEelSdk(disposable)
|
||||
|
||||
val comboBox = ProjectWizardJdkComboBox(null, disposable)
|
||||
|
||||
comboBox.eelChanged(LocalEelDescriptor)
|
||||
Assertions.assertTrue(comboBox.contains(localSdk))
|
||||
Assertions.assertFalse(comboBox.contains(eelSdk))
|
||||
|
||||
comboBox.eelChanged(eelFixture.get().eelDescriptor)
|
||||
Assertions.assertFalse(comboBox.contains(localSdk))
|
||||
Assertions.assertTrue(comboBox.contains(eelSdk))
|
||||
}
|
||||
|
||||
|
||||
suspend fun createSdk(path: Path, name: String, disposable: Disposable): Sdk {
|
||||
val jdkTable = ProjectJdkTable.getInstance()
|
||||
val javaSdkType = SimpleJavaSdkType.getInstance()
|
||||
Disposer.register(disposable) {
|
||||
Files.delete(path)
|
||||
}
|
||||
val sdk = jdkTable.createSdk(name, javaSdkType)
|
||||
val modificator = sdk.sdkModificator
|
||||
modificator.homePath = path.toString()
|
||||
writeAction {
|
||||
modificator.commitChanges()
|
||||
jdkTable.addJdk(sdk, disposable)
|
||||
}
|
||||
return sdk
|
||||
}
|
||||
|
||||
suspend fun createLocalSdk(disposable: Disposable): Sdk {
|
||||
val tempDir = Files.createTempDirectory("test-")
|
||||
return createSdk(tempDir, "local-sdk", disposable)
|
||||
}
|
||||
|
||||
suspend fun createEelSdk(disposable: Disposable): Sdk {
|
||||
val eel = eelFixture.get()
|
||||
val tempDir = EelPathUtils.createTemporaryDirectory(eel.eelApi)
|
||||
return createSdk(tempDir, "eel-sdk", disposable)
|
||||
}
|
||||
|
||||
fun ProjectWizardJdkComboBox.contains(sdk: Sdk): Boolean {
|
||||
return model.items.find { it is ProjectWizardJdkIntent.ExistingJdk && it.jdk == sdk } != null
|
||||
}
|
||||
|
||||
}
|
||||
@@ -65,11 +65,16 @@ object EelPathUtils {
|
||||
val projectFilePath = project.projectFilePath ?: return Files.createTempDirectory(prefix)
|
||||
return runBlockingMaybeCancellable {
|
||||
val eel = Path.of(projectFilePath).getEelApi()
|
||||
val file = eel.fs.createTemporaryDirectory(EelFileSystemApi.CreateTemporaryEntryOptions.Builder().prefix(prefix).build()).getOrThrowFileSystemException()
|
||||
eel.mapper.toNioPath(file)
|
||||
createTemporaryDirectory(eel, prefix)
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
suspend fun createTemporaryDirectory(eelApi: EelApi, prefix: String = ""): Path {
|
||||
val file = eelApi.fs.createTemporaryDirectory(EelFileSystemApi.CreateTemporaryEntryOptions.Builder().prefix(prefix).build()).getOrThrowFileSystemException()
|
||||
return eelApi.mapper.toNioPath(file)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun renderAsEelPath(path: Path): String {
|
||||
if (isPathLocal(path)) {
|
||||
|
||||
Reference in New Issue
Block a user