Obsolete KotlinLiteFixture, move utilities to CheckerTestUtilTest

This commit is contained in:
Alexander Udalov
2016-02-25 20:48:35 +03:00
parent 647e188a08
commit 12b6a4ede4
9 changed files with 64 additions and 81 deletions
@@ -39,6 +39,7 @@ import org.jetbrains.kotlin.psi.KtDeclaration;
import org.jetbrains.kotlin.psi.KtFile;
import org.jetbrains.kotlin.resolve.BindingContext;
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.types.Flexibility;
import org.junit.Assert;
@@ -135,10 +136,10 @@ public abstract class BaseDiagnosticsTest
if (includeExtras) {
if (declareFlexibleType) {
jetFiles.add(createPsiFile(null, "EXPLICIT_FLEXIBLE_TYPES.kt", EXPLICIT_FLEXIBLE_TYPES_DECLARATIONS));
jetFiles.add(KotlinTestUtils.createFile("EXPLICIT_FLEXIBLE_TYPES.kt", EXPLICIT_FLEXIBLE_TYPES_DECLARATIONS, getProject()));
}
if (declareCheckType) {
jetFiles.add(createPsiFile(null, "CHECK_TYPE.kt", CHECK_TYPE_DECLARATIONS));
jetFiles.add(KotlinTestUtils.createFile("CHECK_TYPE.kt", CHECK_TYPE_DECLARATIONS, getProject()));
}
}
@@ -270,7 +271,7 @@ public abstract class BaseDiagnosticsTest
this.expectedText = textWithMarkers;
String textWithExtras = addExtras(expectedText);
this.clearText = CheckerTestUtil.parseDiagnosedRanges(textWithExtras, diagnosedRanges);
this.jetFile = createCheckAndReturnPsiFile(null, fileName, clearText);
this.jetFile = CheckerTestUtilTest.createCheckAndReturnPsiFile(fileName, clearText, getProject());
for (CheckerTestUtil.DiagnosedRange diagnosedRange : diagnosedRanges) {
diagnosedRange.setFile(jetFile);
}
@@ -17,8 +17,13 @@
package org.jetbrains.kotlin.checkers;
import com.google.common.collect.Lists;
import com.intellij.openapi.fileEditor.impl.LoadTextUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor;
import com.intellij.psi.PsiFile;
import com.intellij.testFramework.LightVirtualFile;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.checkers.CheckerTestUtil.DiagnosedRange;
@@ -28,16 +33,16 @@ import org.jetbrains.kotlin.psi.KtFile;
import org.jetbrains.kotlin.resolve.BindingContext;
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil;
import org.jetbrains.kotlin.test.ConfigurationKind;
import org.jetbrains.kotlin.test.KotlinLiteFixture;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.KotlinTestWithEnvironment;
import java.io.File;
import java.util.Collections;
import java.util.List;
public class CheckerTestUtilTest extends KotlinLiteFixture {
@Override
protected String getTestDataPath() {
public class CheckerTestUtilTest extends KotlinTestWithEnvironment {
@NotNull
private static String getTestDataPath() {
return KotlinTestUtils.getTestDataPathBase() + "/diagnostics/checkerTestUtil";
}
@@ -48,7 +53,28 @@ public class CheckerTestUtilTest extends KotlinLiteFixture {
protected void doTest(TheTest theTest) throws Exception {
String text = KotlinTestUtils.doLoadFile(getTestDataPath(), "test.kt");
theTest.test(createCheckAndReturnPsiFile("test", null, text));
theTest.test(createCheckAndReturnPsiFile("test.kt", text, getProject()));
}
@NotNull
public static KtFile createCheckAndReturnPsiFile(@NotNull String fileName, @NotNull String text, @NotNull Project project) {
KtFile myFile = KotlinTestUtils.createFile(fileName, text, project);
ensureParsed(myFile);
assertEquals("light virtual file text mismatch", text, ((LightVirtualFile) myFile.getVirtualFile()).getContent().toString());
assertEquals("virtual file text mismatch", text, LoadTextUtil.loadText(myFile.getVirtualFile()));
//noinspection ConstantConditions
assertEquals("doc text mismatch", text, myFile.getViewProvider().getDocument().getText());
assertEquals("psi text mismatch", text, myFile.getText());
return myFile;
}
private static void ensureParsed(PsiFile file) {
file.accept(new PsiElementVisitor() {
@Override
public void visitElement(@NotNull PsiElement element) {
element.acceptChildren(this);
}
});
}
public void testEquals() throws Exception {
@@ -25,8 +25,8 @@ import org.jetbrains.kotlin.config.CompilerConfiguration;
import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.resolve.ImportPath;
import org.jetbrains.kotlin.test.KotlinLiteFixture;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.KotlinTestWithEnvironment;
import org.junit.Assert;
import java.io.File;
@@ -35,11 +35,12 @@ import java.util.Collection;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class KtPsiUtilTest extends KotlinLiteFixture {
public class KtPsiUtilTest extends KotlinTestWithEnvironment {
@NotNull
private KtFile loadPsiFile(@NotNull String name) {
try {
return createPsiFile(name, null, KotlinTestUtils.doLoadFile(getTestDataPath(), name));
String text = KotlinTestUtils.doLoadFile(KotlinTestUtils.getTestDataPathBase(), name);
return KotlinTestUtils.createFile(name + ".kt", text, getProject());
}
catch (IOException e) {
throw new RuntimeException(e);
@@ -82,7 +83,7 @@ public class KtPsiUtilTest extends KotlinLiteFixture {
}
public void testIsLocalClass() throws IOException {
String text = FileUtil.loadFile(new File(getTestDataPath() + "/psiUtil/isLocalClass.kt"), true);
String text = FileUtil.loadFile(new File(KotlinTestUtils.getTestDataPathBase() + "/psiUtil/isLocalClass.kt"), true);
KtClass aClass = KtPsiFactoryKt.KtPsiFactory(getProject()).createClass(text);
@SuppressWarnings("unchecked")
@@ -91,10 +92,10 @@ public class KtPsiUtilTest extends KotlinLiteFixture {
for (KtClassOrObject classOrObject : classOrObjects) {
String classOrObjectName = classOrObject.getName();
if (classOrObjectName != null && classOrObjectName.contains("Local")) {
assertTrue("JetPsiUtil.isLocalClass should return true for " + classOrObjectName, KtPsiUtil.isLocal(classOrObject));
assertTrue("KtPsiUtil.isLocal should return true for " + classOrObjectName, KtPsiUtil.isLocal(classOrObject));
}
else {
assertFalse("JetPsiUtil.isLocalClass should return false for " + classOrObjectName, KtPsiUtil.isLocal(classOrObject));
assertFalse("KtPsiUtil.isLocal should return false for " + classOrObjectName, KtPsiUtil.isLocal(classOrObject));
}
}
}
@@ -17,21 +17,21 @@
package org.jetbrains.kotlin.resolve;
import com.intellij.openapi.project.Project;
import org.jetbrains.kotlin.checkers.CheckerTestUtilTest;
import org.jetbrains.kotlin.psi.KtFile;
public abstract class AbstractResolveTest extends ExtensibleResolveTestCase {
@Override
protected ExpectedResolveData getExpectedResolveData() {
Project project = getProject();
final Project project = getProject();
return new ExpectedResolveData(
ExpectedResolveDataUtil.prepareDefaultNameToDescriptors(project, getEnvironment()),
ExpectedResolveDataUtil.prepareDefaultNameToDeclaration(project, getEnvironment())
) {
@Override
protected KtFile createJetFile(String fileName, String text) {
return createCheckAndReturnPsiFile(fileName, null, text);
protected KtFile createKtFile(String fileName, String text) {
return CheckerTestUtilTest.createCheckAndReturnPsiFile(fileName, text, project);
}
};
}
@@ -25,7 +25,6 @@ import com.intellij.psi.util.PsiTreeUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.analyzer.AnalysisResult;
import org.jetbrains.kotlin.builtins.KotlinBuiltIns;
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
import org.jetbrains.kotlin.descriptors.*;
import org.jetbrains.kotlin.diagnostics.Diagnostic;
@@ -118,21 +117,21 @@ public abstract class ExpectedResolveData {
text = text.substring(0, start) + text.substring(matcher.end());
}
KtFile jetFile = createJetFile(fileName, text);
KtFile ktFile = createKtFile(fileName, text);
for (Map.Entry<Integer, String> entry : intPositionToType.entrySet()) {
positionToType.put(new Position(jetFile, entry.getKey()), entry.getValue());
positionToType.put(new Position(ktFile, entry.getKey()), entry.getValue());
}
for (Map.Entry<String, Integer> entry : declarationToIntPosition.entrySet()) {
declarationToPosition.put(entry.getKey(), new Position(jetFile, entry.getValue()));
declarationToPosition.put(entry.getKey(), new Position(ktFile, entry.getValue()));
}
for (Map.Entry<Integer, String> entry : intPositionToReference.entrySet()) {
positionToReference.put(new Position(jetFile, entry.getKey()), entry.getValue());
positionToReference.put(new Position(ktFile, entry.getKey()), entry.getValue());
}
return jetFile;
return ktFile;
}
protected abstract KtFile createJetFile(String fileName, String text);
protected abstract KtFile createKtFile(String fileName, String text);
protected static BindingContext analyze(List<KtFile> files, KotlinCoreEnvironment environment) {
if (files.isEmpty()) {
@@ -26,16 +26,15 @@ import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemBuilderImpl
import org.jetbrains.kotlin.resolve.calls.inference.constraintPosition.ConstraintPositionKind.SPECIAL
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil
import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinLiteFixture
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.KotlinTestWithEnvironment
import org.jetbrains.kotlin.tests.di.createContainerForTests
import org.jetbrains.kotlin.types.ErrorUtils
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.Variance
import java.io.File
abstract class AbstractConstraintSystemTest() : KotlinLiteFixture() {
abstract class AbstractConstraintSystemTest : KotlinTestWithEnvironment() {
private var _typeResolver: TypeResolver? = null
private val typeResolver: TypeResolver
get() = _typeResolver!!
@@ -61,14 +60,13 @@ abstract class AbstractConstraintSystemTest() : KotlinLiteFixture() {
super.tearDown()
}
override fun getTestDataPath(): String {
return super.getTestDataPath() + "/constraintSystem/"
}
private val testDataPath: String
get() = KotlinTestUtils.getTestDataPathBase() + "/constraintSystem/"
private fun analyzeDeclarations(): ConstraintSystemTestData {
val fileName = "declarations.kt"
val psiFile = createPsiFile(null, fileName, KotlinTestUtils.doLoadFile(testDataPath, fileName))!!
val psiFile = KotlinTestUtils.createFile(fileName, KotlinTestUtils.doLoadFile(testDataPath, fileName), project)
val bindingContext = JvmResolveUtil.analyzeOneFileWithJavaIntegrationAndCheckForErrors(psiFile).bindingContext
return ConstraintSystemTestData(bindingContext, project, typeResolver)
}
@@ -25,8 +25,8 @@ import org.jetbrains.kotlin.resolve.calls.inference.createCapturedType
import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil
import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinLiteFixture
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.KotlinTestWithEnvironment
import org.jetbrains.kotlin.types.TypeProjection
import org.jetbrains.kotlin.types.TypeProjectionImpl
import org.jetbrains.kotlin.types.TypeSubstitutor
@@ -36,9 +36,9 @@ import org.jetbrains.kotlin.types.typesApproximation.approximateCapturedTypesIfN
import java.io.File
import java.util.*
class CapturedTypeApproximationTest() : KotlinLiteFixture() {
override fun getTestDataPath() = "compiler/testData/capturedTypeApproximation/"
class CapturedTypeApproximationTest : KotlinTestWithEnvironment() {
private val testDataPath: String
get() = KotlinTestUtils.getTestDataPathBase() + "/capturedTypeApproximation/"
override fun createEnvironment(): KotlinCoreEnvironment = createEnvironmentWithMockJdk(ConfigurationKind.JDK_ONLY)
@@ -16,46 +16,5 @@
package org.jetbrains.kotlin.test;
import com.intellij.openapi.fileEditor.impl.LoadTextUtil;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor;
import com.intellij.psi.PsiFile;
import com.intellij.testFramework.LightVirtualFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.psi.KtFile;
import org.junit.Assert;
public abstract class KotlinLiteFixture extends KotlinTestWithEnvironment {
protected String getTestDataPath() {
return KotlinTestUtils.getTestDataPathBase();
}
protected KtFile createPsiFile(@Nullable String testName, @Nullable String fileName, String text) {
if (fileName == null) {
Assert.assertNotNull(testName);
fileName = testName + ".kt";
}
return KotlinTestUtils.createFile(fileName, text, getProject());
}
private static void ensureParsed(PsiFile file) {
file.accept(new PsiElementVisitor() {
@Override
public void visitElement(@NotNull PsiElement element) {
element.acceptChildren(this);
}
});
}
protected KtFile createCheckAndReturnPsiFile(String testName, String fileName, String text) {
KtFile myFile = createPsiFile(testName, fileName, text);
ensureParsed(myFile);
assertEquals("light virtual file text mismatch", text, ((LightVirtualFile) myFile.getVirtualFile()).getContent().toString());
assertEquals("virtual file text mismatch", text, LoadTextUtil.loadText(myFile.getVirtualFile()));
//noinspection ConstantConditions
assertEquals("doc text mismatch", text, myFile.getViewProvider().getDocument().getText());
assertEquals("psi text mismatch", text, myFile.getText());
return myFile;
}
}
@@ -35,8 +35,8 @@ import org.jetbrains.kotlin.resolve.BindingContext;
import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm;
import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil;
import org.jetbrains.kotlin.test.ConfigurationKind;
import org.jetbrains.kotlin.test.KotlinLiteFixture;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.KotlinTestWithEnvironment;
import java.io.File;
import java.lang.reflect.Field;
@@ -44,7 +44,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
public abstract class AbstractDiagnosticMessageTest extends KotlinLiteFixture {
public abstract class AbstractDiagnosticMessageTest extends KotlinTestWithEnvironment {
private static final String DIAGNOSTICS_NUMBER_DIRECTIVE = "DIAGNOSTICS_NUMBER";
private static final String DIAGNOSTICS_DIRECTIVE = "DIAGNOSTICS";
private static final String MESSAGE_TYPE_DIRECTIVE = "MESSAGE_TYPE";
@@ -68,7 +68,6 @@ public abstract class AbstractDiagnosticMessageTest extends KotlinLiteFixture {
}
@NotNull
@Override
protected String getTestDataPath() {
return PluginTestCaseBase.getTestDataPathBase() + "/diagnosticMessage/";
}
@@ -88,7 +87,7 @@ public abstract class AbstractDiagnosticMessageTest extends KotlinLiteFixture {
final Set<DiagnosticFactory<?>> diagnosticFactories = getDiagnosticFactories(directives);
MessageType messageType = getMessageTypeDirective(directives);
KtFile psiFile = createPsiFile(null, fileName, KotlinTestUtils.doLoadFile(getTestDataPath(), fileName));
KtFile psiFile = KotlinTestUtils.createFile(fileName, KotlinTestUtils.doLoadFile(getTestDataPath(), fileName), getProject());
AnalysisResult analysisResult = analyze(psiFile);
BindingContext bindingContext = analysisResult.getBindingContext();