From d9a9d5060230ecf84f1580aa99cd0b0a890b3ef9 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Mon, 20 Mar 2017 15:35:26 +0300 Subject: [PATCH] KotlinScriptConfigurationManager#notifyRootsChanges: run synchronously in tests Allows to unmute some of the ScriptConfigurationNavigation tests --- .../core/script/KotlinScriptConfigurationManager.kt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/KotlinScriptConfigurationManager.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/KotlinScriptConfigurationManager.kt index 17ba5df3dc6..31d8d6669a7 100644 --- a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/KotlinScriptConfigurationManager.kt +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/script/KotlinScriptConfigurationManager.kt @@ -95,8 +95,7 @@ class KotlinScriptConfigurationManager( } private fun notifyRootsChanged() { - // TODO: it seems invokeLater leads to inconsistent behaviour (at least in tests) - ApplicationManager.getApplication().invokeLater { + val rootsChangesRunnable = { runWriteAction { if (project.isDisposed) return@runWriteAction @@ -106,6 +105,14 @@ class KotlinScriptConfigurationManager( } } } + + val application = ApplicationManager.getApplication() + if (application.isUnitTestMode) { + rootsChangesRunnable.invoke() + } + else { + application.invokeLater(rootsChangesRunnable) + } } fun getScriptClasspath(file: VirtualFile): List = toVfsRoots(