diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/rename/JavaChangeSignatureInlayProviderTest.kt b/java/java-tests/testSrc/com/intellij/java/refactoring/rename/JavaChangeSignatureInlayProviderTest.kt index d33c9a3d8ddc..ec9584b874ee 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/rename/JavaChangeSignatureInlayProviderTest.kt +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/rename/JavaChangeSignatureInlayProviderTest.kt @@ -12,6 +12,7 @@ import com.intellij.openapi.components.service import com.intellij.openapi.fileTypes.LanguageFileType import com.intellij.refactoring.suggested.BaseSuggestedRefactoringAvailabilityTest import com.intellij.refactoring.suggested.SuggestedRefactoringProviderImpl +import com.intellij.testFramework.utils.codeVision.CodeVisionTestCase class JavaChangeSignatureInlayProviderTest : BaseSuggestedRefactoringAvailabilityTest() { @@ -604,7 +605,7 @@ class JavaChangeSignatureInlayProviderTest : BaseSuggestedRefactoringAvailabilit executeEditingActions(editingActions) myFixture.availableIntentions - project.service().calculateCodeVisionSync(editor, testRootDisposable) + CodeVisionTestCase.waitForCodeVisionSync(editor, project.service(), testRootDisposable) val actualText = InlayDumpUtil.dumpInlays( file.text, diff --git a/java/java-tests/testSrc/com/intellij/java/refactoring/rename/JavaRenameInlayProviderTest.kt b/java/java-tests/testSrc/com/intellij/java/refactoring/rename/JavaRenameInlayProviderTest.kt index 560819f5d0e9..505224939fbd 100644 --- a/java/java-tests/testSrc/com/intellij/java/refactoring/rename/JavaRenameInlayProviderTest.kt +++ b/java/java-tests/testSrc/com/intellij/java/refactoring/rename/JavaRenameInlayProviderTest.kt @@ -12,6 +12,7 @@ import com.intellij.openapi.components.service import com.intellij.openapi.fileTypes.LanguageFileType import com.intellij.refactoring.suggested.BaseSuggestedRefactoringAvailabilityTest import com.intellij.refactoring.suggested.SuggestedRefactoringProviderImpl +import com.intellij.testFramework.utils.codeVision.CodeVisionTestCase class JavaRenameInlayProviderTest : BaseSuggestedRefactoringAvailabilityTest() { @@ -250,7 +251,7 @@ class JavaRenameInlayProviderTest : BaseSuggestedRefactoringAvailabilityTest() { executeEditingActions(editingActions) myFixture.availableIntentions - project.service().calculateCodeVisionSync(editor, testRootDisposable) + CodeVisionTestCase.waitForCodeVisionSync(editor, project.service(), testRootDisposable) val actualText = InlayDumpUtil.dumpInlays( file.text, diff --git a/platform/testFramework/junit5/codeInsight/src/fixture/CodeVisionTestFixture.kt b/platform/testFramework/junit5/codeInsight/src/fixture/CodeVisionTestFixture.kt index bf2985d056ab..9d001efa60f3 100644 --- a/platform/testFramework/junit5/codeInsight/src/fixture/CodeVisionTestFixture.kt +++ b/platform/testFramework/junit5/codeInsight/src/fixture/CodeVisionTestFixture.kt @@ -23,11 +23,13 @@ import com.intellij.openapi.vfs.VirtualFile import com.intellij.psi.PsiDocumentManager import com.intellij.psi.PsiFile import com.intellij.psi.PsiManager +import com.intellij.testFramework.PlatformTestUtil import com.intellij.testFramework.TestModeFlags import com.intellij.testFramework.fixtures.BasePlatformTestCase.assertEquals import com.intellij.testFramework.fixtures.impl.CodeInsightTestFixtureImpl import com.intellij.testFramework.junit5.fixture.TestFixture import com.intellij.testFramework.junit5.fixture.testFixture +import com.intellij.testFramework.utils.codeVision.CodeVisionTestCase import com.intellij.util.ArrayUtilRt import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext @@ -76,7 +78,7 @@ class CodeVisionTestFixture( } val newFile = requireNotNull(PsiDocumentManager.getInstance(project).getPsiFile(document, context)) doHighlighting(newFile) - codeVisionHost.calculateCodeVisionSync(editor, disposable) + CodeVisionTestCase.waitForCodeVisionSync(editor, codeVisionHost, disposable) } } assertText(expectedText) diff --git a/platform/testFramework/src/com/intellij/testFramework/utils/codeVision/CodeVisionTestCase.kt b/platform/testFramework/src/com/intellij/testFramework/utils/codeVision/CodeVisionTestCase.kt index fdf42f8aa0db..1c402bbec590 100644 --- a/platform/testFramework/src/com/intellij/testFramework/utils/codeVision/CodeVisionTestCase.kt +++ b/platform/testFramework/src/com/intellij/testFramework/utils/codeVision/CodeVisionTestCase.kt @@ -7,14 +7,24 @@ import com.intellij.codeInsight.codeVision.settings.CodeVisionSettings import com.intellij.codeInsight.codeVision.ui.model.CodeVisionListData import com.intellij.codeInsight.codeVision.ui.renderers.CodeVisionInlayRenderer import com.intellij.codeInsight.hints.InlayDumpUtil +import com.intellij.openapi.Disposable +import com.intellij.openapi.editor.Editor import com.intellij.openapi.util.registry.Registry +import com.intellij.testFramework.PlatformTestUtil import com.intellij.testFramework.TestModeFlags import com.intellij.testFramework.utils.inlays.InlayHintsProviderTestCase +import com.intellij.util.ui.EDT abstract class CodeVisionTestCase : InlayHintsProviderTestCase() { companion object { const val AUTHOR_HINT: String = "John Smith +2" + + @JvmStatic + fun waitForCodeVisionSync(editor: Editor, host: CodeVisionHost, disposable: Disposable) { + val done = host.calculateCodeVisionSync(editor, disposable) + PlatformTestUtil.waitForFuture(done) + } } protected open val onlyCodeVisionHintsAllowed: Boolean @@ -63,7 +73,7 @@ abstract class CodeVisionTestCase : InlayHintsProviderTestCase() { } myFixture.doHighlighting() - codeVisionHost.calculateCodeVisionSync(editor, testRootDisposable) + waitForCodeVisionSync(editor, codeVisionHost, testRootDisposable) val actualText = dumpCodeVisionHints(sourceText) assertEquals(expectedText, actualText)