mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
WebTestUtil: call getPsiFile within a read action.
GitOrigin-RevId: d88b6b595ab5401fb89296ccaed27d3dc00c616d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
629f68c3f2
commit
056f8716e1
@@ -7,6 +7,7 @@ import com.intellij.codeInsight.CodeInsightSettings
|
||||
import com.intellij.codeInsight.completion.PrioritizedLookupElement
|
||||
import com.intellij.codeInsight.lookup.LookupElement
|
||||
import com.intellij.codeInsight.navigation.actions.GotoDeclarationOrUsageHandler2
|
||||
import com.intellij.codeInsight.navigation.actions.GotoDeclarationOrUsageHandler2.Companion.testGTDUOutcome
|
||||
import com.intellij.find.usages.api.SearchTarget
|
||||
import com.intellij.find.usages.api.UsageOptions
|
||||
import com.intellij.find.usages.impl.AllSearchOptions
|
||||
@@ -17,6 +18,7 @@ import com.intellij.lang.documentation.ide.IdeDocumentationTargetProvider
|
||||
import com.intellij.lang.injection.InjectedLanguageManager
|
||||
import com.intellij.model.psi.PsiSymbolReference
|
||||
import com.intellij.model.psi.impl.referencesAt
|
||||
import com.intellij.openapi.application.ReadAction
|
||||
import com.intellij.openapi.application.WriteAction
|
||||
import com.intellij.openapi.command.CommandProcessor
|
||||
import com.intellij.openapi.diagnostic.Logger
|
||||
@@ -45,6 +47,7 @@ import com.intellij.testFramework.fixtures.CodeInsightTestFixture
|
||||
import com.intellij.testFramework.fixtures.TestLookupElementPresentation
|
||||
import com.intellij.usages.Usage
|
||||
import com.intellij.util.ObjectUtils.coalesce
|
||||
import com.intellij.util.concurrency.AppExecutorUtil
|
||||
import com.intellij.util.concurrency.annotations.RequiresEdt
|
||||
import com.intellij.webSymbols.declarations.WebSymbolDeclaration
|
||||
import com.intellij.webSymbols.declarations.WebSymbolDeclarationProvider
|
||||
@@ -54,6 +57,7 @@ import com.intellij.webSymbols.query.WebSymbolsQueryExecutorFactory
|
||||
import junit.framework.TestCase.*
|
||||
import org.junit.Assert
|
||||
import java.io.File
|
||||
import java.util.concurrent.Callable
|
||||
import kotlin.math.max
|
||||
import kotlin.math.min
|
||||
|
||||
@@ -162,12 +166,14 @@ data class LookupElementInfo(
|
||||
val isItemTextUnderline: Boolean,
|
||||
val isTypeGreyed: Boolean,
|
||||
) {
|
||||
fun render(renderPriority: Boolean,
|
||||
renderTypeText: Boolean,
|
||||
renderTailText: Boolean,
|
||||
renderProximity: Boolean,
|
||||
renderDisplayText: Boolean,
|
||||
renderDisplayEffects: Boolean): String {
|
||||
fun render(
|
||||
renderPriority: Boolean,
|
||||
renderTypeText: Boolean,
|
||||
renderTailText: Boolean,
|
||||
renderProximity: Boolean,
|
||||
renderDisplayText: Boolean,
|
||||
renderDisplayEffects: Boolean,
|
||||
): String {
|
||||
val result = StringBuilder()
|
||||
result.append(lookupString)
|
||||
if (renderPriority || renderTypeText || renderTailText || renderProximity || renderDisplayText || renderDisplayEffects) {
|
||||
@@ -224,9 +230,11 @@ data class LookupElementInfo(
|
||||
}
|
||||
}
|
||||
|
||||
private fun CodeInsightTestFixture.checkDocumentation(actualDocumentation: String?,
|
||||
fileSuffix: String = ".expected",
|
||||
directory: String = "") {
|
||||
private fun CodeInsightTestFixture.checkDocumentation(
|
||||
actualDocumentation: String?,
|
||||
fileSuffix: String = ".expected",
|
||||
directory: String = "",
|
||||
) {
|
||||
assertNotNull("No documentation rendered", actualDocumentation)
|
||||
val expectedFile = InjectedLanguageManager.getInstance(project).getTopLevelFile(file)
|
||||
.virtualFile.nameWithoutExtension + fileSuffix + ".html"
|
||||
@@ -258,13 +266,15 @@ infix fun ((item: LookupElementInfo) -> Boolean).and(other: (item: LookupElement
|
||||
}
|
||||
|
||||
@JvmOverloads
|
||||
fun CodeInsightTestFixture.renderLookupItems(renderPriority: Boolean,
|
||||
renderTypeText: Boolean,
|
||||
renderTailText: Boolean = false,
|
||||
renderProximity: Boolean = false,
|
||||
renderDisplayText: Boolean = false,
|
||||
renderDisplayEffects: Boolean = renderPriority,
|
||||
lookupFilter: (item: LookupElementInfo) -> Boolean = { true }): List<String> =
|
||||
fun CodeInsightTestFixture.renderLookupItems(
|
||||
renderPriority: Boolean,
|
||||
renderTypeText: Boolean,
|
||||
renderTailText: Boolean = false,
|
||||
renderProximity: Boolean = false,
|
||||
renderDisplayText: Boolean = false,
|
||||
renderDisplayEffects: Boolean = renderPriority,
|
||||
lookupFilter: (item: LookupElementInfo) -> Boolean = { true },
|
||||
): List<String> =
|
||||
lookupElements?.asSequence()
|
||||
?.map {
|
||||
val presentation = TestLookupElementPresentation.renderReal(it)
|
||||
@@ -483,8 +493,14 @@ fun CodeInsightTestFixture.checkGTDUOutcome(expectedOutcome: GotoDeclarationOrUs
|
||||
val actualSignature = signature ?: editor.currentPositionSignature
|
||||
val editor = InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, file)
|
||||
val offset = editor.caretModel.offset
|
||||
val file = PsiDocumentManager.getInstance(project).getPsiFile(editor.document) ?: file
|
||||
val gtduOutcome = GotoDeclarationOrUsageHandler2.testGTDUOutcomeInNonBlockingReadAction(editor, file, offset)
|
||||
|
||||
val gtduOutcome = ReadAction
|
||||
.nonBlocking(Callable {
|
||||
val file = PsiDocumentManager.getInstance(project).getPsiFile(editor.document) ?: file
|
||||
testGTDUOutcome(editor, file, offset)
|
||||
})
|
||||
.submit(AppExecutorUtil.getAppExecutorService())
|
||||
.get()
|
||||
Assert.assertEquals(actualSignature,
|
||||
expectedOutcome,
|
||||
gtduOutcome)
|
||||
@@ -578,10 +594,12 @@ fun CodeInsightTestFixture.renameWebSymbol(newName: String) {
|
||||
}
|
||||
|
||||
|
||||
fun doCompletionItemsTest(fixture: CodeInsightTestFixture,
|
||||
fileName: String,
|
||||
goldFileWithExtension: Boolean = false,
|
||||
renderDisplayText: Boolean = false) {
|
||||
fun doCompletionItemsTest(
|
||||
fixture: CodeInsightTestFixture,
|
||||
fileName: String,
|
||||
goldFileWithExtension: Boolean = false,
|
||||
renderDisplayText: Boolean = false,
|
||||
) {
|
||||
val fileNameNoExt = FileUtil.getNameWithoutExtension(fileName)
|
||||
fixture.configureByFile(fileName)
|
||||
WriteAction.runAndWait<Throwable> { WebSymbolsQueryExecutorFactory.getInstance(fixture.project) }
|
||||
|
||||
Reference in New Issue
Block a user