Added the directive for allow to use runtime classes in intention tests.

This commit is contained in:
Zalim Bashorov
2014-04-02 14:08:51 +04:00
parent 4f44c7ba9c
commit 6c1ed450a2
@@ -19,9 +19,12 @@ package org.jetbrains.jet.plugin.intentions;
import com.intellij.codeInsight.editorActions.JoinLinesHandler; import com.intellij.codeInsight.editorActions.JoinLinesHandler;
import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInsight.intention.IntentionAction;
import com.intellij.openapi.editor.actionSystem.EditorActionHandler; import com.intellij.openapi.editor.actionSystem.EditorActionHandler;
import com.intellij.openapi.projectRoots.JavaSdk;
import com.intellij.openapi.projectRoots.Sdk;
import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.FileUtil;
import com.intellij.testFramework.LightCodeInsightTestCase; import com.intellij.testFramework.LightCodeInsightTestCase;
import com.intellij.util.PathUtil; import com.intellij.util.PathUtil;
import org.apache.commons.lang.SystemUtils;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.InTextDirectivesUtils; import org.jetbrains.jet.InTextDirectivesUtils;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
@@ -29,6 +32,7 @@ import org.jetbrains.jet.plugin.DirectiveBasedActionUtils;
import org.jetbrains.jet.plugin.intentions.branchedTransformations.intentions.*; import org.jetbrains.jet.plugin.intentions.branchedTransformations.intentions.*;
import org.jetbrains.jet.plugin.intentions.declarations.ConvertMemberToExtension; import org.jetbrains.jet.plugin.intentions.declarations.ConvertMemberToExtension;
import org.jetbrains.jet.plugin.intentions.declarations.SplitPropertyDeclarationIntention; import org.jetbrains.jet.plugin.intentions.declarations.SplitPropertyDeclarationIntention;
import org.jetbrains.jet.testing.ConfigLibraryUtil;
import org.junit.Assert; import org.junit.Assert;
import java.io.File; import java.io.File;
@@ -218,9 +222,26 @@ public abstract class AbstractCodeTransformationTest extends LightCodeInsightTes
private void doTestIntention(@NotNull String path, @NotNull IntentionAction intentionAction) throws Exception { private void doTestIntention(@NotNull String path, @NotNull IntentionAction intentionAction) throws Exception {
configureByFile(path); configureByFile(path);
DirectiveBasedActionUtils.checkForUnexpectedErrors((JetFile) getFile());
String fileText = FileUtil.loadFile(new File(path), true); String fileText = FileUtil.loadFile(new File(path), true);
boolean isWithRuntime = InTextDirectivesUtils.findStringWithPrefixes(fileText, "// WITH_RUNTIME") != null;
try {
if (isWithRuntime) {
ConfigLibraryUtil.configureKotlinRuntime(getModule(), getFullJavaJDK());
}
DirectiveBasedActionUtils.checkForUnexpectedErrors((JetFile) getFile());
doTestFor(path, intentionAction, fileText);
}
finally {
if (isWithRuntime) {
ConfigLibraryUtil.unConfigureKotlinRuntime(getModule(), getProjectJDK());
}
}
}
private void doTestFor(String path, IntentionAction intentionAction, String fileText) {
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");
@@ -246,7 +267,8 @@ public abstract class AbstractCodeTransformationTest extends LightCodeInsightTes
} }
} }
assertNull("Expected test to fail.", shouldFailString); assertNull("Expected test to fail.", shouldFailString);
} catch (IntentionTestException e) { }
catch (IntentionTestException e) {
assertEquals("Failure message mismatch.", shouldFailString, e.getMessage()); assertEquals("Failure message mismatch.", shouldFailString, e.getMessage());
} }
} }
@@ -262,4 +284,8 @@ public abstract class AbstractCodeTransformationTest extends LightCodeInsightTes
protected String getTestDataPath() { protected String getTestDataPath() {
return ""; return "";
} }
protected static Sdk getFullJavaJDK() {
return JavaSdk.getInstance().createJdk("JDK", SystemUtils.getJavaHome().getAbsolutePath());
}
} }