IJPL-149042 Convert Future to Deferred in test to make it cancel on test timeout

GitOrigin-RevId: d08df0d298f9ac83624f45ef8eff59d6b969154c
This commit is contained in:
Liudmila Kornilova
2024-10-04 18:49:02 +02:00
committed by intellij-monorepo-bot
parent eb09ab9d38
commit 7c8f647878
5 changed files with 20 additions and 9 deletions

View File

@@ -4,7 +4,6 @@ import com.intellij.ide.actions.searcheverywhere.ActionSearchEverywhereContribut
import com.intellij.ide.actions.searcheverywhere.SearchEverywhereUI
import com.intellij.ide.actions.searcheverywhere.SearchEverywhereUI.SINGLE_CONTRIBUTOR_ELEMENTS_LIMIT
import com.intellij.ide.util.gotoByName.GotoActionModel
import com.intellij.idea.IJIgnore
import com.intellij.openapi.application.EDT
import com.intellij.openapi.application.readAction
import com.intellij.openapi.util.Disposer
@@ -51,7 +50,7 @@ class SemanticActionSearchTest : SemanticSearchBaseTestCase() {
}
Disposer.register(project, searchEverywhereUI)
val elements = runBlocking(Dispatchers.EDT) { searchEverywhereUI.findElementsForPattern("delete all breakpoints") }.get()
val elements = runOnEdt { searchEverywhereUI.findElementsForPattern("delete all breakpoints") }.await()
val items = elements.filterIsInstance<GotoActionModel.MatchedValue>().map { (it.value as GotoActionModel.ActionWrapper).actionText }
@@ -67,7 +66,7 @@ class SemanticActionSearchTest : SemanticSearchBaseTestCase() {
val semanticSearchEverywhereUI = runBlocking(Dispatchers.EDT) { SearchEverywhereUI(project, listOf(semanticActionContributor)) }
Disposer.register(project, semanticSearchEverywhereUI)
val results = runBlocking(Dispatchers.EDT) { semanticSearchEverywhereUI.findElementsForPattern("") }.get()
val results = runOnEdt { semanticSearchEverywhereUI.findElementsForPattern("") }.await()
assertEquals("expected no results from semantic contributor for empty query",
0, results.filterIsInstance<GotoActionModel.MatchedValue>().mapNotNull { it.value as? GotoActionModel.MatchedValue }.size)
@@ -96,8 +95,8 @@ class SemanticActionSearchTest : SemanticSearchBaseTestCase() {
prefixes.addAll(lastAdded)
}
fun findResultsFromUI(ui: SearchEverywhereUI, query: String): List<String> {
return runBlocking(Dispatchers.EDT) { ui.findElementsForPattern(query) }.get()
suspend fun findResultsFromUI(ui: SearchEverywhereUI, query: String): List<String> {
return runOnEdt { ui.findElementsForPattern(query) }.await()
.filterIsInstance<GotoActionModel.MatchedValue>()
.mapNotNull { it.value as? GotoActionModel.ActionWrapper }
// 'Include disabled actions' checkbox is automatically set in standard search when no results found.

View File

@@ -61,7 +61,7 @@ class SemanticClassSearchTest : SemanticSearchBaseTestCase() {
val searchEverywhereUI = runBlocking(Dispatchers.EDT) { SearchEverywhereUI(project, listOf(contributor), { _ -> null }, null) }
Disposer.register(project, searchEverywhereUI)
val elements = runBlocking(Dispatchers.EDT) { searchEverywhereUI.findElementsForPattern("index project job") }.get()
val elements = runOnEdt { searchEverywhereUI.findElementsForPattern("index project job") }.await()
val items: List<PsiElement> = elements.filterIsInstance<PsiItemWithSimilarity<*>>().mapNotNull { extractPsiElement(it) }
assertEquals(2, items.size)

View File

@@ -61,7 +61,7 @@ class SemanticFileSearchTest : SemanticSearchBaseTestCase() {
val searchEverywhereUI = runBlocking(Dispatchers.EDT) { SearchEverywhereUI (project, listOf(contributor), { _ -> null }, null) }
Disposer.register(project, searchEverywhereUI)
val elements = runBlocking(Dispatchers.EDT) { searchEverywhereUI.findElementsForPattern("index project job") }.get()
val elements = runOnEdt { searchEverywhereUI.findElementsForPattern("index project job") }.await()
val items: List<PsiElement> = elements.filterIsInstance<PsiItemWithSimilarity<*>>().mapNotNull { extractPsiElement(it) }
assertEquals(2, items.size)

View File

@@ -1,8 +1,15 @@
package com.intellij.searchEverywhereMl.semantics.tests
import com.intellij.ide.actions.searcheverywhere.PSIPresentationBgRendererWrapper
import com.intellij.psi.PsiElement
import com.intellij.ide.actions.searcheverywhere.PsiItemWithSimilarity
import com.intellij.openapi.application.EDT
import com.intellij.psi.PsiElement
import kotlinx.coroutines.Deferred
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.future.asDeferred
import kotlinx.coroutines.runBlocking
import java.util.concurrent.CompletionStage
import java.util.concurrent.Future
fun extractPsiElement(element: PsiItemWithSimilarity<*>): PsiElement? {
@@ -12,3 +19,8 @@ fun extractPsiElement(element: PsiItemWithSimilarity<*>): PsiElement? {
else -> null
}
}
fun <T> runOnEdt(f: () -> Future<T>): Deferred<T> {
val future = runBlocking(Dispatchers.EDT) { f() }
return (future as CompletionStage<T>).asDeferred()
}

View File

@@ -62,7 +62,7 @@ class SemanticSymbolSearchTest : SemanticSearchBaseTestCase() {
val searchEverywhereUI = runBlocking(Dispatchers.EDT) { SearchEverywhereUI(project, listOf(contributor), { _ -> null }, null) }
Disposer.register(project, searchEverywhereUI)
val elements = runBlocking(Dispatchers.EDT) { searchEverywhereUI.findElementsForPattern("begin indexing") }.get()
val elements = runOnEdt { searchEverywhereUI.findElementsForPattern("begin indexing") }.await()
val items: List<PsiElement> = elements.filterIsInstance<PsiItemWithSimilarity<*>>().mapNotNull { extractPsiElement(it) }
assertEquals(2, items.size)