Support for checking loaded descriptors agains an expected txt file

This commit is contained in:
Andrey Breslav
2012-07-11 19:51:56 +04:00
parent 7cf9eeee65
commit 44d92d8eb3
411 changed files with 5050 additions and 8 deletions
@@ -37,7 +37,8 @@ import java.util.List;
*/
public abstract class AbstractDiagnosticsTestWithEagerResolve extends AbstractJetDiagnosticsTest {
protected void analyzeAndCheck(String expectedText, List<TestFile> testFiles) {
@Override
protected void analyzeAndCheck(File testDataFile, String expectedText, List<TestFile> testFiles) {
List<JetFile> jetFiles = getJetFiles(testFiles);
BindingContext bindingContext = AnalyzerFacadeForJVM.analyzeFilesWithJavaIntegration(
@@ -86,10 +86,10 @@ public abstract class AbstractJetDiagnosticsTest extends JetLiteFixture {
getEnvironment().addToClasspath(javaFilesDir);
}
analyzeAndCheck(expectedText, testFiles);
analyzeAndCheck(file, expectedText, testFiles);
}
protected abstract void analyzeAndCheck(String expectedText, List<TestFile> files);
protected abstract void analyzeAndCheck(File testDataFile, String expectedText, List<TestFile> files);
protected static List<JetFile> getJetFiles(List<TestFile> testFiles) {
List<JetFile> jetFiles = Lists.newArrayList();
@@ -16,15 +16,18 @@
package org.jetbrains.jet.lang.resolve.lazy;
import com.google.common.base.Predicates;
import com.google.common.base.Predicate;
import com.intellij.openapi.util.io.FileUtil;
import junit.framework.TestCase;
import org.jetbrains.jet.ConfigurationKind;
import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.checkers.AbstractJetDiagnosticsTest;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.jvm.compiler.NamespaceComparator;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.test.generator.SimpleTestClassModel;
import org.jetbrains.jet.test.generator.TestGenerator;
@@ -37,18 +40,31 @@ import java.util.List;
* @author abreslav
*/
public abstract class AbstractLazyResolveDiagnosticsTest extends AbstractJetDiagnosticsTest {
private static final File TEST_DATA_DIR = new File("compiler/testData/diagnostics/tests");
@Override
protected JetCoreEnvironment createEnvironment() {
return createEnvironmentWithMockJdk(ConfigurationKind.ALL);
return createEnvironmentWithMockJdk(ConfigurationKind.JDK_AND_ANNOTATIONS);
}
@Override
protected void analyzeAndCheck(String expectedText, List<TestFile> files) {
protected void analyzeAndCheck(File testDataFile, String expectedText, List<TestFile> files) {
List<JetFile> jetFiles = getJetFiles(files);
ModuleDescriptor lazyModule = LazyResolveTestUtil.resolveLazily(jetFiles, getEnvironment());
ModuleDescriptor eagerModule = LazyResolveTestUtil.resolveEagerly(jetFiles, getEnvironment());
NamespaceComparator.assertNamespacesEqual(eagerModule.getRootNamespace(), lazyModule.getRootNamespace(), false, Predicates.<NamespaceDescriptor>alwaysTrue());
String path = JetTestUtils.getFilePath(new File(FileUtil.getRelativePath(TEST_DATA_DIR, testDataFile)));
String txtFileRelativePath = path.replaceAll("\\.kt$|\\.ktscript", ".txt");
File txtFile = new File("compiler/testData/lazyResolve/diagnostics/" + txtFileRelativePath);
NamespaceComparator.compareNamespaces(eagerModule.getRootNamespace(), lazyModule.getRootNamespace(), false,
new Predicate<NamespaceDescriptor>() {
@Override
public boolean apply(NamespaceDescriptor descriptor) {
return !Name.identifier("jet").equals(descriptor.getName());
}
},
txtFile);
}
public static void main(String[] args) throws IOException {
@@ -59,7 +75,7 @@ public abstract class AbstractLazyResolveDiagnosticsTest extends AbstractJetDiag
"LazyResolveDiagnosticsTestGenerated",
thisClass,
Arrays.asList(
new SimpleTestClassModel(new File("compiler/testData/diagnostics/tests"), true, "kt", "doTest"),
new SimpleTestClassModel(TEST_DATA_DIR, true, "kt", "doTest"),
new SimpleTestClassModel(new File("compiler/testData/diagnostics/tests/script"), true, "ktscript", "doTest")
),
thisClass