import org.jetbrains.annotations.NotNull
import org.jetbrains.plugins.groovy.lang.psi.GroovyFile
+import javax.swing.SwingUtilities
+
/**
* @author peter
*/
List<Object> elements = ['empty']
def semaphore = new Semaphore()
semaphore.down()
- edt {
+ SwingUtilities.invokeLater {
popup.scheduleCalcElements(text, checkboxState, ModalityState.NON_MODAL, { set ->
elements = set as List
semaphore.up()
import com.intellij.psi.impl.JavaPsiFacadeEx;
import com.intellij.psi.impl.PsiModificationTrackerImpl;
import com.intellij.psi.search.ProjectScope;
+import com.intellij.testFramework.EdtTestUtil;
import com.intellij.testFramework.fixtures.IdeaProjectTestFixture;
import com.intellij.testFramework.fixtures.JavaCodeInsightTestFixture;
import com.intellij.testFramework.fixtures.TempDirTestFixture;
-import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.junit.Assert;
@Override
public void tearDown() throws Exception {
try {
- UIUtil.invokeLaterIfNeeded(new Runnable() {
+ EdtTestUtil.runInEdtAndWait(new Runnable() {
@Override
public void run() {
((PsiModificationTrackerImpl)getPsiManager().getModificationTracker()).incCounter();// drop all caches
import com.intellij.testFramework.LightPlatformTestCase
import com.intellij.testFramework.LoggedErrorProcessor
import com.intellij.util.ui.UIUtil
+import org.jetbrains.annotations.NotNull
import javax.swing.*
/**
return ApplicationManager.getApplication()
}
+ @Override
+ protected void invokeTestRunnable(@NotNull Runnable runnable) throws Exception {
+ SwingUtilities.invokeLater(runnable)
+ UIUtil.dispatchAllInvocationEvents()
+ }
+
@Override
protected void setUp() throws Exception {
assert LaterInvocator.currentModalityState == ModalityState.NON_MODAL
*/
package com.intellij.testFramework
+import com.intellij.openapi.application.ApplicationManager
+import com.intellij.openapi.application.ModalityState
import com.intellij.util.ThrowableRunnable
import org.jetbrains.annotations.TestOnly
import java.lang.reflect.InvocationTargetException
}
}
-
-// Test only because in production you must use Application.invokeAndWait(Runnable, ModalityState).
-// The problem is - Application logs errors, but not throws. But in tests must be thrown.
-// In any case name "runInEdtAndWait" is better than "invokeAndWait".
@TestOnly
fun runInEdtAndWait(runnable: () -> Unit) {
+ val application = ApplicationManager.getApplication()
+ if (application != null) {
+ application.invokeAndWait(runnable, ModalityState.defaultModalityState())
+ return
+ }
+
if (SwingUtilities.isEventDispatchThread()) {
runnable()
}