Auto-test running intention isApplicable() from pooled thread
This commit is contained in:
@@ -19,7 +19,9 @@ package org.jetbrains.kotlin.idea.intentions;
|
|||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
import com.intellij.codeInsight.intention.IntentionAction;
|
import com.intellij.codeInsight.intention.IntentionAction;
|
||||||
import com.intellij.ide.startup.impl.StartupManagerImpl;
|
import com.intellij.ide.startup.impl.StartupManagerImpl;
|
||||||
|
import com.intellij.openapi.application.ApplicationManager;
|
||||||
import com.intellij.openapi.startup.StartupManager;
|
import com.intellij.openapi.startup.StartupManager;
|
||||||
|
import com.intellij.openapi.util.Computable;
|
||||||
import com.intellij.openapi.util.SystemInfo;
|
import com.intellij.openapi.util.SystemInfo;
|
||||||
import com.intellij.openapi.util.io.FileUtil;
|
import com.intellij.openapi.util.io.FileUtil;
|
||||||
import com.intellij.openapi.util.text.StringUtil;
|
import com.intellij.openapi.util.text.StringUtil;
|
||||||
@@ -144,9 +146,25 @@ public abstract class AbstractIntentionTest extends KotlinCodeInsightTestCase {
|
|||||||
String isApplicableString = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// IS_APPLICABLE: ");
|
String isApplicableString = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// IS_APPLICABLE: ");
|
||||||
boolean isApplicableExpected = isApplicableString == null || isApplicableString.equals("true");
|
boolean isApplicableExpected = isApplicableString == null || isApplicableString.equals("true");
|
||||||
|
|
||||||
|
boolean isApplicableOnPooled = ApplicationManager.getApplication().executeOnPooledThread(new java.util.concurrent.Callable<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public Boolean call() throws Exception {
|
||||||
|
return ApplicationManager.getApplication().runReadAction(new Computable<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public Boolean compute() {
|
||||||
|
return intentionAction.isAvailable(getProject(), getEditor(), getFile());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}).get();
|
||||||
|
|
||||||
|
boolean isApplicableOnEdt = intentionAction.isAvailable(getProject(), getEditor(), getFile());
|
||||||
|
|
||||||
|
Assert.assertEquals("There should not be any difference what thread isApplicable is called from", isApplicableOnPooled, isApplicableOnEdt);
|
||||||
|
|
||||||
Assert.assertTrue(
|
Assert.assertTrue(
|
||||||
"isAvailable() for " + intentionAction.getClass() + " should return " + isApplicableExpected,
|
"isAvailable() for " + intentionAction.getClass() + " should return " + isApplicableExpected,
|
||||||
isApplicableExpected == intentionAction.isAvailable(getProject(), getEditor(), getFile()));
|
isApplicableExpected == isApplicableOnEdt);
|
||||||
|
|
||||||
String intentionTextString = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// INTENTION_TEXT: ");
|
String intentionTextString = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// INTENTION_TEXT: ");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user