Tests, refactoring: replace invokeLater with TransactionGuard to avoid situations that project isDisposed during inlays printing

This commit is contained in:
Natalia Selezneva
2019-07-17 13:32:06 +03:00
parent ec1bef639f
commit 2fa7ef2482
@@ -23,6 +23,7 @@ import com.intellij.execution.ui.ConsoleViewContentType
import com.intellij.ide.scratch.ScratchFileType
import com.intellij.openapi.Disposable
import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.application.TransactionGuard
import com.intellij.openapi.command.WriteCommandAction
import com.intellij.openapi.editor.ex.EditorEx
import com.intellij.openapi.project.Project
@@ -180,7 +181,7 @@ private object TestOutputHandler : ScratchOutputHandlerAdapter() {
}
override fun onFinish(file: ScratchFile) {
ApplicationManager.getApplication().invokeLater {
TransactionGuard.submitTransaction(file.project, Runnable {
val psiFile = file.getPsiFile()
?: error(
"PsiFile cannot be found for scratch to render inlays in tests:\n" +
@@ -200,7 +201,7 @@ private object TestOutputHandler : ScratchOutputHandlerAdapter() {
testPrint(psiFile, listOf(errors.joinToString(prefix = "/** ", postfix = " */")))
errors.clear()
}
}
})
}
private fun testPrint(file: PsiFile, comments: List<String>) {