diff --git a/compiler/tests/org/jetbrains/jet/JetLiteFixture.java b/compiler/tests/org/jetbrains/jet/JetLiteFixture.java index f763b419750..5c65a5f4c83 100644 --- a/compiler/tests/org/jetbrains/jet/JetLiteFixture.java +++ b/compiler/tests/org/jetbrains/jet/JetLiteFixture.java @@ -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 diff --git a/compiler/tests/org/jetbrains/jet/JetTestUtils.java b/compiler/tests/org/jetbrains/jet/JetTestUtils.java index 20edf54bee1..977b914fb4d 100644 --- a/compiler/tests/org/jetbrains/jet/JetTestUtils.java +++ b/compiler/tests/org/jetbrains/jet/JetTestUtils.java @@ -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 create(String fileName, String text); } diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTest.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTest.java index 7ffd9f1dc23..1cf8e9bbc76 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTest.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTest.java @@ -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 testFileFiles = JetTestUtils.createTestFiles(file.getName(), expectedText, new JetTestUtils.TestFileFactory() { @Override diff --git a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java index 9127ce36391..27b9f899e49 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java +++ b/compiler/tests/org/jetbrains/jet/codegen/CodegenTestCase.java @@ -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 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; }