From 12aee46341929f1d68c6c6f337dcae0e5e2f1615 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Wed, 1 Sep 2010 12:23:40 +0400 Subject: [PATCH] datarace in tests --- .../codeInsight/completion/CodeCompletionHandlerBase.java | 3 +-- .../completion/CompletionProgressIndicator.java | 1 + .../com/intellij/codeInsight/lookup/impl/LookupImpl.java | 1 + .../fixtures/CodeInsightFixtureTestCase.java | 8 +++++++- .../groovy/lang/completion/CompletionTestBase.java | 6 ++++++ 5 files changed, 16 insertions(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java index 2dd65f91df3d..f6f818533e99 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java @@ -43,7 +43,6 @@ import com.intellij.openapi.editor.ex.util.EditorUtil; import com.intellij.openapi.fileEditor.FileDocumentManager; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressManager; -import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; @@ -218,7 +217,7 @@ public class CodeCompletionHandlerBase implements CodeInsightActionHandler { if (items.length == 0) { ApplicationManager.getApplication().invokeLater(new Runnable() { public void run() { - if (project.isDisposed()) return; + if (project.isDisposed() || !project.isOpen()) return; if (indicator != CompletionServiceImpl.getCompletionService().getCurrentCompletion()) return; final Lookup lookup = LookupManager.getActiveLookup(editor); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java index 22ed224e991a..b3f0d574d29a 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java @@ -346,6 +346,7 @@ public class CompletionProgressIndicator extends ProgressIndicatorBase implement } private void cleanup() { + assert ApplicationManager.getApplication().isDispatchThread(); myHint = null; myOldDocumentText = null; CompletionServiceImpl.getCompletionService().setCurrentCompletion(null); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java index d853d48fc395..2aafb28329f8 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java @@ -900,6 +900,7 @@ public class LookupImpl extends LightweightHint implements Lookup, Disposable { } public void dispose() { + assert ApplicationManager.getApplication().isDispatchThread(); assert myHidden; assert !myDisposed; myDisposed = true; diff --git a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightFixtureTestCase.java b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightFixtureTestCase.java index 4f7371286685..1c7e4536fa43 100644 --- a/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightFixtureTestCase.java +++ b/platform/testFramework/src/com/intellij/testFramework/fixtures/CodeInsightFixtureTestCase.java @@ -24,6 +24,7 @@ import com.intellij.testFramework.UsefulTestCase; import com.intellij.testFramework.builders.EmptyModuleFixtureBuilder; import org.jetbrains.annotations.NonNls; +import javax.swing.*; import java.io.File; /** @@ -68,7 +69,7 @@ public abstract class CodeInsightFixtureTestCase extends UsefulTestCase { } /** - * Return absolute path to the test data. Not intended to be overrided. + * Return absolute path to the test data. Not intended to be overridden. * * @return absolute path to the test data. */ @@ -88,4 +89,9 @@ public abstract class CodeInsightFixtureTestCase extends UsefulTestCase { protected PsiFile getFile() { return myFixture.getFile(); } + + @Override + protected void invokeTestRunnable(Runnable runnable) throws Exception { + SwingUtilities.invokeAndWait(runnable); + } } diff --git a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/completion/CompletionTestBase.java b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/completion/CompletionTestBase.java index ba81c1d88d93..e5fe2d8f3041 100644 --- a/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/completion/CompletionTestBase.java +++ b/plugins/groovy/test/org/jetbrains/plugins/groovy/lang/completion/CompletionTestBase.java @@ -12,6 +12,7 @@ import org.jetbrains.plugins.groovy.CompositeCompletionData; import org.jetbrains.plugins.groovy.lang.psi.api.statements.GrVariable; import org.jetbrains.plugins.groovy.util.TestUtils; +import javax.swing.*; import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -87,4 +88,9 @@ public abstract class CompletionTestBase extends JavaCodeInsightFixtureTestCase protected boolean addReferenceVariants() { return true; } + + @Override + protected void invokeTestRunnable(Runnable runnable) throws Exception { + SwingUtilities.invokeAndWait(runnable); + } }