break CodegenTestCase : JetLiteFixture dependency

This is important because test base classes like JetLiteFixture has
a lot of unused code/state that hardens reading/debugging.
This commit is contained in:
Stepan Koltsov
2012-05-23 02:52:28 +04:00
parent a81e40fae2
commit 5eb3a86c4d
4 changed files with 61 additions and 33 deletions
@@ -18,14 +18,9 @@ package org.jetbrains.jet;
import com.intellij.openapi.fileEditor.impl.LoadTextUtil;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.CharsetToolkit;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiElementVisitor;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileFactory;
import com.intellij.psi.impl.PsiFileFactoryImpl;
import com.intellij.testFramework.LightVirtualFile;
import com.intellij.testFramework.TestDataFile;
import com.intellij.testFramework.UsefulTestCase;
@@ -35,10 +30,8 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode;
import org.jetbrains.jet.plugin.JetLanguage;
import org.junit.Assert;
import java.io.File;
import java.io.IOException;
/**
@@ -100,17 +93,7 @@ public abstract class JetLiteFixture extends UsefulTestCase {
}
protected String loadFile(@NonNls @TestDataFile String name) throws IOException {
return doLoadFile(myFullDataPath, name);
}
protected static String doLoadFile(String myFullDataPath, String name) throws IOException {
String fullName = myFullDataPath + File.separatorChar + name;
return doLoadFile(new File(fullName));
}
protected static String doLoadFile(@NotNull File file) throws IOException {
String text = FileUtil.loadFile(file, CharsetToolkit.UTF8).trim();
return StringUtil.convertLineSeparators(text);
return JetTestUtils.doLoadFile(myFullDataPath, name);
}
protected JetFile createPsiFile(@Nullable String testName, @Nullable String fileName, String text) {
@@ -118,7 +101,7 @@ public abstract class JetLiteFixture extends UsefulTestCase {
Assert.assertNotNull(testName);
fileName = testName + ".jet";
}
return (JetFile) createFile(fileName, text);
return (JetFile) JetTestUtils.createFile(fileName, text, myEnvironment.getProject());
}
protected JetFile loadPsiFile(String name) {
@@ -129,12 +112,6 @@ public abstract class JetLiteFixture extends UsefulTestCase {
}
}
protected PsiFile createFile(@NonNls String name, String text) {
LightVirtualFile virtualFile = new LightVirtualFile(name, JetLanguage.INSTANCE, text);
virtualFile.setCharset(CharsetToolkit.UTF8_CHARSET);
return ((PsiFileFactoryImpl) PsiFileFactory.getInstance(myEnvironment.getProject())).trySetupPsiForFile(virtualFile, JetLanguage.INSTANCE, true, false);
}
protected static void ensureParsed(PsiFile file) {
file.accept(new PsiElementVisitor() {
@Override
@@ -19,9 +19,17 @@ package org.jetbrains.jet;
import com.google.common.collect.Lists;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.ShutDownTracker;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.vfs.CharsetToolkit;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileFactory;
import com.intellij.psi.impl.PsiFileFactoryImpl;
import com.intellij.testFramework.LightVirtualFile;
import junit.framework.TestCase;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
@@ -35,6 +43,7 @@ import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.BindingTrace;
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode;
import org.jetbrains.jet.plugin.JetLanguage;
import org.jetbrains.jet.util.slicedmap.ReadOnlySlice;
import org.jetbrains.jet.util.slicedmap.SlicedMap;
import org.jetbrains.jet.util.slicedmap.WritableSlice;
@@ -238,6 +247,22 @@ public class JetTestUtils {
CompileCompilerDependenciesTest.compilerDependenciesForTests(CompilerSpecialMode.REGULAR, false));
}
public static PsiFile createFile(@NonNls String name, String text, @NotNull Project project) {
LightVirtualFile virtualFile = new LightVirtualFile(name, JetLanguage.INSTANCE, text);
virtualFile.setCharset(CharsetToolkit.UTF8_CHARSET);
return ((PsiFileFactoryImpl) PsiFileFactory.getInstance(project)).trySetupPsiForFile(virtualFile, JetLanguage.INSTANCE, true, false);
}
public static String doLoadFile(String myFullDataPath, String name) throws IOException {
String fullName = myFullDataPath + File.separatorChar + name;
return doLoadFile(new File(fullName));
}
public static String doLoadFile(@NotNull File file) throws IOException {
String text = FileUtil.loadFile(file, CharsetToolkit.UTF8).trim();
return StringUtil.convertLineSeparators(text);
}
public interface TestFileFactory<F> {
F create(String fileName, String text);
}
@@ -145,7 +145,7 @@ public class JetDiagnosticsTest extends JetLiteFixture {
public void runTest() throws Exception {
javaFilesDir = new File(FileUtil.getTempDirectory(), "java-files");
String expectedText = doLoadFile(file);
String expectedText = JetTestUtils.doLoadFile(file);
List<TestFile> testFileFiles = JetTestUtils.createTestFiles(file.getName(), expectedText, new JetTestUtils.TestFileFactory<TestFile>() {
@Override
@@ -17,15 +17,18 @@
package org.jetbrains.jet.codegen;
import com.google.common.collect.Lists;
import com.intellij.testFramework.UsefulTestCase;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.JetLiteFixture;
import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.lang.cfg.pseudocode.JetControlFlowDataTraceFactory;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.psi.JetPsiUtil;
import org.jetbrains.jet.lang.resolve.AnalyzingUtils;
import org.jetbrains.jet.lang.resolve.java.AnalyzerFacadeForJVM;
import org.jetbrains.jet.lang.resolve.java.CompilerSpecialMode;
import org.jetbrains.jet.parsing.JetParsingTest;
import java.io.File;
@@ -41,10 +44,33 @@ import java.util.List;
/**
* @author yole
*/
public abstract class CodegenTestCase extends JetLiteFixture {
public abstract class CodegenTestCase extends UsefulTestCase {
// for environment and classloader
protected JetCoreEnvironment myEnvironment;
private List<File> extraClasspath = Lists.newArrayList();
protected JetFile myFile;
protected void createEnvironmentWithMockJdkAndIdeaAnnotations() {
if (myEnvironment != null) {
throw new IllegalStateException("must not set up myEnvironemnt twice");
}
myEnvironment = JetTestUtils.createEnvironmentWithMockJdkAndIdeaAnnotations(getTestRootDisposable());
}
protected void createEnvironmentWithMockJdkAndIdeaAnnotations(@NotNull CompilerSpecialMode compilerSpecialMode) {
if (myEnvironment != null) {
throw new IllegalStateException("must not set up myEnvironemnt twice");
}
myEnvironment = JetTestUtils.createEnvironmentWithMockJdkAndIdeaAnnotations(getTestRootDisposable(), compilerSpecialMode);
}
protected void createEnvironmentWithFullJdk() {
if (myEnvironment != null) {
throw new IllegalStateException("must not set up myEnvironemnt twice");
}
myEnvironment = JetTestUtils.createEnvironmentWithFullJdk(getTestRootDisposable());
}
protected void addToClasspath(@NotNull File file) {
myEnvironment.addToClasspath(file);
@@ -70,18 +96,18 @@ public abstract class CodegenTestCase extends JetLiteFixture {
@Override
protected void tearDown() throws Exception {
myFile = null;
myEnvironment = null;
super.tearDown();
}
protected void loadText(final String text) {
myFile = (JetFile) createFile("a.jet", text);
myFile = (JetFile) JetTestUtils.createFile("a.jet", text, myEnvironment.getProject());
}
@Override
protected String loadFile(final String name) {
try {
final String content = doLoadFile(JetParsingTest.getTestDataDir() + "/codegen/", name);
myFile = (JetFile) createFile(name, content);
final String content = JetTestUtils.doLoadFile(JetParsingTest.getTestDataDir() + "/codegen/", name);
myFile = (JetFile) JetTestUtils.createFile(name, content, myEnvironment.getProject());
return content;
} catch (IOException e) {
throw new RuntimeException(e);
@@ -147,7 +173,7 @@ public abstract class CodegenTestCase extends JetLiteFixture {
myEnvironment.getCompilerDependencies());
analyzeExhaust.throwIfError();
AnalyzingUtils.throwExceptionOnErrors(analyzeExhaust.getBindingContext());
GenerationState state = new GenerationState(getProject(), classBuilderFactory, analyzeExhaust, Collections.singletonList(myFile));
GenerationState state = new GenerationState(myEnvironment.getProject(), classBuilderFactory, analyzeExhaust, Collections.singletonList(myFile));
state.compileCorrectFiles(CompilationErrorHandler.THROW_EXCEPTION);
return state;
}